mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Galera4
This commit is contained in:
committed by
Sergey Vojtovich
parent
382115b992
commit
36a2a185fe
@@ -1,5 +1,20 @@
|
||||
#ifndef MYSQL_SERVICE_WSREP_INCLUDED
|
||||
#define MYSQL_SERVICE_WSREP_INCLUDED
|
||||
|
||||
enum Wsrep_service_key_type
|
||||
{
|
||||
WSREP_SERVICE_KEY_SHARED,
|
||||
WSREP_SERVICE_KEY_REFERENCE,
|
||||
WSREP_SERVICE_KEY_UPDATE,
|
||||
WSREP_SERVICE_KEY_EXCLUSIVE
|
||||
};
|
||||
|
||||
#if (defined (MYSQL_DYNAMIC_PLUGIN) && defined(MYSQL_SERVICE_WSREP_DYNAMIC_INCLUDED)) || (!defined(MYSQL_DYNAMIC_PLUGIN) && defined(MYSQL_SERVICE_WSREP_STATIC_INCLUDED))
|
||||
|
||||
#else
|
||||
|
||||
/* Copyright (c) 2015 MariaDB Corporation Ab
|
||||
2018 Codership Oy <info@codership.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -21,153 +36,92 @@
|
||||
Interface to WSREP functionality in the server.
|
||||
For engines that want to support galera.
|
||||
*/
|
||||
|
||||
#include <my_pthread.h>
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum wsrep_conflict_state {
|
||||
NO_CONFLICT,
|
||||
MUST_ABORT,
|
||||
ABORTING,
|
||||
ABORTED,
|
||||
MUST_REPLAY,
|
||||
REPLAYING,
|
||||
RETRY_AUTOCOMMIT,
|
||||
CERT_FAILURE,
|
||||
};
|
||||
|
||||
enum wsrep_exec_mode {
|
||||
/* Transaction processing before replication. */
|
||||
LOCAL_STATE,
|
||||
/* Slave thread applying write sets from other nodes or replaying thread. */
|
||||
REPL_RECV,
|
||||
/* Total-order-isolation mode. */
|
||||
TOTAL_ORDER,
|
||||
/*
|
||||
Transaction procession after it has been replicated in prepare stage and
|
||||
has passed certification.
|
||||
*/
|
||||
LOCAL_COMMIT
|
||||
};
|
||||
|
||||
enum wsrep_query_state {
|
||||
QUERY_IDLE,
|
||||
QUERY_EXEC,
|
||||
QUERY_COMMITTING,
|
||||
QUERY_EXITING,
|
||||
QUERY_ROLLINGBACK,
|
||||
};
|
||||
|
||||
enum wsrep_trx_status {
|
||||
WSREP_TRX_OK,
|
||||
WSREP_TRX_CERT_FAIL, /* certification failure, must abort */
|
||||
WSREP_TRX_SIZE_EXCEEDED, /* trx size exceeded */
|
||||
WSREP_TRX_ERROR, /* native mysql error */
|
||||
};
|
||||
|
||||
struct xid_t;
|
||||
struct wsrep;
|
||||
struct wsrep_ws_handle;
|
||||
struct wsrep_buf;
|
||||
|
||||
/* Must match to definition in sql/mysqld.h */
|
||||
typedef int64 query_id_t;
|
||||
|
||||
|
||||
extern struct wsrep_service_st {
|
||||
struct wsrep * (*get_wsrep_func)();
|
||||
my_bool (*get_wsrep_certify_nonPK_func)();
|
||||
my_bool (*get_wsrep_debug_func)();
|
||||
my_bool (*get_wsrep_drupal_282555_workaround_func)();
|
||||
my_bool (*get_wsrep_recovery_func)();
|
||||
my_bool (*get_wsrep_load_data_splitting_func)();
|
||||
my_bool (*get_wsrep_log_conflicts_func)();
|
||||
long (*get_wsrep_protocol_version_func)();
|
||||
my_bool (*wsrep_aborting_thd_contains_func)(THD *thd);
|
||||
void (*wsrep_aborting_thd_enqueue_func)(THD *thd);
|
||||
bool (*wsrep_consistency_check_func)(THD *thd);
|
||||
int (*wsrep_is_wsrep_xid_func)(const struct xid_t *xid);
|
||||
bool (*wsrep_consistency_check_func)(MYSQL_THD thd);
|
||||
int (*wsrep_is_wsrep_xid_func)(const void *xid);
|
||||
long long (*wsrep_xid_seqno_func)(const struct xid_t *xid);
|
||||
const unsigned char* (*wsrep_xid_uuid_func)(const struct xid_t *xid);
|
||||
void (*wsrep_lock_rollback_func)();
|
||||
int (*wsrep_on_func)(MYSQL_THD);
|
||||
void (*wsrep_post_commit_func)(THD* thd, bool all);
|
||||
bool (*wsrep_prepare_key_func)(const unsigned char*, size_t, const unsigned char*, size_t, struct wsrep_buf*, size_t*);
|
||||
enum wsrep_trx_status (*wsrep_run_wsrep_commit_func)(THD *thd, bool all);
|
||||
void (*wsrep_thd_LOCK_func)(THD *thd);
|
||||
void (*wsrep_thd_UNLOCK_func)(THD *thd);
|
||||
void (*wsrep_thd_awake_func)(THD *thd, my_bool signal);
|
||||
enum wsrep_conflict_state (*wsrep_thd_conflict_state_func)(MYSQL_THD, my_bool);
|
||||
const char * (*wsrep_thd_conflict_state_str_func)(THD *thd);
|
||||
enum wsrep_exec_mode (*wsrep_thd_exec_mode_func)(THD *thd);
|
||||
const char * (*wsrep_thd_exec_mode_str_func)(THD *thd);
|
||||
enum wsrep_conflict_state (*wsrep_thd_get_conflict_state_func)(MYSQL_THD);
|
||||
my_bool (*wsrep_thd_is_BF_func)(MYSQL_THD , my_bool);
|
||||
my_bool (*wsrep_thd_is_wsrep_func)(MYSQL_THD thd);
|
||||
char * (*wsrep_thd_query_func)(THD *thd);
|
||||
enum wsrep_query_state (*wsrep_thd_query_state_func)(THD *thd);
|
||||
const char * (*wsrep_thd_query_state_str_func)(THD *thd);
|
||||
int (*wsrep_thd_retry_counter_func)(THD *thd);
|
||||
void (*wsrep_thd_set_conflict_state_func)(THD *thd, enum wsrep_conflict_state state);
|
||||
bool (*wsrep_thd_ignore_table_func)(THD *thd);
|
||||
long long (*wsrep_thd_trx_seqno_func)(THD *thd);
|
||||
struct wsrep_ws_handle * (*wsrep_thd_ws_handle_func)(THD *thd);
|
||||
int (*wsrep_trx_is_aborting_func)(MYSQL_THD thd);
|
||||
int (*wsrep_trx_order_before_func)(MYSQL_THD, MYSQL_THD);
|
||||
void (*wsrep_unlock_rollback_func)();
|
||||
my_bool (*wsrep_on_func)(const MYSQL_THD thd);
|
||||
bool (*wsrep_prepare_key_for_innodb_func)(MYSQL_THD thd, const unsigned char*, size_t, const unsigned char*, size_t, struct wsrep_buf*, size_t*);
|
||||
void (*wsrep_thd_LOCK_func)(const MYSQL_THD thd);
|
||||
void (*wsrep_thd_UNLOCK_func)(const MYSQL_THD thd);
|
||||
const char * (*wsrep_thd_query_func)(const MYSQL_THD thd);
|
||||
int (*wsrep_thd_retry_counter_func)(const MYSQL_THD thd);
|
||||
bool (*wsrep_thd_ignore_table_func)(MYSQL_THD thd);
|
||||
long long (*wsrep_thd_trx_seqno_func)(const MYSQL_THD thd);
|
||||
my_bool (*wsrep_thd_is_aborting_func)(const MYSQL_THD thd);
|
||||
void (*wsrep_set_data_home_dir_func)(const char *data_dir);
|
||||
my_bool (*wsrep_thd_is_BF_func)(const MYSQL_THD thd, my_bool sync);
|
||||
my_bool (*wsrep_thd_is_local_func)(const MYSQL_THD thd);
|
||||
void (*wsrep_thd_self_abort_func)(MYSQL_THD thd);
|
||||
int (*wsrep_thd_append_key_func)(MYSQL_THD thd, const struct wsrep_key* key,
|
||||
int n_keys, enum Wsrep_service_key_type);
|
||||
const char* (*wsrep_thd_client_state_str_func)(const MYSQL_THD thd);
|
||||
const char* (*wsrep_thd_client_mode_str_func)(const MYSQL_THD thd);
|
||||
const char* (*wsrep_thd_transaction_state_str_func)(const MYSQL_THD thd);
|
||||
query_id_t (*wsrep_thd_transaction_id_func)(const MYSQL_THD thd);
|
||||
my_bool (*wsrep_thd_bf_abort_func)(const MYSQL_THD bf_thd,
|
||||
MYSQL_THD victim_thd,
|
||||
my_bool signal);
|
||||
my_bool (*wsrep_thd_order_before_func)(const MYSQL_THD left, const MYSQL_THD right);
|
||||
void (*wsrep_handle_SR_rollback_func)(MYSQL_THD BF_thd, MYSQL_THD victim_thd);
|
||||
my_bool (*wsrep_thd_skip_locking_func)(const MYSQL_THD thd);
|
||||
const char* (*wsrep_get_sr_table_name_func)();
|
||||
my_bool (*wsrep_get_debug_func)();
|
||||
} *wsrep_service;
|
||||
|
||||
#define MYSQL_SERVICE_WSREP_INCLUDED
|
||||
#endif
|
||||
|
||||
#ifdef MYSQL_DYNAMIC_PLUGIN
|
||||
#define get_wsrep() wsrep_service->get_wsrep_func()
|
||||
#define get_wsrep_certify_nonPK() wsrep_service->get_wsrep_certify_nonPK_func()
|
||||
#define get_wsrep_debug() wsrep_service->get_wsrep_debug_func()
|
||||
#define get_wsrep_drupal_282555_workaround() wsrep_service->get_wsrep_drupal_282555_workaround_func()
|
||||
|
||||
#define MYSQL_SERVICE_WSREP_DYNAMIC_INCLUDED
|
||||
#define get_wsrep_recovery() wsrep_service->get_wsrep_recovery_func()
|
||||
#define get_wsrep_load_data_splitting() wsrep_service->get_wsrep_load_data_splitting_func()
|
||||
#define get_wsrep_log_conflicts() wsrep_service->get_wsrep_log_conflicts_func()
|
||||
#define get_wsrep_protocol_version() wsrep_service->get_wsrep_protocol_version_func()
|
||||
#define wsrep_aborting_thd_contains(T) wsrep_service->wsrep_aborting_thd_contains_func(T)
|
||||
#define wsrep_aborting_thd_enqueue(T) wsrep_service->wsrep_aborting_thd_enqueue_func(T)
|
||||
#define wsrep_consistency_check(T) wsrep_service->wsrep_consistency_check_func(T)
|
||||
#define wsrep_is_wsrep_xid(X) wsrep_service->wsrep_is_wsrep_xid_func(X)
|
||||
#define wsrep_xid_seqno(X) wsrep_service->wsrep_xid_seqno_func(X)
|
||||
#define wsrep_xid_uuid(X) wsrep_service->wsrep_xid_uuid_func(X)
|
||||
#define wsrep_lock_rollback() wsrep_service->wsrep_lock_rollback_func()
|
||||
#define wsrep_on(X) wsrep_service->wsrep_on_func(X)
|
||||
#define wsrep_post_commit(T,A) wsrep_service->wsrep_post_commit_func(T,A)
|
||||
#define wsrep_prepare_key(A,B,C,D,E,F) wsrep_service->wsrep_prepare_key_func(A,B,C,D,E,F)
|
||||
#define wsrep_run_wsrep_commit(T,A) wsrep_service->wsrep_run_wsrep_commit_func(T,A)
|
||||
#define wsrep_prepare_key_for_innodb(A,B,C,D,E,F,G) wsrep_service->wsrep_prepare_key_for_innodb_func(A,B,C,D,E,F,G)
|
||||
#define wsrep_thd_LOCK(T) wsrep_service->wsrep_thd_LOCK_func(T)
|
||||
#define wsrep_thd_UNLOCK(T) wsrep_service->wsrep_thd_UNLOCK_func(T)
|
||||
#define wsrep_thd_awake(T,S) wsrep_service->wsrep_thd_awake_func(T,S)
|
||||
#define wsrep_thd_conflict_state(T,S) wsrep_service->wsrep_thd_conflict_state_func(T,S)
|
||||
#define wsrep_thd_conflict_state_str(T) wsrep_service->wsrep_thd_conflict_state_str_func(T)
|
||||
#define wsrep_thd_exec_mode(T) wsrep_service->wsrep_thd_exec_mode_func(T)
|
||||
#define wsrep_thd_exec_mode_str(T) wsrep_service->wsrep_thd_exec_mode_str_func(T)
|
||||
#define wsrep_thd_get_conflict_state(T) wsrep_service->wsrep_thd_get_conflict_state_func(T)
|
||||
#define wsrep_thd_is_BF(T,S) wsrep_service->wsrep_thd_is_BF_func(T,S)
|
||||
#define wsrep_thd_is_wsrep(T) wsrep_service->wsrep_thd_is_wsrep_func(T)
|
||||
#define wsrep_thd_query(T) wsrep_service->wsrep_thd_query_func(T)
|
||||
#define wsrep_thd_query_state(T) wsrep_service->wsrep_thd_query_state_func(T)
|
||||
#define wsrep_thd_query_state_str(T) wsrep_service->wsrep_thd_query_state_str_func(T)
|
||||
#define wsrep_thd_retry_counter(T) wsrep_service->wsrep_thd_retry_counter_func(T)
|
||||
#define wsrep_thd_set_conflict_state(T,S) wsrep_service->wsrep_thd_set_conflict_state_func(T,S)
|
||||
#define wsrep_thd_ignore_table(T) wsrep_service->wsrep_thd_ignore_table_func(T)
|
||||
#define wsrep_thd_trx_seqno(T) wsrep_service->wsrep_thd_trx_seqno_func(T)
|
||||
#define wsrep_thd_ws_handle(T) wsrep_service->wsrep_thd_ws_handle_func(T)
|
||||
#define wsrep_trx_is_aborting(T) wsrep_service->wsrep_trx_is_aborting_func(T)
|
||||
#define wsrep_trx_order_before(T1,T2) wsrep_service->wsrep_trx_order_before_func(T1,T2)
|
||||
#define wsrep_unlock_rollback() wsrep_service->wsrep_unlock_rollback_func()
|
||||
#define wsrep_set_data_home_dir(A) wsrep_service->wsrep_set_data_home_dir_func(A)
|
||||
|
||||
#define wsrep_debug get_wsrep_debug()
|
||||
#define wsrep_log_conflicts get_wsrep_log_conflicts()
|
||||
#define wsrep_certify_nonPK get_wsrep_certify_nonPK()
|
||||
#define wsrep_load_data_splitting get_wsrep_load_data_splitting()
|
||||
#define wsrep_drupal_282555_workaround get_wsrep_drupal_282555_workaround()
|
||||
#define wsrep_recovery get_wsrep_recovery()
|
||||
#define wsrep_protocol_version get_wsrep_protocol_version()
|
||||
#define wsrep_thd_is_BF(T,S) wsrep_service->wsrep_thd_is_BF_func(T,S)
|
||||
#define wsrep_thd_is_aborting(T) wsrep_service->wsrep_thd_is_aborting_func(T)
|
||||
#define wsrep_thd_is_local(T) wsrep_service->wsrep_thd_is_local_func(T)
|
||||
#define wsrep_thd_self_abort(T) wsrep_service->wsrep_thd_self_abort_func(T)
|
||||
#define wsrep_thd_append_key(T,W,N,K) wsrep_service->wsrep_thd_append_key_func(T,W,N,K)
|
||||
#define wsrep_thd_client_state_str(T) wsrep_service->wsrep_thd_client_state_str_func(T)
|
||||
#define wsrep_thd_client_mode_str(T) wsrep_service->wsrep_thd_client_mode_str_func(T)
|
||||
#define wsrep_thd_transaction_state_str(T) wsrep_service->wsrep_thd_transaction_state_str_func(T)
|
||||
#define wsrep_thd_transaction_id(T) wsrep_service->wsrep_thd_transaction_id_func(T)
|
||||
#define wsrep_thd_bf_abort(T,T2,S) wsrep_service->wsrep_thd_bf_abort_func(T,T2,S)
|
||||
#define wsrep_thd_order_before(L,R) wsrep_service->wsrep_thd_order_before_func(L,R)
|
||||
#define wsrep_handle_SR_rollback(B,V) wsrep_service->wsrep_handle_SR_rollback_func(B,V)
|
||||
#define wsrep_thd_skip_locking(T) wsrep_service->wsrep_thd_skip_locking_func(T)
|
||||
#define wsrep_get_sr_table_name() wsrep_service->wsrep_get_sr_table_name_func()
|
||||
#define wsrep_get_debug() wsrep_service->wsrep_get_debug_func()
|
||||
|
||||
#else
|
||||
|
||||
#define MYSQL_SERVICE_WSREP_STATIC_INCLUDED
|
||||
extern my_bool wsrep_debug;
|
||||
extern my_bool wsrep_log_conflicts;
|
||||
extern my_bool wsrep_certify_nonPK;
|
||||
@@ -176,54 +130,81 @@ extern my_bool wsrep_drupal_282555_workaround;
|
||||
extern my_bool wsrep_recovery;
|
||||
extern long wsrep_protocol_version;
|
||||
|
||||
bool wsrep_consistency_check(THD *thd);
|
||||
bool wsrep_prepare_key(const unsigned char* cache_key, size_t cache_key_len, const unsigned char* row_id, size_t row_id_len, struct wsrep_buf* key, size_t* key_len);
|
||||
char *wsrep_thd_query(THD *thd);
|
||||
const char *wsrep_thd_conflict_state_str(THD *thd);
|
||||
const char *wsrep_thd_exec_mode_str(THD *thd);
|
||||
const char *wsrep_thd_query_state_str(THD *thd);
|
||||
enum wsrep_conflict_state wsrep_thd_conflict_state(MYSQL_THD thd, my_bool sync);
|
||||
enum wsrep_conflict_state wsrep_thd_get_conflict_state(MYSQL_THD thd);
|
||||
enum wsrep_exec_mode wsrep_thd_exec_mode(THD *thd);
|
||||
enum wsrep_query_state wsrep_thd_query_state(THD *thd);
|
||||
enum wsrep_trx_status wsrep_run_wsrep_commit(THD *thd, bool all);
|
||||
int wsrep_is_wsrep_xid(const struct xid_t* xid);
|
||||
long long wsrep_xid_seqno(const struct xid_t* xid);
|
||||
extern "C" bool wsrep_consistency_check(MYSQL_THD thd);
|
||||
bool wsrep_prepare_key_for_innodb(MYSQL_THD thd, const unsigned char* cache_key, size_t cache_key_len, const unsigned char* row_id, size_t row_id_len, struct wsrep_buf* key, size_t* key_len);
|
||||
extern "C" const char *wsrep_thd_query(const MYSQL_THD thd);
|
||||
extern "C" int wsrep_is_wsrep_xid(const void* xid);
|
||||
extern "C" long long wsrep_xid_seqno(const struct xid_t* xid);
|
||||
const unsigned char* wsrep_xid_uuid(const struct xid_t* xid);
|
||||
int wsrep_on(MYSQL_THD thd);
|
||||
int wsrep_thd_retry_counter(THD *thd);
|
||||
int wsrep_trx_is_aborting(MYSQL_THD thd);
|
||||
int wsrep_trx_order_before(MYSQL_THD thd1, MYSQL_THD thd2);
|
||||
long get_wsrep_protocol_version();
|
||||
long long wsrep_thd_trx_seqno(THD *thd);
|
||||
my_bool get_wsrep_certify_nonPK();
|
||||
my_bool get_wsrep_debug();
|
||||
my_bool get_wsrep_drupal_282555_workaround();
|
||||
extern "C" long long wsrep_thd_trx_seqno(const MYSQL_THD thd);
|
||||
my_bool get_wsrep_recovery();
|
||||
my_bool get_wsrep_load_data_splitting();
|
||||
my_bool get_wsrep_log_conflicts();
|
||||
my_bool wsrep_aborting_thd_contains(THD *thd);
|
||||
my_bool wsrep_thd_is_BF(MYSQL_THD thd, my_bool sync);
|
||||
my_bool wsrep_thd_is_wsrep(MYSQL_THD thd);
|
||||
struct wsrep *get_wsrep();
|
||||
struct wsrep_ws_handle *wsrep_thd_ws_handle(THD *thd);
|
||||
void wsrep_aborting_thd_enqueue(THD *thd);
|
||||
void wsrep_lock_rollback();
|
||||
void wsrep_post_commit(THD* thd, bool all);
|
||||
void wsrep_thd_LOCK(THD *thd);
|
||||
void wsrep_thd_UNLOCK(THD *thd);
|
||||
void wsrep_thd_awake(THD *thd, my_bool signal);
|
||||
void wsrep_thd_set_conflict_state(THD *thd, enum wsrep_conflict_state state);
|
||||
bool wsrep_thd_ignore_table(THD *thd);
|
||||
void wsrep_unlock_rollback();
|
||||
bool wsrep_thd_ignore_table(MYSQL_THD thd);
|
||||
void wsrep_set_data_home_dir(const char *data_dir);
|
||||
|
||||
#endif
|
||||
/* from mysql wsrep-lib */
|
||||
#include "my_global.h"
|
||||
#include "my_pthread.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
/* Return true if wsrep is enabled for a thd. This means that
|
||||
wsrep is enabled globally and the thd has wsrep on */
|
||||
extern "C" my_bool wsrep_on(const MYSQL_THD thd);
|
||||
/* Lock thd wsrep lock */
|
||||
extern "C" void wsrep_thd_LOCK(const MYSQL_THD thd);
|
||||
/* Unlock thd wsrep lock */
|
||||
extern "C" void wsrep_thd_UNLOCK(const MYSQL_THD thd);
|
||||
|
||||
#define MYSQL_SERVICE_WSREP_INCLUDED
|
||||
#endif
|
||||
/* Return thd client state string */
|
||||
extern "C" const char* wsrep_thd_client_state_str(const MYSQL_THD thd);
|
||||
/* Return thd client mode string */
|
||||
extern "C" const char* wsrep_thd_client_mode_str(const MYSQL_THD thd);
|
||||
/* Return thd transaction state string */
|
||||
extern "C" const char* wsrep_thd_transaction_state_str(const MYSQL_THD thd);
|
||||
|
||||
/* Return current transaction id */
|
||||
extern "C" query_id_t wsrep_thd_transaction_id(const MYSQL_THD thd);
|
||||
/* Mark thd own transaction as aborted */
|
||||
extern "C" void wsrep_thd_self_abort(MYSQL_THD thd);
|
||||
/* Return true if thd is in replicating mode */
|
||||
extern "C" my_bool wsrep_thd_is_local(const MYSQL_THD thd);
|
||||
/* Return true if thd is in high priority mode */
|
||||
/* todo: rename to is_high_priority() */
|
||||
extern "C" my_bool wsrep_thd_is_applying(const MYSQL_THD thd);
|
||||
/* Return true if thd is in TOI mode */
|
||||
extern "C" my_bool wsrep_thd_is_toi(const MYSQL_THD thd);
|
||||
/* Return true if thd is in replicating TOI mode */
|
||||
extern "C" my_bool wsrep_thd_is_local_toi(const MYSQL_THD thd);
|
||||
/* Return true if thd is in RSU mode */
|
||||
extern "C" my_bool wsrep_thd_is_in_rsu(const MYSQL_THD thd);
|
||||
/* Return true if thd is in BF mode, either high_priority or TOI */
|
||||
extern "C" my_bool wsrep_thd_is_BF(const MYSQL_THD thd, my_bool sync);
|
||||
/* Return true if thd is streaming */
|
||||
extern "C" my_bool wsrep_thd_is_SR(const MYSQL_THD thd);
|
||||
extern "C" void wsrep_handle_SR_rollback(MYSQL_THD BF_thd, MYSQL_THD victim_thd);
|
||||
/* Return thd retry counter */
|
||||
extern "C" int wsrep_thd_retry_counter(const MYSQL_THD thd);
|
||||
/* BF abort victim_thd */
|
||||
extern "C" my_bool wsrep_thd_bf_abort(const MYSQL_THD bf_thd,
|
||||
MYSQL_THD victim_thd,
|
||||
my_bool signal);
|
||||
/* Return true if left thd is ordered before right thd */
|
||||
extern "C" my_bool wsrep_thd_order_before(const MYSQL_THD left, const MYSQL_THD right);
|
||||
/* Return true if thd should skip locking. This means that the thd
|
||||
is operating on shared resource inside commit order critical section. */
|
||||
extern "C" my_bool wsrep_thd_skip_locking(const MYSQL_THD thd);
|
||||
/* Return true if thd is aborting */
|
||||
extern "C" my_bool wsrep_thd_is_aborting(const MYSQL_THD thd);
|
||||
|
||||
struct wsrep_key;
|
||||
struct wsrep_key_array;
|
||||
extern "C" int wsrep_thd_append_key(MYSQL_THD thd,
|
||||
const struct wsrep_key* key,
|
||||
int n_keys,
|
||||
enum Wsrep_service_key_type);
|
||||
|
||||
extern const char* wsrep_sr_table_name_full;
|
||||
|
||||
extern "C" const char* wsrep_get_sr_table_name();
|
||||
|
||||
extern "C" my_bool wsrep_get_debug();
|
||||
#endif
|
||||
#endif /* MYSQL_SERVICE_WSREP_INCLUDED */
|
||||
|
Reference in New Issue
Block a user