157 static constexpr std::size_t kDefaultRowsInChunk = 1024;
160 explicit Transaction(
161 detail::ConnectionPtr&& conn,
163 OptionalCommandControl trx_cmd_ctl = {},
164 detail::SteadyClock::time_point trx_start_time = detail::SteadyClock::now()
167 void SetName(std::string name);
187 template <
typename... Args>
188 ResultSet Execute(
const Query& query,
const Args&... args) {
189 return Execute(OptionalCommandControl{}, query, args...);
203 template <
typename... Args>
204 ResultSet Execute(OptionalCommandControl statement_cmd_ctl,
const Query& query,
const Args&... args) {
205 detail::StaticQueryParameters<
sizeof...(args)> params;
206 params.Write(GetConnectionUserTypes(), args...);
207 return DoExecute(query, detail::QueryParameters{params}, statement_cmd_ctl);
221 return Execute(OptionalCommandControl{}
, query
, store
);
251 template <
typename Container>
268 template <
typename Container>
279 template <
typename Container>
280 void ExecuteBulk(
const Query& query,
const Container& args, std::size_t chunk_rows = kDefaultRowsInChunk);
290 template <
typename Container>
292 OptionalCommandControl statement_cmd_ctl,
294 const Container& args,
295 std::size_t chunk_rows = kDefaultRowsInChunk
312 template <
typename Container>
313 void ExecuteDecomposeBulk(
const Query& query,
const Container& args, std::size_t chunk_rows = kDefaultRowsInChunk);
329 template <
typename Container>
331 OptionalCommandControl statement_cmd_ctl,
333 const Container& args,
334 std::size_t chunk_rows = kDefaultRowsInChunk
342 template <
typename... Args>
344 return MakePortal(OptionalCommandControl{}, query, args...);
352 template <
typename... Args>
353 Portal MakePortal(OptionalCommandControl statement_cmd_ctl,
const Query& query,
const Args&... args) {
354 detail::StaticQueryParameters<
sizeof...(args)> params;
355 params.Write(GetConnectionUserTypes(), args...);
356 return MakePortal(PortalName{}, query, detail::QueryParameters{params}, statement_cmd_ctl);
378 void SetParameter(
const std::string& param_name,
const std::string& value);
394 TimeoutDuration GetConnStatementTimeoutDebug()
const;
398 DoExecute(
const Query& query,
const detail::QueryParameters& params, OptionalCommandControl statement_cmd_ctl);
402 const detail::QueryParameters& params,
403 OptionalCommandControl statement_cmd_ctl
406 const UserTypes& GetConnectionUserTypes()
const;
409 detail::ConnectionPtr conn_;
423 return io::DecomposeContainerByColumns(args).Perform([&query, &statement_cmd_ctl,
this](
const auto&... args) {
424 return this->Execute(statement_cmd_ctl, query, args...);
458 OptionalCommandControl statement_cmd_ctl,
460 const Container& args,
461 std::size_t chunk_rows
463 io::SplitContainerByColumns(args, chunk_rows).Perform([&query, &statement_cmd_ctl,
this](
const auto&... args) {
464 this->Execute(statement_cmd_ctl, query, args...);