179 static constexpr std::size_t kDefaultRowsInChunk = 1024;
182 explicit Transaction(
183 detail::ConnectionPtr&& conn,
185 OptionalCommandControl trx_cmd_ctl = {},
186 detail::SteadyClock::time_point trx_start_time = detail::SteadyClock::now()
189 void SetName(std::string name);
209 template <
typename... Args>
210 ResultSet Execute(
const Query& query,
const Args&... args) {
211 return Execute(OptionalCommandControl{}, query, args...);
225 template <
typename... Args>
226 ResultSet Execute(OptionalCommandControl statement_cmd_ctl,
const Query& query,
const Args&... args) {
227 detail::StaticQueryParameters<
sizeof...(args)> params;
228 params.Write(GetConnectionUserTypes(), args...);
229 return DoExecute(query, detail::QueryParameters{params}, statement_cmd_ctl);
243 return Execute(OptionalCommandControl{}
, query
, store
);
273 template <
typename Container>
290 template <
typename Container>
301 template <
typename Container>
302 void ExecuteBulk(
const Query& query,
const Container& args, std::size_t chunk_rows = kDefaultRowsInChunk);
312 template <
typename Container>
314 OptionalCommandControl statement_cmd_ctl,
316 const Container& args,
317 std::size_t chunk_rows = kDefaultRowsInChunk
334 template <
typename Container>
335 void ExecuteDecomposeBulk(
const Query& query,
const Container& args, std::size_t chunk_rows = kDefaultRowsInChunk);
351 template <
typename Container>
353 OptionalCommandControl statement_cmd_ctl,
355 const Container& args,
356 std::size_t chunk_rows = kDefaultRowsInChunk
364 template <
typename... Args>
366 return MakePortal(OptionalCommandControl{}, query, args...);
374 template <
typename... Args>
375 Portal MakePortal(OptionalCommandControl statement_cmd_ctl,
const Query& query,
const Args&... args) {
376 detail::StaticQueryParameters<
sizeof...(args)> params;
377 params.Write(GetConnectionUserTypes(), args...);
378 return MakePortal(PortalName{}, query, detail::QueryParameters{params}, statement_cmd_ctl);
400 void SetParameter(
const std::string& param_name,
const std::string& value);
416 TimeoutDuration GetConnStatementTimeoutDebug()
const;
421 const detail::QueryParameters& params,
422 OptionalCommandControl statement_cmd_ctl
427 const detail::QueryParameters& params,
428 OptionalCommandControl statement_cmd_ctl
431 const UserTypes& GetConnectionUserTypes()
const;
434 detail::ConnectionPtr conn_;
486 OptionalCommandControl statement_cmd_ctl,
488 const Container& args,
489 std::size_t chunk_rows
491 io::SplitContainerByColumns(args, chunk_rows).Perform([&query, &statement_cmd_ctl,
this](
const auto&... args) {
492 this->Execute(statement_cmd_ctl, query, args...);