158 static constexpr std::size_t kDefaultRowsInChunk = 1024;
161 explicit Transaction(
162 detail::ConnectionPtr&& conn,
164 OptionalCommandControl trx_cmd_ctl = {},
165 detail::SteadyClock::time_point trx_start_time = detail::SteadyClock::now()
168 void SetName(std::string name);
188 template <
typename... Args>
189 ResultSet Execute(
const Query& query,
const Args&... args) {
190 return Execute(OptionalCommandControl{}, query, args...);
204 template <
typename... Args>
205 ResultSet Execute(OptionalCommandControl statement_cmd_ctl,
const Query& query,
const Args&... args) {
206 detail::StaticQueryParameters<
sizeof...(args)> params;
207 params.Write(GetConnectionUserTypes(), args...);
208 return DoExecute(query, detail::QueryParameters{params}, statement_cmd_ctl);
222 return Execute(OptionalCommandControl{}
, query
, store
);
252 template <
typename Container>
269 template <
typename Container>
280 template <
typename Container>
281 void ExecuteBulk(
const Query& query,
const Container& args, std::size_t chunk_rows = kDefaultRowsInChunk);
291 template <
typename Container>
293 OptionalCommandControl statement_cmd_ctl,
295 const Container& args,
296 std::size_t chunk_rows = kDefaultRowsInChunk
313 template <
typename Container>
314 void ExecuteDecomposeBulk(
const Query& query,
const Container& args, std::size_t chunk_rows = kDefaultRowsInChunk);
330 template <
typename Container>
332 OptionalCommandControl statement_cmd_ctl,
334 const Container& args,
335 std::size_t chunk_rows = kDefaultRowsInChunk
343 template <
typename... Args>
345 return MakePortal(OptionalCommandControl{}, query, args...);
353 template <
typename... Args>
354 Portal MakePortal(OptionalCommandControl statement_cmd_ctl,
const Query& query,
const Args&... args) {
355 detail::StaticQueryParameters<
sizeof...(args)> params;
356 params.Write(GetConnectionUserTypes(), args...);
357 return MakePortal(PortalName{}, query, detail::QueryParameters{params}, statement_cmd_ctl);
379 void SetParameter(
const std::string& param_name,
const std::string& value);
395 TimeoutDuration GetConnStatementTimeoutDebug()
const;
399 DoExecute(
const Query& query,
const detail::QueryParameters& params, OptionalCommandControl statement_cmd_ctl);
403 const detail::QueryParameters& params,
404 OptionalCommandControl statement_cmd_ctl
407 const UserTypes& GetConnectionUserTypes()
const;
410 detail::ConnectionPtr conn_;
424 return io::DecomposeContainerByColumns(args).Perform([&query, &statement_cmd_ctl,
this](
const auto&... args) {
425 return this->Execute(statement_cmd_ctl, query, args...);
459 OptionalCommandControl statement_cmd_ctl,
461 const Container& args,
462 std::size_t chunk_rows
464 io::SplitContainerByColumns(args, chunk_rows).Perform([&query, &statement_cmd_ctl,
this](
const auto&... args) {
465 this->Execute(statement_cmd_ctl, query, args...);