20 #ifndef PQXX_H_TRANSACTION_BASE
21 #define PQXX_H_TRANSACTION_BASE
23 #include "pqxx/compiler-public.hxx"
24 #include "pqxx/compiler-internal-pre.hxx"
35 #include "pqxx/connection_base"
36 #include "pqxx/isolation"
37 #include "pqxx/result"
44 class connection_base;
45 class transaction_base;
64 void unregister_me() PQXX_NOEXCEPT;
65 void reg_pending_error(const std::
string &) PQXX_NOEXCEPT;
66 bool registered() const PQXX_NOEXCEPT {
return m_registered; }
89 { add_binary_param(v,
true);
return *
this; }
91 { add_param(v,
true);
return *
this; }
93 { add_binary_param(v, nonnull);
return *
this; }
96 { add_param(v, nonnull);
return *
this; }
105 const std::string m_query;
114 class transaction_subtransaction;
115 class transaction_tablereader;
116 class transaction_tablewriter;
117 class transaction_transactionfocus;
167 std::string esc(
const char str[])
const {
return conn().esc(str); }
170 std::string
esc(
const char str[],
size_t maxlen)
const
171 {
return conn().esc(str, maxlen); }
173 std::string
esc(
const std::string &str)
const {
return conn().esc(str); }
187 std::string
esc_raw(
const unsigned char data[],
size_t len)
const
188 {
return conn().esc_raw(data, len); }
190 std::string esc_raw(
const std::string &)
const;
197 {
return conn().unesc_raw(text); }
204 {
return conn().unesc_raw(text); }
208 template<
typename T> std::string
quote(
const T &t)
const
209 {
return conn().quote(t); }
212 std::string
quote_raw(
const unsigned char str[],
size_t len)
const
213 {
return conn().quote_raw(str, len); }
215 std::string quote_raw(
const std::string &str)
const;
219 {
return conn().quote_name(identifier); }
238 result exec(
const std::string &Query,
239 const std::string &Desc=std::string());
242 const std::string &Desc=std::string())
243 {
return exec(Query.str(), Desc); }
310 void process_notice(
const char Msg[])
const
312 { m_Conn.process_notice(Msg); }
315 { m_Conn.process_notice(Msg); }
329 void set_variable(
const std::string &Var,
const std::string &Val);
341 std::string get_variable(
const std::string &);
360 void End() PQXX_NOEXCEPT;
363 virtual
void do_begin() =0;
365 virtual
result do_exec(const
char Query[]) =0;
367 virtual
void do_commit() =0;
369 virtual
void do_abort() =0;
382 result DirectExec(const
char C[],
int Retries=0);
385 void reactivation_avoidance_clear() PQXX_NOEXCEPT
386 {m_reactivation_avoidance.
clear();}
424 PQXX_PRIVATE
void activate();
426 PQXX_PRIVATE
void CheckPendingError();
428 template<
typename T>
bool parm_is_null(T *p)
const PQXX_NOEXCEPT
430 template<
typename T>
bool parm_is_null(T) const PQXX_NOEXCEPT
433 friend class pqxx::internal::gate::transaction_transactionfocus;
436 PQXX_PRIVATE
void RegisterPendingError(const std::
string &) PQXX_NOEXCEPT;
438 friend class pqxx::internal::gate::transaction_tablereader;
439 PQXX_PRIVATE
void BeginCopyRead(const std::
string &, const std::
string &);
440 bool ReadCopyLine(std::
string &);
442 friend class pqxx::internal::gate::transaction_tablewriter;
443 PQXX_PRIVATE
void BeginCopyWrite(
444 const std::
string &Table,
445 const std::
string &Columns);
446 void WriteCopyLine(const std::
string &);
449 friend class pqxx::internal::gate::transaction_subtransaction;
453 internal::unique<internal::transactionfocus> m_Focus;
456 std::map<std::
string, std::
string> m_Vars;
457 std::
string m_PendingError;
464 transaction_base &operator=(const transaction_base &);
470 #include "pqxx/compiler-internal-post.hxx"
connection_base abstract base class; represents a connection to a database.
Definition: connection_base.hxx:149
connection_base & conn() const
Connection this transaction is running in.
Definition: transaction_base.hxx:319
std::string quote_raw(const unsigned char str[], size_t len) const
Binary-escape and quote a binarystring for use as an SQL constant.
Definition: transaction_base.hxx:212
void clear() PQXX_NOEXCEPT
Definition: result.hxx:133
std::string esc_raw(const unsigned char data[], size_t len) const
Escape binary data for use as SQL string literal in this transaction.
Definition: transaction_base.hxx:187
Definition: transaction_base.hxx:52
Definition: connection_base.hxx:59
std::string quote_name(const std::string &identifier) const
Escape an SQL identifier for use in a query.
Definition: transaction_base.hxx:218
Traits class to describe an isolation level; primarly for libpqxx's own use.
Definition: isolation.hxx:69
void process_notice(const std::string &Msg) const
Have connection process warning message.
Definition: transaction_base.hxx:314
std::string esc(const char str[], size_t maxlen) const
Escape string for use as SQL string literal in this transaction.
Definition: transaction_base.hxx:170
std::string unesc_raw(const char *text) const
Unescape binary data, e.g. from a table field or notification payload.
Definition: transaction_base.hxx:203
std::string quote(const T &t) const
Represent object as SQL string, including quoting & escaping.
Definition: transaction_base.hxx:208
parameterized_invocation & operator()(const binarystring &v, bool nonnull)
Definition: transaction_base.hxx:92
transaction_base & m_Trans
Definition: transaction_base.hxx:68
Definition: binarystring.hxx:59
parameterized_invocation & operator()(const T &v, bool nonnull)
Definition: transaction_base.hxx:95
std::string esc(const std::string &str) const
Escape string for use as SQL string literal in this transaction.
Definition: transaction_base.hxx:173
Helper class for passing parameters to, and executing, prepared statements.
Definition: prepared_statement.hxx:124
parameterized_invocation & operator()()
Definition: transaction_base.hxx:87
parameterized_invocation & operator()(const T &v)
Definition: transaction_base.hxx:90
isolation_traits< read_committed > isolation_tag
If nothing else is known, our isolation level is at least read_committed.
Definition: transaction_base.hxx:138
internal::reactivation_avoidance_counter m_reactivation_avoidance
Resources allocated in this transaction that make reactivation impossible.
Definition: transaction_base.hxx:392
result exec(const std::stringstream &Query, const std::string &Desc=std::string())
Definition: transaction_base.hxx:241
transactionfocus(transaction_base &t)
Definition: transaction_base.hxx:55
parameterized_invocation & operator()(const binarystring &v)
Definition: transaction_base.hxx:88
std::string unesc_raw(const std::string &text) const
Unescape binary data, e.g. from a table field or notification payload.
Definition: transaction_base.hxx:196
Definition: transaction_base.hxx:82
Result set containing data returned by a query or command.
Definition: result.hxx:78
Definition: transaction_base.hxx:133