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()
throw ();
65 void reg_pending_error(
const PGSTD::string &)
throw ();
66 bool registered()
const throw () {
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 PGSTD::string m_query;
114 class transaction_subtransaction;
115 class transaction_tablereader;
116 class transaction_tablewriter;
117 class transaction_transactionfocus;
167 PGSTD::string esc(
const char str[])
const {
return conn().esc(str); }
170 PGSTD::string
esc(
const char str[],
size_t maxlen)
const 171 {
return conn().esc(str, maxlen); }
173 PGSTD::string
esc(
const PGSTD::string &str)
const {
return conn().esc(str); }
187 PGSTD::string
esc_raw(
const unsigned char str[],
size_t len)
const 188 {
return conn().esc_raw(str, len); }
190 PGSTD::string esc_raw(
const PGSTD::string &)
const;
194 template<
typename T> PGSTD::string
quote(
const T &t)
const 195 {
return conn().quote(t); }
198 PGSTD::string
quote_raw(
const unsigned char str[],
size_t len)
const 199 {
return conn().quote_raw(str, len); }
201 PGSTD::string quote_raw(
const PGSTD::string &str)
const;
204 PGSTD::string
quote_name(
const PGSTD::string &identifier)
const 205 {
return conn().quote_name(identifier); }
224 result exec(
const PGSTD::string &Query,
225 const PGSTD::string &Desc=PGSTD::string());
228 const PGSTD::string &Desc=PGSTD::string())
229 {
return exec(Query.str(), Desc); }
296 void process_notice(
const char Msg[])
const 298 { m_Conn.process_notice(Msg); }
301 { m_Conn.process_notice(Msg); }
316 void set_variable(
const PGSTD::string &Var,
const PGSTD::string &Val);
328 PGSTD::string get_variable(
const PGSTD::string &);
350 virtual void do_begin() =0;
352 virtual result do_exec(
const char Query[]) =0;
354 virtual void do_commit() =0;
356 virtual void do_abort() =0;
369 result DirectExec(
const char C[],
int Retries=0);
373 {m_reactivation_avoidance.clear();}
411 void PQXX_PRIVATE activate();
413 void PQXX_PRIVATE CheckPendingError();
415 template<
typename T>
bool parm_is_null(T *p)
const throw () {
return !p; }
416 template<
typename T>
bool parm_is_null(T)
const throw () {
return false; }
418 friend class pqxx::internal::gate::transaction_transactionfocus;
421 void PQXX_PRIVATE RegisterPendingError(const PGSTD::
string &) throw ();
423 friend class
pqxx::internal::gate::transaction_tablereader;
424 void PQXX_PRIVATE BeginCopyRead(const PGSTD::
string &, const PGSTD::
string &);
425 bool ReadCopyLine(PGSTD::
string &);
427 friend class
pqxx::internal::gate::transaction_tablewriter;
428 void PQXX_PRIVATE BeginCopyWrite(
429 const PGSTD::
string &Table,
430 const PGSTD::
string &Columns);
431 void WriteCopyLine(const PGSTD::
string &);
434 friend class
pqxx::internal::gate::transaction_subtransaction;
438 internal::unique<internal::transactionfocus> m_Focus;
441 PGSTD::map<PGSTD::
string, PGSTD::
string> m_Vars;
442 PGSTD::
string m_PendingError;
449 transaction_base &operator=(const transaction_base &);
455 #include "pqxx/compiler-internal-post.hxx" isolation_traits< read_committed > isolation_tag
If nothing else is known, our isolation level is at least read_committed.
Definition: transaction_base.hxx:138
Result set containing data returned by a query or command.
Definition: result.hxx:81
Traits class to describe an isolation level; primarly for libpqxx's own use.
Definition: isolation.hxx:69
connection_base abstract base class; represents a connection to a database.
Definition: connection_base.hxx:151
connection_base & conn() const
Connection this transaction is running in.
Definition: transaction_base.hxx:305
std::string quote_name(const std::string &identifier) const
Escape an SQL identifier for use in a query.
Definition: transaction_base.hxx:204
std::string esc_raw(const unsigned char str[], size_t len) const
Escape binary data for use as SQL string literal in this transaction.
Definition: transaction_base.hxx:187
parameterized_invocation & operator()(const T &v)
Definition: transaction_base.hxx:90
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
void reactivation_avoidance_clear()
Forget about any reactivation-blocking resources we tried to allocate.
Definition: transaction_base.hxx:372
Definition: transaction_base.hxx:82
Definition: binarystring.hxx:59
Definition: transaction_base.hxx:52
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:198
parameterized_invocation & operator()()
Definition: transaction_base.hxx:87
parameterized_invocation & operator()(const T &v, bool nonnull)
Definition: transaction_base.hxx:95
transaction_base & m_Trans
Definition: transaction_base.hxx:68
transactionfocus(transaction_base &t)
Definition: transaction_base.hxx:55
std::string quote(const T &t) const
Represent object as SQL string, including quoting & escaping.
Definition: transaction_base.hxx:194
bool registered() const
Definition: transaction_base.hxx:66
std::string esc(const std::string &str) const
Escape string for use as SQL string literal in this transaction.
Definition: transaction_base.hxx:173
result exec(const std::stringstream &Query, const std::string &Desc=std::string())
Definition: transaction_base.hxx:227
Definition: connection_base.hxx:59
internal::reactivation_avoidance_counter m_reactivation_avoidance
Resources allocated in this transaction that make reactivation impossible.
Definition: transaction_base.hxx:379
void process_notice(const std::string &Msg) const
Have connection process warning message.
Definition: transaction_base.hxx:300
parameterized_invocation & operator()(const binarystring &v)
Definition: transaction_base.hxx:88
Helper class for passing parameters to, and executing, prepared statements.
Definition: prepared_statement.hxx:124
The home of all libpqxx classes, functions, templates, etc.
Definition: basic_connection.hxx:35
Definition: transaction_base.hxx:133
parameterized_invocation & operator()(const binarystring &v, bool nonnull)
Definition: transaction_base.hxx:92