userver: storages::postgres::CommandControl Struct Reference
Loading...
Searching...
No Matches
storages::postgres::CommandControl Struct Reference

#include <userver/storages/postgres/options.hpp>

Detailed Description

A structure to control timeouts for PosrgreSQL queries

There are two parameters, execute and statement.

execute parameter controls the overall time the driver spends executing a query, that includes:

  • connecting to PostgreSQL server, if there are no connections available and connection pool still has space for new connections;
  • waiting for a connection to become idle if there are no idle connections and connection pool already has reached it's max size;
  • preparing a statement if the statement is run for the first time on the connection;
  • binding parameters and executing the statement;
  • waiting for the first results to arrive from the server. If the result set is big, only time to the first data packet is taken into account.

statement is rather straightforward, it's the PostgreSQL server-side parameter, and it controls the time the database backend can spend executing a single statement. It is very costly to change the statement timeout often, as it requires a roundtrip to the database to change the setting.

See also
https://www.postgresql.org/docs/12/runtime-config-client.html

execute timeout should always be greater than the statement timeout!

In case of a timeout, either back-end or overall, the client gets an exception and the driver tries to clean up the connection for further reuse.

Examples
postgresql/functional_tests/basic_chaos/postgres_service.cpp.

Definition at line 110 of file options.hpp.

Public Types

enum class  PreparedStatementsOptionOverride {
  kNoOverride ,
  kEnabled ,
  kDisabled
}
 

Public Member Functions

constexpr CommandControl (TimeoutDuration network_timeout_ms, TimeoutDuration statement_timeout_ms, PreparedStatementsOptionOverride prepared_statements_enabled=PreparedStatementsOptionOverride::kNoOverride)
 
constexpr CommandControl WithExecuteTimeout (TimeoutDuration n) const noexcept
 
constexpr CommandControl WithStatementTimeout (TimeoutDuration s) const noexcept
 
bool operator== (const CommandControl &rhs) const
 
bool operator!= (const CommandControl &rhs) const
 

Public Attributes

TimeoutDuration network_timeout_ms {}
 Overall timeout for a command being executed.
 
TimeoutDuration statement_timeout_ms {}
 PostgreSQL server-side timeout.
 
PreparedStatementsOptionOverride prepared_statements_enabled {PreparedStatementsOptionOverride::kNoOverride}
 

Member Enumeration Documentation

◆ PreparedStatementsOptionOverride

enum class storages::postgres::CommandControl::PreparedStatementsOptionOverride
strong

Definition at line 116 of file options.hpp.

Constructor & Destructor Documentation

◆ CommandControl()

constexpr storages::postgres::CommandControl::CommandControl ( TimeoutDuration  network_timeout_ms,
TimeoutDuration  statement_timeout_ms,
PreparedStatementsOptionOverride  prepared_statements_enabled = PreparedStatementsOptionOverride::kNoOverride 
)
inlineconstexpr

Definition at line 120 of file options.hpp.

Member Function Documentation

◆ operator!=()

bool storages::postgres::CommandControl::operator!= ( const CommandControl rhs) const
inline

Definition at line 138 of file options.hpp.

◆ operator==()

bool storages::postgres::CommandControl::operator== ( const CommandControl rhs) const
inline

Definition at line 133 of file options.hpp.

◆ WithExecuteTimeout()

constexpr CommandControl storages::postgres::CommandControl::WithExecuteTimeout ( TimeoutDuration  n) const
inlineconstexprnoexcept

Definition at line 129 of file options.hpp.

◆ WithStatementTimeout()

constexpr CommandControl storages::postgres::CommandControl::WithStatementTimeout ( TimeoutDuration  s) const
inlineconstexprnoexcept

Definition at line 131 of file options.hpp.

Member Data Documentation

◆ network_timeout_ms

TimeoutDuration storages::postgres::CommandControl::network_timeout_ms {}

Overall timeout for a command being executed.

Definition at line 112 of file options.hpp.

◆ prepared_statements_enabled

PreparedStatementsOptionOverride storages::postgres::CommandControl::prepared_statements_enabled {PreparedStatementsOptionOverride::kNoOverride}

Definition at line 118 of file options.hpp.

◆ statement_timeout_ms

TimeoutDuration storages::postgres::CommandControl::statement_timeout_ms {}

PostgreSQL server-side timeout.

Definition at line 114 of file options.hpp.


The documentation for this struct was generated from the following file: