mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Just move, no code changes otherwise.
Part of MDEV-7974 - backport fix for mysql bug#12161 (XA and binlog)
This commit is contained in:
@ -47,6 +47,7 @@
|
||||
#include <mysql_com_server.h>
|
||||
#include "session_tracker.h"
|
||||
#include "backup.h"
|
||||
#include "xa.h"
|
||||
|
||||
extern "C"
|
||||
void set_thd_stage_info(void *thd,
|
||||
@ -1276,50 +1277,6 @@ struct st_savepoint {
|
||||
MDL_savepoint mdl_savepoint;
|
||||
};
|
||||
|
||||
enum xa_states {XA_NOTR=0, XA_ACTIVE, XA_IDLE, XA_PREPARED, XA_ROLLBACK_ONLY};
|
||||
extern const char *xa_state_names[];
|
||||
class XID_cache_element;
|
||||
|
||||
typedef struct st_xid_state {
|
||||
/* For now, this is only used to catch duplicated external xids */
|
||||
XID xid; // transaction identifier
|
||||
enum xa_states xa_state; // used by external XA only
|
||||
/* Error reported by the Resource Manager (RM) to the Transaction Manager. */
|
||||
uint rm_error;
|
||||
XID_cache_element *xid_cache_element;
|
||||
|
||||
/**
|
||||
Check that XA transaction has an uncommitted work. Report an error
|
||||
to the user in case when there is an uncommitted work for XA transaction.
|
||||
|
||||
@return result of check
|
||||
@retval false XA transaction is NOT in state IDLE, PREPARED
|
||||
or ROLLBACK_ONLY.
|
||||
@retval true XA transaction is in state IDLE or PREPARED
|
||||
or ROLLBACK_ONLY.
|
||||
*/
|
||||
|
||||
bool check_has_uncommitted_xa() const
|
||||
{
|
||||
if (xa_state == XA_IDLE ||
|
||||
xa_state == XA_PREPARED ||
|
||||
xa_state == XA_ROLLBACK_ONLY)
|
||||
{
|
||||
my_error(ER_XAER_RMFAIL, MYF(0), xa_state_names[xa_state]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} XID_STATE;
|
||||
|
||||
void xid_cache_init(void);
|
||||
void xid_cache_free(void);
|
||||
XID_STATE *xid_cache_search(THD *thd, XID *xid);
|
||||
bool xid_cache_insert(XID *xid, enum xa_states xa_state);
|
||||
bool xid_cache_insert(THD *thd, XID_STATE *xid_state);
|
||||
void xid_cache_delete(THD *thd, XID_STATE *xid_state);
|
||||
int xid_cache_iterate(THD *thd, my_hash_walk_action action, void *argument);
|
||||
|
||||
/**
|
||||
@class Security_context
|
||||
@brief A set of THD members describing the current authenticated user.
|
||||
|
Reference in New Issue
Block a user