mirror of
https://github.com/MariaDB/server.git
synced 2025-04-21 22:55:35 +02:00
Merge 10.5 into 10.6
This commit is contained in:
commit
9fefd440b5
40 changed files with 206 additions and 143 deletions
include
sql
backup.ccevent_data_objects.ccevents.ccitem_func.ccitem_strfunc.cclock.cclog.hlog_event.ccmdl.ccmysqld.ccsp_head.ccsql_acl.ccsql_cache.ccsql_class.ccsql_class.hsql_lex.ccsql_partition_admin.ccsql_plugin.ccsql_reload.ccsql_rename.ccsql_sequence.ccsql_table.ccsql_trigger.ccsys_vars.ccwsrep_binlog.ccwsrep_check_opts.ccwsrep_client_service.ccwsrep_high_priority_service.ccwsrep_mysqld.hwsrep_on.hwsrep_priv.hwsrep_schema.ccwsrep_sst.ccwsrep_thd.ccwsrep_var.cc
storage/innobase
|
@ -17,44 +17,46 @@
|
|||
#define WSREP_INCLUDED
|
||||
|
||||
#include <my_config.h>
|
||||
#include "log.h"
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
|
||||
#define IF_WSREP(A,B) A
|
||||
|
||||
#define DBUG_ASSERT_IF_WSREP(A) DBUG_ASSERT(A)
|
||||
|
||||
#define WSREP_MYSQL_DB (char *)"mysql"
|
||||
extern ulong wsrep_debug; // wsrep_mysqld.cc
|
||||
extern void WSREP_LOG(void (*fun)(const char* fmt, ...), const char* fmt, ...);
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \
|
||||
if (WSREP_ON && WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
#define WSREP_DEBUG(...) \
|
||||
if (wsrep_debug) WSREP_LOG(sql_print_information, ##__VA_ARGS__)
|
||||
#define WSREP_INFO(...) WSREP_LOG(sql_print_information, ##__VA_ARGS__)
|
||||
#define WSREP_WARN(...) WSREP_LOG(sql_print_warning, ##__VA_ARGS__)
|
||||
#define WSREP_ERROR(...) WSREP_LOG(sql_print_error, ##__VA_ARGS__)
|
||||
#define WSREP_UNKNOWN(fmt, ...) WSREP_ERROR("UNKNOWN: " fmt, ##__VA_ARGS__)
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_CREATE(db_, table_, table_list_, create_info_) \
|
||||
if (WSREP_ON && WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, nullptr, nullptr, create_info_)) \
|
||||
goto wsrep_error_label;
|
||||
#define WSREP_LOG_CONFLICT_THD(thd, role) \
|
||||
WSREP_INFO("%s: \n " \
|
||||
" THD: %lu, mode: %s, state: %s, conflict: %s, seqno: %lld\n " \
|
||||
" SQL: %s", \
|
||||
role, \
|
||||
thd_get_thread_id(thd), \
|
||||
wsrep_thd_client_mode_str(thd), \
|
||||
wsrep_thd_client_state_str(thd), \
|
||||
wsrep_thd_transaction_state_str(thd), \
|
||||
wsrep_thd_trx_seqno(thd), \
|
||||
wsrep_thd_query(thd) \
|
||||
);
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_, create_info_) \
|
||||
if (WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, alter_info_, \
|
||||
fk_tables_, create_info_))
|
||||
#define WSREP_LOG_CONFLICT(bf_thd, victim_thd, bf_abort) \
|
||||
if (wsrep_debug || wsrep_log_conflicts) \
|
||||
{ \
|
||||
WSREP_INFO("cluster conflict due to %s for threads:", \
|
||||
(bf_abort) ? "high priority abort" : "certification failure" \
|
||||
); \
|
||||
if (bf_thd) WSREP_LOG_CONFLICT_THD(bf_thd, "Winning thread"); \
|
||||
if (victim_thd) WSREP_LOG_CONFLICT_THD(victim_thd, "Victim thread"); \
|
||||
WSREP_INFO("context: %s:%d", __FILE__, __LINE__); \
|
||||
}
|
||||
|
||||
/*
|
||||
Checks if lex->no_write_to_binlog is set for statements that use LOCAL or
|
||||
NO_WRITE_TO_BINLOG.
|
||||
*/
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_) \
|
||||
if (WSREP(thd) && !thd->lex->no_write_to_binlog && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_SYNC_WAIT(thd_, before_) \
|
||||
{ if (WSREP_CLIENT(thd_) && \
|
||||
wsrep_sync_wait(thd_, before_)) goto wsrep_error_label; }
|
||||
|
||||
#else /* !WITH_WSREP */
|
||||
|
||||
|
@ -62,13 +64,11 @@
|
|||
* (e.g. embedded) */
|
||||
|
||||
#define IF_WSREP(A,B) B
|
||||
//#define DBUG_ASSERT_IF_WSREP(A)
|
||||
#define WSREP_DEBUG(...)
|
||||
//#define WSREP_INFO(...)
|
||||
//#define WSREP_WARN(...)
|
||||
#define WSREP_ERROR(...)
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) do { } while(0)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_, create_info_)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_CREATE(db_, table_, table_list_, create_info_)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_)
|
||||
#define WSREP_SYNC_WAIT(thd_, before_)
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
#endif /* WSREP_INCLUDED */
|
||||
|
|
|
@ -35,7 +35,9 @@
|
|||
#include "sql_handler.h" // mysql_ha_cleanup_no_free
|
||||
#include <my_sys.h>
|
||||
#include <strfunc.h> // strconvert()
|
||||
#include "wsrep_mysqld.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_server_state.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
static const char *stage_names[]=
|
||||
{"START", "FLUSH", "BLOCK_DDL", "BLOCK_COMMIT", "END", 0};
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "sp_head.h"
|
||||
#include "sql_show.h" // append_definer, append_identifier
|
||||
#include "mysql/psi/mysql_sp.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_trans_observer.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "set_var.h"
|
||||
#include "lock.h" // lock_object_name
|
||||
#include "mysql/psi/mysql_sp.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
/**
|
||||
@addtogroup Event_Scheduler
|
||||
|
|
|
@ -55,6 +55,9 @@
|
|||
#include "debug_sync.h"
|
||||
#include "sql_base.h"
|
||||
#include "sql_cte.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "mysql/service_wsrep.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
#ifdef NO_EMBEDDED_ACCESS_CHECKS
|
||||
#define sp_restore_security_context(A,B) while (0) {}
|
||||
|
|
|
@ -5308,8 +5308,8 @@ String *Item_temptable_rowid::val_str(String *str)
|
|||
}
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_server_state.h"
|
||||
/* Format is %d-%d-%llu */
|
||||
#define WSREP_MAX_WSREP_SERVER_GTID_STR_LEN 10+1+10+1+20
|
||||
|
||||
|
|
|
@ -79,7 +79,10 @@
|
|||
#include "sql_parse.h" // is_log_table_write_query
|
||||
#include "sql_handler.h"
|
||||
#include <hash.h>
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
@defgroup Locking Locking
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#define LOG_H
|
||||
|
||||
#include "handler.h" /* my_xid */
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "rpl_constants.h"
|
||||
|
||||
class Relay_log_info;
|
||||
|
|
|
@ -43,6 +43,9 @@
|
|||
#include <strfunc.h>
|
||||
#include "compat56.h"
|
||||
#include "sql_insert.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif /* WITH_WSREP */
|
||||
#else
|
||||
#include "mysqld_error.h"
|
||||
#endif /* MYSQL_CLIENT */
|
||||
|
|
|
@ -30,6 +30,9 @@
|
|||
#include <mysql/psi/mysql_mdl.h>
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
static PSI_memory_key key_memory_MDL_context_acquire_locks;
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@
|
|||
#ifdef WITH_WSREP
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_sst.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#endif /* WITH_WSREP */
|
||||
#include "proxy_protocol.h"
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include "sql_audit.h"
|
||||
#include "debug_sync.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
#include "password.h"
|
||||
|
||||
#include "sql_plugin_compat.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#define MAX_SCRAMBLE_LENGTH 1024
|
||||
|
||||
|
|
|
@ -347,6 +347,9 @@ TODO list:
|
|||
#include "probes_mysql.h"
|
||||
#include "transaction.h"
|
||||
#include "strfunc.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
const uchar *query_state_map;
|
||||
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
#ifdef WITH_WSREP
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#else
|
||||
static inline bool wsrep_is_bf_aborted(THD* thd) { return false; }
|
||||
#endif /* WITH_WSREP */
|
||||
|
|
|
@ -66,7 +66,8 @@ void set_thd_stage_info(void *thd,
|
|||
#include "my_apc.h"
|
||||
#include "rpl_gtid.h"
|
||||
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_on.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include <inttypes.h>
|
||||
/* wsrep-lib */
|
||||
|
@ -76,6 +77,11 @@ void set_thd_stage_info(void *thd,
|
|||
#include "wsrep_condition_variable.h"
|
||||
|
||||
class Wsrep_applier_service;
|
||||
enum wsrep_consistency_check_mode {
|
||||
NO_CONSISTENCY_CHECK,
|
||||
CONSISTENCY_CHECK_DECLARED,
|
||||
CONSISTENCY_CHECK_RUNNING,
|
||||
};
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
class Reprepare_observer;
|
||||
|
|
|
@ -37,6 +37,9 @@
|
|||
#include "sql_partition.h"
|
||||
#include "sql_partition_admin.h" // Sql_cmd_alter_table_*_part
|
||||
#include "event_parse_data.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "mysql/service_wsrep.h"
|
||||
#endif
|
||||
|
||||
void LEX::parse_error(uint err_number)
|
||||
{
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#endif
|
||||
#include "sql_base.h" // open_and_lock_tables
|
||||
#include "ddl_log.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#ifndef WITH_PARTITION_STORAGE_ENGINE
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include <mysql/plugin_data_type.h>
|
||||
#include <mysql/plugin_function.h>
|
||||
#include "sql_plugin_compat.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
static PSI_memory_key key_memory_plugin_mem_root;
|
||||
static PSI_memory_key key_memory_plugin_int_mem_root;
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
#include "debug_sync.h"
|
||||
#include "des_key_file.h"
|
||||
#include "transaction.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
static void disable_checkpoints(THD *thd);
|
||||
|
||||
|
|
|
@ -29,8 +29,9 @@
|
|||
#include "sql_trigger.h"
|
||||
#include "sql_base.h" // tdc_remove_table, lock_table_names,
|
||||
#include "sql_handler.h" // mysql_ha_rm_tables
|
||||
#include "sql_statistics.h"
|
||||
#include "sql_statistics.h"
|
||||
#include "ddl_log.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "debug.h"
|
||||
|
||||
/* used to hold table entries for as part of list of renamed temporary tables */
|
||||
|
|
|
@ -26,6 +26,9 @@
|
|||
#include "transaction.h"
|
||||
#include "lock.h"
|
||||
#include "sql_acl.h"
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
struct Field_definition
|
||||
{
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
#include "ddl_log.h"
|
||||
#include "debug.h" // debug_crash_here()
|
||||
#include <algorithm>
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include "debug_sync.h" // DEBUG_SYNC
|
||||
#include "debug.h" // debug_crash_here
|
||||
#include "mysql/psi/mysql_sp.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
|
|
|
@ -65,6 +65,9 @@
|
|||
#include "semisync_master.h"
|
||||
#include "semisync_slave.h"
|
||||
#include <ssl_compat.h>
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
#define PCRE2_STATIC 1 /* Important on Windows */
|
||||
#include "pcre2.h" /* pcre2 header file */
|
||||
|
|
|
@ -16,11 +16,11 @@
|
|||
#include "mariadb.h"
|
||||
#include "mysql/service_wsrep.h"
|
||||
#include "wsrep_binlog.h"
|
||||
#include "wsrep_priv.h"
|
||||
#include "log.h"
|
||||
#include "slave.h"
|
||||
#include "log_event.h"
|
||||
#include "wsrep_applier.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#include "transaction.h"
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "sys_vars_shared.h"
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_sst.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
extern char *my_bind_addr_str;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright 2018-2021 Codership Oy <info@codership.com>
|
||||
/* Copyright 2018-2022 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
|
||||
|
@ -20,6 +20,8 @@
|
|||
#include "wsrep_thd.h"
|
||||
#include "wsrep_xid.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
|
||||
#include "sql_base.h" /* close_temporary_table() */
|
||||
#include "sql_class.h" /* THD */
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "wsrep_schema.h"
|
||||
#include "wsrep_xid.h"
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#include "sql_class.h" /* THD */
|
||||
#include "transaction.h"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* Copyright 2008-2021 Codership Oy <http://www.codership.com>
|
||||
Copyright (c) 2020, 2021, MariaDB
|
||||
/* Copyright 2008-2022 Codership Oy <http://www.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
|
||||
|
@ -20,8 +19,6 @@
|
|||
#include <wsrep.h>
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
extern bool WSREP_ON_;
|
||||
extern bool WSREP_PROVIDER_EXISTS_;
|
||||
|
||||
#include <mysql/plugin.h>
|
||||
#include "mysql/service_wsrep.h"
|
||||
|
@ -40,21 +37,12 @@ typedef struct st_mysql_show_var SHOW_VAR;
|
|||
#include "wsrep/provider.hpp"
|
||||
#include "wsrep/streaming_context.hpp"
|
||||
#include "wsrep_api.h"
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#define WSREP_UNDEFINED_TRX_ID ULONGLONG_MAX
|
||||
|
||||
class set_var;
|
||||
class THD;
|
||||
|
||||
enum wsrep_consistency_check_mode {
|
||||
NO_CONSISTENCY_CHECK,
|
||||
CONSISTENCY_CHECK_DECLARED,
|
||||
CONSISTENCY_CHECK_RUNNING,
|
||||
};
|
||||
|
||||
// Global wsrep parameters
|
||||
|
||||
// MySQL wsrep options
|
||||
|
@ -81,7 +69,6 @@ extern ulong wsrep_max_ws_rows;
|
|||
extern const char* wsrep_notify_cmd;
|
||||
extern my_bool wsrep_certify_nonPK;
|
||||
extern long int wsrep_protocol_version;
|
||||
extern ulong wsrep_forced_binlog_format;
|
||||
extern my_bool wsrep_desync;
|
||||
extern ulong wsrep_reject_queries;
|
||||
extern my_bool wsrep_recovery;
|
||||
|
@ -101,7 +88,7 @@ extern ulong wsrep_running_applier_threads;
|
|||
extern ulong wsrep_running_rollbacker_threads;
|
||||
extern bool wsrep_new_cluster;
|
||||
extern bool wsrep_gtid_mode;
|
||||
extern uint wsrep_gtid_domain_id;
|
||||
extern uint32 wsrep_gtid_domain_id;
|
||||
extern ulonglong wsrep_mode;
|
||||
extern my_bool wsrep_strict_ddl;
|
||||
|
||||
|
@ -114,7 +101,7 @@ enum enum_wsrep_reject_types {
|
|||
enum enum_wsrep_OSU_method {
|
||||
WSREP_OSU_TOI,
|
||||
WSREP_OSU_RSU,
|
||||
WSREP_OSU_NONE
|
||||
WSREP_OSU_NONE,
|
||||
};
|
||||
|
||||
enum enum_wsrep_sync_wait {
|
||||
|
@ -237,68 +224,46 @@ extern bool wsrep_reload_ssl();
|
|||
|
||||
/* Other global variables */
|
||||
extern wsrep_seqno_t wsrep_locked_seqno;
|
||||
#define WSREP_ON unlikely(WSREP_ON_)
|
||||
|
||||
/* use xxxxxx_NNULL macros when thd pointer is guaranteed to be non-null to
|
||||
* avoid compiler warnings (GCC 6 and later) */
|
||||
|
||||
#define WSREP_NNULL(thd) \
|
||||
(WSREP_PROVIDER_EXISTS_ && thd->variables.wsrep_on)
|
||||
|
||||
#define WSREP(thd) \
|
||||
(thd && WSREP_NNULL(thd))
|
||||
|
||||
#define WSREP_CLIENT_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_CLIENT(thd) \
|
||||
(WSREP(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG(thd) \
|
||||
(WSREP(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_BINLOG_FORMAT(my_format) \
|
||||
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \
|
||||
wsrep_forced_binlog_format : my_format)
|
||||
|
||||
/* A wrapper function for MySQL log functions. The call will prefix
|
||||
the log message with WSREP and forward the result buffer to fun. */
|
||||
void WSREP_LOG(void (*fun)(const char* fmt, ...), const char* fmt, ...);
|
||||
|
||||
#define WSREP_DEBUG(...) \
|
||||
if (wsrep_debug) sql_print_information( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_INFO(...) sql_print_information( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_WARN(...) sql_print_warning( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_ERROR(...) sql_print_error( "WSREP: " __VA_ARGS__)
|
||||
#define WSREP_UNKNOWN(fmt, ...) WSREP_ERROR("UNKNOWN: " fmt, ##__VA_ARGS__)
|
||||
#define WSREP_SYNC_WAIT(thd_, before_) \
|
||||
{ if (WSREP_CLIENT(thd_) && \
|
||||
wsrep_sync_wait(thd_, before_)) goto wsrep_error_label; }
|
||||
|
||||
#define WSREP_LOG_CONFLICT_THD(thd, role) \
|
||||
WSREP_INFO( \
|
||||
"%s: \n " \
|
||||
" THD: %lu, mode: %s, state: %s, conflict: %s, seqno: %lld\n " \
|
||||
" SQL: %s", \
|
||||
role, \
|
||||
thd_get_thread_id(thd), \
|
||||
wsrep_thd_client_mode_str(thd), \
|
||||
wsrep_thd_client_state_str(thd), \
|
||||
wsrep_thd_transaction_state_str(thd), \
|
||||
wsrep_thd_trx_seqno(thd), \
|
||||
wsrep_thd_query(thd) \
|
||||
);
|
||||
#define WSREP_MYSQL_DB (char *)"mysql"
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \
|
||||
if (WSREP_ON && WSREP(thd) && wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_CREATE(db_, table_, table_list_, create_info_) \
|
||||
if (WSREP_ON && WSREP(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, nullptr, nullptr, create_info_))\
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_, create_info_) \
|
||||
if (WSREP(thd) && wsrep_thd_is_local(thd) && \
|
||||
wsrep_to_isolation_begin(thd, db_, table_, \
|
||||
table_list_, alter_info_, fk_tables_, create_info_))
|
||||
|
||||
#define WSREP_TO_ISOLATION_END \
|
||||
if ((WSREP(thd) && wsrep_thd_is_local_toi(thd)) || \
|
||||
wsrep_thd_is_in_rsu(thd)) \
|
||||
wsrep_to_isolation_end(thd);
|
||||
|
||||
/*
|
||||
Checks if lex->no_write_to_binlog is set for statements that use LOCAL or
|
||||
NO_WRITE_TO_BINLOG.
|
||||
*/
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_) \
|
||||
if (WSREP(thd) && !thd->lex->no_write_to_binlog \
|
||||
&& wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||
goto wsrep_error_label;
|
||||
|
||||
#define WSREP_LOG_CONFLICT(bf_thd, victim_thd, bf_abort) \
|
||||
if (wsrep_debug || wsrep_log_conflicts) \
|
||||
{ \
|
||||
WSREP_INFO("cluster conflict due to %s for threads:", \
|
||||
(bf_abort) ? "high priority abort" : "certification failure" \
|
||||
); \
|
||||
if (bf_thd) WSREP_LOG_CONFLICT_THD(bf_thd, "Winning thread"); \
|
||||
if (victim_thd) WSREP_LOG_CONFLICT_THD(victim_thd, "Victim thread"); \
|
||||
WSREP_INFO("context: %s:%d", __FILE__, __LINE__); \
|
||||
}
|
||||
|
||||
#define WSREP_PROVIDER_EXISTS (WSREP_PROVIDER_EXISTS_)
|
||||
|
||||
|
@ -312,9 +277,6 @@ static inline bool wsrep_cluster_address_exists()
|
|||
extern my_bool wsrep_ready_get();
|
||||
extern void wsrep_ready_wait();
|
||||
|
||||
class Ha_trx_info;
|
||||
struct THD_TRANS;
|
||||
|
||||
extern mysql_mutex_t LOCK_wsrep_ready;
|
||||
extern mysql_cond_t COND_wsrep_ready;
|
||||
extern mysql_mutex_t LOCK_wsrep_sst;
|
||||
|
@ -338,8 +300,10 @@ extern mysql_mutex_t LOCK_wsrep_donor_monitor;
|
|||
extern mysql_cond_t COND_wsrep_joiner_monitor;
|
||||
extern mysql_cond_t COND_wsrep_donor_monitor;
|
||||
|
||||
extern my_bool wsrep_emulate_bin_log;
|
||||
extern int wsrep_to_isolation;
|
||||
#ifdef GTID_SUPPORT
|
||||
extern rpl_sidno wsrep_sidno;
|
||||
#endif /* GTID_SUPPORT */
|
||||
extern my_bool wsrep_preordered_opt;
|
||||
|
||||
#ifdef HAVE_PSI_INTERFACE
|
||||
|
@ -383,8 +347,6 @@ extern PSI_thread_key key_wsrep_sst_donor_monitor;
|
|||
|
||||
struct TABLE_LIST;
|
||||
class Alter_info;
|
||||
struct HA_CREATE_INFO;
|
||||
|
||||
int wsrep_to_isolation_begin(THD *thd, const char *db_, const char *table_,
|
||||
const TABLE_LIST* table_list,
|
||||
const Alter_info* alter_info= nullptr,
|
||||
|
@ -638,12 +600,6 @@ wsrep::key wsrep_prepare_key_for_toi(const char* db, const char* table,
|
|||
/* These macros are needed to compile MariaDB without WSREP support
|
||||
* (e.g. embedded) */
|
||||
|
||||
#define WSREP_ON false
|
||||
#define WSREP(T) (0)
|
||||
#define WSREP_NNULL(T) (0)
|
||||
#define WSREP_EMULATE_BINLOG(thd) (0)
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) (0)
|
||||
#define WSREP_BINLOG_FORMAT(my_format) ((ulong)my_format)
|
||||
#define WSREP_PROVIDER_EXISTS (0)
|
||||
#define wsrep_emulate_bin_log (0)
|
||||
#define wsrep_to_isolation (0)
|
||||
|
@ -656,6 +612,12 @@ wsrep::key wsrep_prepare_key_for_toi(const char* db, const char* table,
|
|||
#define wsrep_create_appliers(X) do {} while(0)
|
||||
#define wsrep_should_replicate_ddl(X,Y) (1)
|
||||
#define wsrep_cluster_address_exists() (false)
|
||||
#define WSREP_MYSQL_DB (0)
|
||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) do { } while(0)
|
||||
#define WSREP_TO_ISOLATION_BEGIN_ALTER(db_, table_, table_list_, alter_info_, fk_tables_)
|
||||
#define WSREP_TO_ISOLATION_END
|
||||
#define WSREP_TO_ISOLATION_BEGIN_WRTCHK(db_, table_, table_list_)
|
||||
#define WSREP_SYNC_WAIT(thd_, before_)
|
||||
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
|
|
63
sql/wsrep_on.h
Normal file
63
sql/wsrep_on.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
/* Copyright 2022 Codership Oy <http://www.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
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */
|
||||
|
||||
#ifndef WSREP_ON_H
|
||||
#define WSREP_ON_H
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
|
||||
extern bool WSREP_ON_;
|
||||
extern bool WSREP_PROVIDER_EXISTS_;
|
||||
extern my_bool wsrep_emulate_bin_log;
|
||||
extern ulong wsrep_forced_binlog_format;
|
||||
|
||||
#define WSREP_ON unlikely(WSREP_ON_)
|
||||
|
||||
/* use xxxxxx_NNULL macros when thd pointer is guaranteed to be non-null to
|
||||
* avoid compiler warnings (GCC 6 and later) */
|
||||
|
||||
#define WSREP_NNULL(thd) \
|
||||
(WSREP_PROVIDER_EXISTS_ && thd->variables.wsrep_on)
|
||||
|
||||
#define WSREP(thd) \
|
||||
(thd && WSREP_NNULL(thd))
|
||||
|
||||
#define WSREP_CLIENT_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_CLIENT(thd) \
|
||||
(WSREP(thd) && thd->wsrep_client_thread)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) \
|
||||
(WSREP_NNULL(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_EMULATE_BINLOG(thd) \
|
||||
(WSREP(thd) && wsrep_emulate_bin_log)
|
||||
|
||||
#define WSREP_BINLOG_FORMAT(my_format) \
|
||||
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \
|
||||
wsrep_forced_binlog_format : my_format)
|
||||
|
||||
#else
|
||||
|
||||
#define WSREP_ON false
|
||||
#define WSREP(T) (0)
|
||||
#define WSREP_NNULL(T) (0)
|
||||
#define WSREP_EMULATE_BINLOG(thd) (0)
|
||||
#define WSREP_EMULATE_BINLOG_NNULL(thd) (0)
|
||||
#define WSREP_BINLOG_FORMAT(my_format) ((ulong)my_format)
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -19,13 +19,8 @@
|
|||
#ifndef WSREP_PRIV_H
|
||||
#define WSREP_PRIV_H
|
||||
|
||||
#include <my_global.h>
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_schema.h"
|
||||
|
||||
#include <log.h>
|
||||
#include <pthread.h>
|
||||
#include <cstdio>
|
||||
#include "wsrep_api.h"
|
||||
#include "wsrep/server_state.hpp"
|
||||
|
||||
my_bool wsrep_ready_set (my_bool x);
|
||||
|
||||
|
@ -39,7 +34,6 @@ wsrep_cb_status wsrep_sst_donate_cb (void* app_ctx,
|
|||
|
||||
extern wsrep_uuid_t local_uuid;
|
||||
extern wsrep_seqno_t local_seqno;
|
||||
extern Wsrep_schema* wsrep_schema;
|
||||
|
||||
// a helper function
|
||||
bool wsrep_sst_received(THD*, const wsrep_uuid_t&, wsrep_seqno_t,
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "wsrep_high_priority_service.h"
|
||||
#include "wsrep_storage_service.h"
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include "wsrep_utils.h"
|
||||
#include "wsrep_xid.h"
|
||||
#include "wsrep_thd.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_high_priority_service.h"
|
||||
#include "wsrep_storage_service.h"
|
||||
#include "wsrep_server_state.h"
|
||||
#include "transaction.h"
|
||||
#include "rpl_rli.h"
|
||||
#include "log_event.h"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include "wsrep_trans_observer.h"
|
||||
#include "wsrep_server_state.h"
|
||||
|
||||
ulong wsrep_reject_queries;
|
||||
|
||||
|
|
|
@ -37,7 +37,6 @@ Created Apr 25, 2012 Vasil Dimov
|
|||
# include "mysql/service_wsrep.h"
|
||||
# include "wsrep.h"
|
||||
# include "log.h"
|
||||
# include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
|
|
|
@ -565,9 +565,6 @@ bool thd_is_strict_mode(const MYSQL_THD thd);
|
|||
extern void mysql_bin_log_commit_pos(THD *thd, ulonglong *out_pos, const char **out_file);
|
||||
|
||||
struct trx_t;
|
||||
#ifdef WITH_WSREP
|
||||
#include <mysql/service_wsrep.h>
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
extern const struct _ft_vft ft_vft_result;
|
||||
|
||||
|
|
|
@ -47,7 +47,8 @@ Created 4/20/1996 Heikki Tuuri
|
|||
# include "btr0sea.h"
|
||||
#endif
|
||||
#ifdef WITH_WSREP
|
||||
#include "wsrep_mysqld.h"
|
||||
#include <wsrep.h>
|
||||
#include <mysql/service_wsrep.h>
|
||||
#endif /* WITH_WSREP */
|
||||
|
||||
/*************************************************************************
|
||||
|
|
|
@ -66,11 +66,6 @@ Created 9/17/2000 Heikki Tuuri
|
|||
#include <vector>
|
||||
#include <thread>
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
#include "mysql/service_wsrep.h"
|
||||
#include "wsrep.h"
|
||||
#include "wsrep_mysqld.h"
|
||||
#endif
|
||||
|
||||
/*******************************************************************//**
|
||||
Delays an INSERT, DELETE or UPDATE operation if the purge is lagging. */
|
||||
|
|
Loading…
Add table
Reference in a new issue