23#ifndef MYSQL_TRANSACTION_H
24#define MYSQL_TRANSACTION_H
35#if defined(MYSQL_SERVER) || defined(PFS_DIRECT_CALL)
40#ifndef PSI_TRANSACTION_CALL
41#define PSI_TRANSACTION_CALL(M) psi_transaction_service->M
50#ifdef HAVE_PSI_TRANSACTION_INTERFACE
51#define MYSQL_START_TRANSACTION(STATE, XID, TRXID, ISO, RO, AC) \
52 inline_mysql_start_transaction(STATE, XID, TRXID, ISO, RO, AC, __FILE__, \
55#define MYSQL_START_TRANSACTION(STATE, XID, TRXID, ISO, RO, AC) \
60#ifdef HAVE_PSI_TRANSACTION_INTERFACE
61#define MYSQL_SET_TRANSACTION_GTID(LOCKER, P1, P2) \
62 inline_mysql_set_transaction_gtid(LOCKER, P1, P2)
64#define MYSQL_SET_TRANSACTION_GTID(LOCKER, P1, P2) \
69#ifdef HAVE_PSI_TRANSACTION_INTERFACE
70#define MYSQL_SET_TRANSACTION_XID(LOCKER, P1, P2) \
71 inline_mysql_set_transaction_xid(LOCKER, P1, P2)
73#define MYSQL_SET_TRANSACTION_XID(LOCKER, P1, P2) \
78#ifdef HAVE_PSI_TRANSACTION_INTERFACE
79#define MYSQL_SET_TRANSACTION_XA_STATE(LOCKER, P1) \
80 inline_mysql_set_transaction_xa_state(LOCKER, P1)
82#define MYSQL_SET_TRANSACTION_XA_STATE(LOCKER, P1) \
87#ifdef HAVE_PSI_TRANSACTION_INTERFACE
88#define MYSQL_SET_TRANSACTION_TRXID(LOCKER, P1) \
89 inline_mysql_set_transaction_trxid(LOCKER, P1)
91#define MYSQL_SET_TRANSACTION_TRXID(LOCKER, P1) \
96#ifdef HAVE_PSI_TRANSACTION_INTERFACE
97#define MYSQL_INC_TRANSACTION_SAVEPOINTS(LOCKER, P1) \
98 inline_mysql_inc_transaction_savepoints(LOCKER, P1)
100#define MYSQL_INC_TRANSACTION_SAVEPOINTS(LOCKER, P1) \
105#ifdef HAVE_PSI_TRANSACTION_INTERFACE
106#define MYSQL_INC_TRANSACTION_ROLLBACK_TO_SAVEPOINT(LOCKER, P1) \
107 inline_mysql_inc_transaction_rollback_to_savepoint(LOCKER, P1)
109#define MYSQL_INC_TRANSACTION_ROLLBACK_TO_SAVEPOINT(LOCKER, P1) \
114#ifdef HAVE_PSI_TRANSACTION_INTERFACE
115#define MYSQL_INC_TRANSACTION_RELEASE_SAVEPOINT(LOCKER, P1) \
116 inline_mysql_inc_transaction_release_savepoint(LOCKER, P1)
118#define MYSQL_INC_TRANSACTION_RELEASE_SAVEPOINT(LOCKER, P1) \
123#ifdef HAVE_PSI_TRANSACTION_INTERFACE
124#define MYSQL_ROLLBACK_TRANSACTION(LOCKER) \
125 inline_mysql_rollback_transaction(LOCKER)
127#define MYSQL_ROLLBACK_TRANSACTION(LOCKER) NULL
130#ifdef HAVE_PSI_TRANSACTION_INTERFACE
131#define MYSQL_COMMIT_TRANSACTION(LOCKER) inline_mysql_commit_transaction(LOCKER)
133#define MYSQL_COMMIT_TRANSACTION(LOCKER) NULL
136#ifdef HAVE_PSI_TRANSACTION_INTERFACE
140 bool autocommit,
const char *src_file,
int src_line) {
144 if (
likely(locker !=
nullptr)) {
152 if (
likely(locker !=
nullptr)) {
159 if (
likely(locker !=
nullptr)) {
166 if (
likely(locker !=
nullptr)) {
173 if (
likely(locker !=
nullptr)) {
180 if (
likely(locker !=
nullptr)) {
187 if (
likely(locker !=
nullptr)) {
194 if (
likely(locker !=
nullptr)) {
201 if (
likely(locker !=
nullptr)) {
208 if (
likely(locker !=
nullptr)) {
#define PSI_TRANSACTION_CALL(M)
Definition: psi_transaction.h:35
struct PSI_transaction_locker PSI_transaction_locker
Definition: psi_transaction_bits.h:40
static void inline_mysql_set_transaction_xid(PSI_transaction_locker *locker, const void *xid, int xa_state)
Definition: mysql_transaction.h:157
static void inline_mysql_set_transaction_trxid(PSI_transaction_locker *locker, const ulonglong *trxid)
Definition: mysql_transaction.h:171
static void inline_mysql_inc_transaction_release_savepoint(PSI_transaction_locker *locker, ulong count)
Definition: mysql_transaction.h:192
static struct PSI_transaction_locker * inline_mysql_start_transaction(PSI_transaction_locker_state *state, const void *xid, const ulonglong *trxid, int isolation_level, bool read_only, bool autocommit, const char *src_file, int src_line)
Definition: mysql_transaction.h:137
static void inline_mysql_set_transaction_gtid(PSI_transaction_locker *locker, const void *sid, const void *gtid_spec)
Definition: mysql_transaction.h:150
static void inline_mysql_rollback_transaction(struct PSI_transaction_locker *locker)
Definition: mysql_transaction.h:199
static void inline_mysql_set_transaction_xa_state(PSI_transaction_locker *locker, int xa_state)
Definition: mysql_transaction.h:164
static void inline_mysql_commit_transaction(struct PSI_transaction_locker *locker)
Definition: mysql_transaction.h:206
static void inline_mysql_inc_transaction_rollback_to_savepoint(PSI_transaction_locker *locker, ulong count)
Definition: mysql_transaction.h:185
static void inline_mysql_inc_transaction_savepoints(PSI_transaction_locker *locker, ulong count)
Definition: mysql_transaction.h:178
constexpr bool likely(bool expr)
Definition: my_compiler.h:56
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
static int count
Definition: myisam_ftdump.cc:44
static int start_transaction(MYSQL *mysql_con)
Definition: mysqldump.cc:5228
constexpr value_type read_only
Definition: classic_protocol_constants.h:212
constexpr value_type autocommit
Definition: classic_protocol_constants.h:151
bool end_transaction(THD *thd, bool error)
Helper function to do rollback or commit, depending on error.
Definition: utils.cc:180
Performance schema instrumentation (declarations).
Performance schema instrumentation interface.
State data storage for get_thread_transaction_locker_v1_t, get_thread_transaction_locker_v1_t.
Definition: psi_transaction_bits.h:52