OZO 「お象」
Boost.Asio and libpq based asynchronous PostgreSQL unofficial header-only C++17 client library.
Functions

Description

Transaction related functions.

Functions

template<typename ConnectionProvider , typename TimeConstraint , typename CompletionToken >
decltype(auto) ozo::begin (ConnectionProvider &&provider, TimeConstraint time_constraint, CompletionToken &&token)
 Start new transaction. More...
 
template<typename ConnectionProvider , typename CompletionToken >
decltype(auto) ozo::begin (ConnectionProvider &&provider, CompletionToken &&token)
 Start new transaction. More...
 
template<typename T , typename Options , typename TimeConstraint , typename CompletionToken >
decltype(auto) ozo::commit (transaction< T, Options > &&transaction, TimeConstraint t, CompletionToken &&token)
 Commits a transaction. More...
 
template<typename ConnectionProvider , typename CompletionToken >
decltype(auto) ozo::commit (ConnectionProvider &&provider, CompletionToken &&token)
 Commits a transaction. More...
 
template<typename T , typename Options , typename TimeConstraint , typename CompletionToken >
decltype(auto) ozo::rollback (transaction< T, Options > &&transaction, TimeConstraint t, CompletionToken &&token)
 Rollback a transaction. More...
 
template<typename ConnectionProvider , typename CompletionToken >
decltype(auto) ozo::rollback (ConnectionProvider &&provider, CompletionToken &&token)
 Commits a transaction. More...
 
template<typename... Ts>
constexpr auto ozo::get_transaction_isolation_level (const transaction< Ts... > &transaction)
 Retrieve's a transactions isolation level. More...
 
template<typename... Ts>
constexpr auto ozo::get_transaction_mode (const transaction< Ts... > &transaction)
 Retrieve's a transactions transaction mode. More...
 
template<typename... Ts>
constexpr auto ozo::get_transaction_deferrability (const transaction< Ts... > &transaction)
 Retrieve's a transactions deferrability. More...
 

Function Documentation

◆ begin() [1/2]

template<typename ConnectionProvider , typename CompletionToken >
decltype(auto) ozo::begin ( ConnectionProvider &&  provider,
CompletionToken &&  token 
)

Start new transaction.

This function is time constrain free shortcut to ozo::begin() function. Its call is equal to ozo::begin(provider, ozo::none, out, token) call.

Note
The function does not particitate in ADL since could be implemented via functional object.
Parameters
providerConnectionProvider to get connection from.
token— operation CompletionToken.
Returns
deduced from CompletionToken.

References ozo::get_operation_initiator(), and ozo::none.

◆ begin() [2/2]

template<typename ConnectionProvider , typename TimeConstraint , typename CompletionToken >
decltype(auto) ozo::begin ( ConnectionProvider &&  provider,
TimeConstraint  time_constraint,
CompletionToken &&  token 
)

Start new transaction.

The function starts new transaction on a database. The function can be called as any of Boost.Asio asynchronous function with CompletionToken. The operation would be cancelled if time constrain is reached while performing.

Note
The function does not particitate in ADL since could be implemented via functional object.
Parameters
providerConnectionProvider to get connection from.
time_constraint— operation TimeConstraint; this time constrain includes time for getting connection from provider.
token— operation CompletionToken.
Returns
deduced from CompletionToken.
Transaction options

Transaction may be started with specialized options like isolation level, mode and so on. To specify options additional call of with_transaction_options should be used.

ozo::begin.with_transaction_options(ozo::make_options(Options...));

there Options are available items of ozo::transaction_options.

Example

For full example see examples/transaction.cpp.

Beginning a transaction:

// To start a transaction, you use the following statement:
auto transaction = ozo::begin(std::move(conn), yield[ec]);

◆ commit() [1/2]

template<typename ConnectionProvider , typename CompletionToken >
decltype(auto) ozo::commit ( ConnectionProvider &&  provider,
CompletionToken &&  token 
)

Commits a transaction.

This function is time constrain free shortcut to ozo::commit() function. Its call is equal to ozo::commit(std::move(transaction), ozo::none, token) call.

Note
The function does not particitate in ADL since could be implemented via functional object.
Parameters
transaction— open transaction to commit.
token— operation CompletionToken.
Returns
deduced from the CompletionToken.

References ozo::none.

◆ commit() [2/2]

template<typename T , typename Options , typename TimeConstraint , typename CompletionToken >
decltype(auto) ozo::commit ( transaction< T, Options > &&  transaction,
TimeConstraint  t,
CompletionToken &&  token 
)

Commits a transaction.

The function commits transaction on a database. The function can be called as any of Boost.Asio asynchronous function with CompletionToken. The operation would be cancelled if time constrain is reached while performing.

Note
The function does not particitate in ADL since could be implemented via functional object.
After commit the transaction object may not be used.
Parameters
transaction— open transaction to commit.
time_constraint— operation TimeConstraint.
token— operation CompletionToken.
Returns
deduced from the CompletionToken.
Example

For full example see examples/transaction.cpp.

Committing a transaction:

// To make the change become visible to other sessions (or users) you need to commit the transaction
// by using the following statement
conn = ozo::commit(std::move(transaction), yield[ec]);

◆ get_transaction_deferrability()

template<typename... Ts>
constexpr auto ozo::get_transaction_deferrability ( const transaction< Ts... > &  transaction)
constexpr

Retrieve's a transactions deferrability.

Deferrability is usually indicated using an instance of ozo::deferrable_mode, but can also be any other type with a compile-time static ::value convertible to bool. ozo::none indicates no explicit deferrability was set.

Parameters
transactiontransaction to get the deferrability from
Returns
ozo::deferrable_mode (or any bool-convertible std::integral_constant) — if the deferrability has been set
ozo::none — if no deferrability has been set

References ozo::transaction_options::deferrability, ozo::get_option(), ozo::none, and ozo::transaction< Connection, Options >::options().

◆ get_transaction_isolation_level()

template<typename... Ts>
constexpr auto ozo::get_transaction_isolation_level ( const transaction< Ts... > &  transaction)
constexpr

Retrieve's a transactions isolation level.

The isolation level can either be an instance of one of the child types of ozo::isolation_level or ozo::none if no level was explicitly set.

Parameters
transactiontransaction to get the isolation level from
Returns
sub type of ozo::isolation_level — if the transaction isolation level has been set
ozo::none — if no isolation level has been set

References ozo::get_option(), ozo::transaction_options::isolation_level, ozo::none, and ozo::transaction< Connection, Options >::options().

◆ get_transaction_mode()

template<typename... Ts>
constexpr auto ozo::get_transaction_mode ( const transaction< Ts... > &  transaction)
constexpr

Retrieve's a transactions transaction mode.

The mode can either be an instance of one of the child types of ozo::transaction_mode or ozo::none if mode was set explicitly set.

Parameters
transactiontransaction to get the transaction mode from
Returns
sub type of ozo::transaction_mode — if the transaction mode has been set
ozo::none — if no transaction mode has been specified

References ozo::get_option(), ozo::transaction_options::mode, ozo::none, and ozo::transaction< Connection, Options >::options().

◆ rollback() [1/2]

template<typename ConnectionProvider , typename CompletionToken >
decltype(auto) ozo::rollback ( ConnectionProvider &&  provider,
CompletionToken &&  token 
)

Commits a transaction.

This function is time constrain free shortcut to ozo::rollback() function. Its call is equal to ozo::rollback(std::move(transaction), ozo::none, token) call.

Note
The function does not particitate in ADL since could be implemented via functional object.
Parameters
transaction— open transaction to rollback.
token— operation CompletionToken.
Returns
deduced from the CompletionToken.

References ozo::none.

◆ rollback() [2/2]

template<typename T , typename Options , typename TimeConstraint , typename CompletionToken >
decltype(auto) ozo::rollback ( transaction< T, Options > &&  transaction,
TimeConstraint  t,
CompletionToken &&  token 
)

Rollback a transaction.

The function rollback transaction on a database. The function can be called as any of Boost.Asio asynchronous function with CompletionToken. The operation would be cancelled if time constrain is reached while performing.

Note
The function does not particitate in ADL since could be implemented via functional object.
After rollback the transaction object may not be used.
Parameters
transaction— open transaction to rollback.
time_constraint— operation TimeConstraint.
token— operation CompletionToken.
Returns
deduced from the CompletionToken.
Example

For full example see examples/transaction.cpp.

Committing a transaction:

conn = ozo::rollback(std::move(transaction), yield[ec]);
ozo::make_options
constexpr auto make_options(Options &&...opts)
Constructor for options map.
Definition: options.h:105
ozo::begin
decltype(auto) begin(ConnectionProvider &&provider, TimeConstraint time_constraint, CompletionToken &&token)
Start new transaction.
ozo::commit
decltype(auto) commit(transaction< T, Options > &&transaction, TimeConstraint t, CompletionToken &&token)
Commits a transaction.
ozo::rollback
decltype(auto) rollback(transaction< T, Options > &&transaction, TimeConstraint t, CompletionToken &&token)
Rollback a transaction.