8#include <userver/clients/dns/resolver_fwd.hpp>
9#include <userver/dynamic_config/source.hpp>
10#include <userver/engine/task/task_processor_fwd.hpp>
11#include <userver/engine/task/task_with_result.hpp>
12#include <userver/error_injection/settings_fwd.hpp>
13#include <userver/testsuite/postgres_control.hpp>
14#include <userver/testsuite/tasks.hpp>
16#include <userver/storages/postgres/cluster_types.hpp>
17#include <userver/storages/postgres/database.hpp>
18#include <userver/storages/postgres/detail/non_transaction.hpp>
19#include <userver/storages/postgres/notify.hpp>
20#include <userver/storages/postgres/options.hpp>
21#include <userver/storages/postgres/query.hpp>
22#include <userver/storages/postgres/query_queue.hpp>
23#include <userver/storages/postgres/statistics.hpp>
24#include <userver/storages/postgres/transaction.hpp>
62USERVER_NAMESPACE_BEGIN
73using ClusterImplPtr = std::unique_ptr<ClusterImpl>;
111 engine::TaskProcessor& bg_task_processor,
113 DefaultCommandControls&& default_cmd_ctls,
116 testsuite::TestsuiteTasks& testsuite_tasks,
117 dynamic_config::Source config_source,
118 USERVER_NAMESPACE::
utils::statistics::MetricsStoragePtr metrics,
190 template <
typename... Args>
191 ResultSet Execute(ClusterHostTypeFlags,
const Query& query,
const Args&... args);
202 template <
typename... Args>
203 ResultSet Execute(ClusterHostTypeFlags, OptionalCommandControl,
const Query& query,
const Args&... args);
224 ClusterHostTypeFlags flags,
225 OptionalCommandControl statement_cmd_ctl,
246 template <
typename Container>
264 template <
typename Container>
266 ClusterHostTypeFlags flags,
267 OptionalCommandControl statement_cmd_ctl,
269 const Container& args
276 NotifyScope
Listen(std::string_view channel, OptionalCommandControl = {});
284 void SetHandlersCommandControl(CommandControlByHandlerMap handlers_command_control);
286 void SetQueriesCommandControl(CommandControlByQueryMap queries_command_control);
298 void SetPoolSettings(
const PoolSettings& settings);
302 void SetStatementMetricsSettings(
const StatementMetricsSettings& settings);
304 void SetDsnList(
const DsnList&);
307 detail::NonTransaction Start(ClusterHostTypeFlags, OptionalCommandControl);
309 OptionalCommandControl GetQueryCmdCtl(std::string_view query_name)
const;
310 OptionalCommandControl GetHandlersCmdCtl(OptionalCommandControl cmd_ctl)
const;
312 detail::ClusterImplPtr pimpl_;
315template <
typename... Args>
317 return Execute(flags, OptionalCommandControl{}, query, args...);
320template <
typename... Args>
322 ClusterHostTypeFlags flags,
323 OptionalCommandControl statement_cmd_ctl,
330 statement_cmd_ctl = GetHandlersCmdCtl(statement_cmd_ctl);
331 auto ntrx = Start(flags, statement_cmd_ctl);
332 return ntrx.Execute(statement_cmd_ctl, query, args...);
335template <
typename Container>
337 return ExecuteDecompose(flags, OptionalCommandControl{}, query, args);
340template <
typename Container>
342 ClusterHostTypeFlags flags,
343 OptionalCommandControl statement_cmd_ctl,
345 const Container& args
350 statement_cmd_ctl = GetHandlersCmdCtl(statement_cmd_ctl);
351 auto ntrx = Start(flags, statement_cmd_ctl);
353 return io::DecomposeContainerByColumns(args).Perform([&ntrx, &statement_cmd_ctl, &query](
const auto&... args) {
354 return ntrx.Execute(statement_cmd_ctl, query, args...);