13 #ifndef PQXX_H_ROBUSTTRANSACTION
14 #define PQXX_H_ROBUSTTRANSACTION
16 #include "pqxx/compiler-public.hxx"
17 #include "pqxx/compiler-internal-pre.hxx"
19 #include "pqxx/dbtransaction.hxx"
42 const std::string &IsolationLevel,
43 const std::string &table_name=std::string{});
46 using IDType =
unsigned long;
47 IDType m_record_id = 0;
49 std::string m_log_table;
50 std::string m_sequence;
51 int m_backendpid = -1;
53 virtual void do_begin()
override;
54 virtual void do_commit()
override;
55 virtual void do_abort()
override;
57 PQXX_PRIVATE
void CreateLogTable();
58 PQXX_PRIVATE
void CreateTransactionRecord();
59 PQXX_PRIVATE std::string sql_delete()
const;
60 PQXX_PRIVATE
void DeleteTransactionRecord() noexcept;
61 PQXX_PRIVATE
bool CheckTransactionRecord();
152 const std::string &Name=std::string{}) :
153 namedclass{fullname(
"robusttransaction",isolation_tag::name()), Name},
154 internal::basic_robusttransaction(C, isolation_tag::name())
167 #include "pqxx/compiler-internal-post.hxx"
Helper base class for the robusttransaction class template.
Definition: robusttransaction.hxx:30
basic_robusttransaction(connection_base &C, const std::string &IsolationLevel, const std::string &table_name=std::string{})
Definition: robusttransaction.cxx:25
Private namespace for libpqxx's internal use; do not access.
Definition: connection_base.hxx:43
void sleep_seconds(int)
Sleep for the given number of seconds.
Definition: util.cxx:118
@ read_committed
Definition: isolation.hxx:59
virtual void do_abort() override
Sensible default implemented here: abort backend transaction.
Definition: dbtransaction.cxx:88
virtual ~basic_robusttransaction()=0
Definition: robusttransaction.cxx:38
Slightly slower, better-fortified version of transaction.
Definition: robusttransaction.hxx:140
virtual void do_begin() override
Sensible default implemented here: begin backend transaction.
Definition: dbtransaction.cxx:66
virtual ~robusttransaction() noexcept
Definition: robusttransaction.hxx:157
Scoped exemption to reactivation avoidance.
Definition: connection_base.hxx:915
Helper base class: object descriptions for error messages and such.
Definition: util.hxx:233
std::string to_string(const field &Obj)
Convert a field to a string.
Definition: result.cxx:451
connection_base abstract base class; represents a connection to a database.
Definition: connection_base.hxx:139
Abstract base class responsible for bracketing a backend transaction.
Definition: dbtransaction.hxx:62
robusttransaction(connection_base &C, const std::string &Name=std::string{})
Constructor.
Definition: robusttransaction.hxx:150
The home of all libpqxx classes, functions, templates, etc.
Definition: array.hxx:25
isolation_level
Transaction isolation levels.
Definition: isolation.hxx:56
Traits class to describe an isolation level; primarly for libpqxx's own use.
Definition: isolation.hxx:65