mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
cleanup: simplify the usage of WSREP_FORMAT macro
This commit is contained in:
@ -22,14 +22,6 @@
|
|||||||
#define IF_WSREP(A,B) A
|
#define IF_WSREP(A,B) A
|
||||||
#define DBUG_ASSERT_IF_WSREP(A) DBUG_ASSERT(A)
|
#define DBUG_ASSERT_IF_WSREP(A) DBUG_ASSERT(A)
|
||||||
|
|
||||||
#if !defined(EMBEDDED_LIBRARY)
|
|
||||||
#define WSREP_FORMAT(my_format) \
|
|
||||||
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) ? \
|
|
||||||
((enum enum_binlog_format)wsrep_forced_binlog_format) : my_format)
|
|
||||||
#else
|
|
||||||
#define WSREP_FORMAT(my_format) my_format
|
|
||||||
#endif /* && !EMBEDDED_LIBRARY */
|
|
||||||
|
|
||||||
#define WSREP_MYSQL_DB (char *)"mysql"
|
#define WSREP_MYSQL_DB (char *)"mysql"
|
||||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \
|
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_) \
|
||||||
if (WSREP_ON && WSREP(thd) && wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
if (WSREP_ON && WSREP(thd) && wsrep_to_isolation_begin(thd, db_, table_, table_list_)) \
|
||||||
@ -52,7 +44,6 @@
|
|||||||
#define WSREP_INFO(...)
|
#define WSREP_INFO(...)
|
||||||
#define WSREP_WARN(...)
|
#define WSREP_WARN(...)
|
||||||
#define WSREP_ERROR(...)
|
#define WSREP_ERROR(...)
|
||||||
#define WSREP_FORMAT(my_format) my_format
|
|
||||||
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_)
|
#define WSREP_TO_ISOLATION_BEGIN(db_, table_, table_list_)
|
||||||
#define WSREP_TO_ISOLATION_END
|
#define WSREP_TO_ISOLATION_END
|
||||||
#endif
|
#endif
|
||||||
|
10
sql/log.cc
10
sql/log.cc
@ -1910,12 +1910,12 @@ static bool trans_cannot_safely_rollback(THD *thd, bool all)
|
|||||||
|
|
||||||
return ((thd->variables.option_bits & OPTION_KEEP_LOG) ||
|
return ((thd->variables.option_bits & OPTION_KEEP_LOG) ||
|
||||||
(trans_has_updated_non_trans_table(thd) &&
|
(trans_has_updated_non_trans_table(thd) &&
|
||||||
WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) == BINLOG_FORMAT_STMT) ||
|
thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT) ||
|
||||||
(cache_mngr->trx_cache.changes_to_non_trans_temp_table() &&
|
(cache_mngr->trx_cache.changes_to_non_trans_temp_table() &&
|
||||||
WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) == BINLOG_FORMAT_MIXED) ||
|
thd->wsrep_binlog_format() == BINLOG_FORMAT_MIXED) ||
|
||||||
(trans_has_updated_non_trans_table(thd) &&
|
(trans_has_updated_non_trans_table(thd) &&
|
||||||
ending_single_stmt_trans(thd,all) &&
|
ending_single_stmt_trans(thd,all) &&
|
||||||
WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) == BINLOG_FORMAT_MIXED));
|
thd->wsrep_binlog_format() == BINLOG_FORMAT_MIXED));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2064,9 +2064,9 @@ static int binlog_rollback(handlerton *hton, THD *thd, bool all)
|
|||||||
else if (ending_trans(thd, all) ||
|
else if (ending_trans(thd, all) ||
|
||||||
(!(thd->variables.option_bits & OPTION_KEEP_LOG) &&
|
(!(thd->variables.option_bits & OPTION_KEEP_LOG) &&
|
||||||
(!stmt_has_updated_non_trans_table(thd) ||
|
(!stmt_has_updated_non_trans_table(thd) ||
|
||||||
WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) != BINLOG_FORMAT_STMT) &&
|
thd->wsrep_binlog_format() != BINLOG_FORMAT_STMT) &&
|
||||||
(!cache_mngr->trx_cache.changes_to_non_trans_temp_table() ||
|
(!cache_mngr->trx_cache.changes_to_non_trans_temp_table() ||
|
||||||
WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) != BINLOG_FORMAT_MIXED)))
|
thd->wsrep_binlog_format() != BINLOG_FORMAT_MIXED)))
|
||||||
error= binlog_truncate_trx_cache(thd, cache_mngr, all);
|
error= binlog_truncate_trx_cache(thd, cache_mngr, all);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3557,8 +3557,7 @@ thr_lock_type read_lock_type_for_table(THD *thd,
|
|||||||
at THD::variables::sql_log_bin member.
|
at THD::variables::sql_log_bin member.
|
||||||
*/
|
*/
|
||||||
bool log_on= mysql_bin_log.is_open() && thd->variables.sql_log_bin;
|
bool log_on= mysql_bin_log.is_open() && thd->variables.sql_log_bin;
|
||||||
ulong binlog_format= thd->variables.binlog_format;
|
if ((log_on == FALSE) || (thd->wsrep_binlog_format() == BINLOG_FORMAT_ROW) ||
|
||||||
if ((log_on == FALSE) || (WSREP_FORMAT((enum enum_binlog_format) binlog_format) == BINLOG_FORMAT_ROW) ||
|
|
||||||
(table_list->table->s->table_category == TABLE_CATEGORY_LOG) ||
|
(table_list->table->s->table_category == TABLE_CATEGORY_LOG) ||
|
||||||
(table_list->table->s->table_category == TABLE_CATEGORY_PERFORMANCE) ||
|
(table_list->table->s->table_category == TABLE_CATEGORY_PERFORMANCE) ||
|
||||||
!(is_update_query(prelocking_ctx->sql_command) ||
|
!(is_update_query(prelocking_ctx->sql_command) ||
|
||||||
@ -5327,7 +5326,7 @@ bool lock_tables(THD *thd, TABLE_LIST *tables, uint count,
|
|||||||
We can solve these problems in mixed mode by switching to binlogging
|
We can solve these problems in mixed mode by switching to binlogging
|
||||||
if at least one updated table is used by sub-statement
|
if at least one updated table is used by sub-statement
|
||||||
*/
|
*/
|
||||||
if (WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) != BINLOG_FORMAT_ROW && tables &&
|
if (thd->wsrep_binlog_format() != BINLOG_FORMAT_ROW && tables &&
|
||||||
has_write_table_with_auto_increment(thd->lex->first_not_own_table()))
|
has_write_table_with_auto_increment(thd->lex->first_not_own_table()))
|
||||||
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS);
|
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS);
|
||||||
}
|
}
|
||||||
|
@ -4350,7 +4350,7 @@ extern "C" int thd_binlog_format(const MYSQL_THD thd)
|
|||||||
{
|
{
|
||||||
if (((WSREP(thd) && wsrep_emulate_bin_log) || mysql_bin_log.is_open()) &&
|
if (((WSREP(thd) && wsrep_emulate_bin_log) || mysql_bin_log.is_open()) &&
|
||||||
thd->variables.option_bits & OPTION_BIN_LOG)
|
thd->variables.option_bits & OPTION_BIN_LOG)
|
||||||
return (int) WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format);
|
return (int) thd->wsrep_binlog_format();
|
||||||
else
|
else
|
||||||
return BINLOG_FORMAT_UNSPEC;
|
return BINLOG_FORMAT_UNSPEC;
|
||||||
}
|
}
|
||||||
@ -5080,7 +5080,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
binlog by filtering rules.
|
binlog by filtering rules.
|
||||||
*/
|
*/
|
||||||
if (mysql_bin_log.is_open() && (variables.option_bits & OPTION_BIN_LOG) &&
|
if (mysql_bin_log.is_open() && (variables.option_bits & OPTION_BIN_LOG) &&
|
||||||
!(WSREP_FORMAT((enum enum_binlog_format) variables.binlog_format) == BINLOG_FORMAT_STMT &&
|
!(wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
|
||||||
!binlog_filter->db_ok(db)))
|
!binlog_filter->db_ok(db)))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -5290,7 +5290,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
*/
|
*/
|
||||||
my_error((error= ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE), MYF(0));
|
my_error((error= ER_BINLOG_ROW_INJECTION_AND_STMT_ENGINE), MYF(0));
|
||||||
}
|
}
|
||||||
else if (WSREP_FORMAT((enum enum_binlog_format) variables.binlog_format) == BINLOG_FORMAT_ROW &&
|
else if (wsrep_binlog_format() == BINLOG_FORMAT_ROW &&
|
||||||
sqlcom_can_generate_row_events(this))
|
sqlcom_can_generate_row_events(this))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -5319,7 +5319,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* binlog_format = STATEMENT */
|
/* binlog_format = STATEMENT */
|
||||||
if (WSREP_FORMAT((enum enum_binlog_format) variables.binlog_format) == BINLOG_FORMAT_STMT)
|
if (wsrep_binlog_format() == BINLOG_FORMAT_STMT)
|
||||||
{
|
{
|
||||||
if (lex->is_stmt_row_injection())
|
if (lex->is_stmt_row_injection())
|
||||||
{
|
{
|
||||||
@ -5451,7 +5451,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
|
|||||||
"and binlog_filter->db_ok(db) = %d",
|
"and binlog_filter->db_ok(db) = %d",
|
||||||
mysql_bin_log.is_open(),
|
mysql_bin_log.is_open(),
|
||||||
(variables.option_bits & OPTION_BIN_LOG),
|
(variables.option_bits & OPTION_BIN_LOG),
|
||||||
(uint) WSREP_FORMAT((enum enum_binlog_format) variables.binlog_format),
|
(uint) wsrep_binlog_format(),
|
||||||
binlog_filter->db_ok(db)));
|
binlog_filter->db_ok(db)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3286,8 +3286,7 @@ public:
|
|||||||
tests fail and so force them to propagate the
|
tests fail and so force them to propagate the
|
||||||
lex->binlog_row_based_if_mixed upwards to the caller.
|
lex->binlog_row_based_if_mixed upwards to the caller.
|
||||||
*/
|
*/
|
||||||
if ((WSREP_FORMAT((enum enum_binlog_format) variables.binlog_format) ==
|
if ((wsrep_binlog_format() == BINLOG_FORMAT_MIXED) && (in_sub_stmt == 0))
|
||||||
BINLOG_FORMAT_MIXED) && (in_sub_stmt == 0))
|
|
||||||
set_current_stmt_binlog_format_row();
|
set_current_stmt_binlog_format_row();
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@ -3338,8 +3337,7 @@ public:
|
|||||||
show_system_thread(system_thread)));
|
show_system_thread(system_thread)));
|
||||||
if (in_sub_stmt == 0)
|
if (in_sub_stmt == 0)
|
||||||
{
|
{
|
||||||
if (WSREP_FORMAT((enum enum_binlog_format) variables.binlog_format) ==
|
if (wsrep_binlog_format() == BINLOG_FORMAT_ROW)
|
||||||
BINLOG_FORMAT_ROW)
|
|
||||||
set_current_stmt_binlog_format_row();
|
set_current_stmt_binlog_format_row();
|
||||||
else if (temporary_tables == NULL)
|
else if (temporary_tables == NULL)
|
||||||
set_current_stmt_binlog_format_stmt();
|
set_current_stmt_binlog_format_stmt();
|
||||||
@ -3748,6 +3746,11 @@ public:
|
|||||||
(rgi_slave && rgi_have_temporary_tables()));
|
(rgi_slave && rgi_have_temporary_tables()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline ulong wsrep_binlog_format() const
|
||||||
|
{
|
||||||
|
return WSREP_FORMAT(variables.binlog_format);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef WITH_WSREP
|
#ifdef WITH_WSREP
|
||||||
const bool wsrep_applier; /* dedicated slave applier thread */
|
const bool wsrep_applier; /* dedicated slave applier thread */
|
||||||
bool wsrep_applier_closing; /* applier marked to close */
|
bool wsrep_applier_closing; /* applier marked to close */
|
||||||
|
@ -3132,9 +3132,8 @@ mysql_execute_command(THD *thd)
|
|||||||
raise a warning, as it may cause problems
|
raise a warning, as it may cause problems
|
||||||
(see 'NAME_CONST issues' in 'Binary Logging of Stored Programs')
|
(see 'NAME_CONST issues' in 'Binary Logging of Stored Programs')
|
||||||
*/
|
*/
|
||||||
if (thd->query_name_consts &&
|
if (thd->query_name_consts && mysql_bin_log.is_open() &&
|
||||||
mysql_bin_log.is_open() &&
|
thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
|
||||||
WSREP_FORMAT((enum enum_binlog_format) thd->variables.binlog_format) == BINLOG_FORMAT_STMT &&
|
|
||||||
!mysql_bin_log.is_query_in_union(thd, thd->query_id))
|
!mysql_bin_log.is_query_in_union(thd, thd->query_id))
|
||||||
{
|
{
|
||||||
List_iterator_fast<Item> it(select_lex->item_list);
|
List_iterator_fast<Item> it(select_lex->item_list);
|
||||||
|
@ -169,8 +169,11 @@ extern wsrep_seqno_t wsrep_locked_seqno;
|
|||||||
#define WSREP_EMULATE_BINLOG(thd) \
|
#define WSREP_EMULATE_BINLOG(thd) \
|
||||||
(WSREP(thd) && wsrep_emulate_bin_log)
|
(WSREP(thd) && wsrep_emulate_bin_log)
|
||||||
|
|
||||||
// MySQL logging functions don't seem to understand long long length modifer.
|
#define WSREP_FORMAT(my_format) \
|
||||||
// This is a workaround. It also prefixes all messages with "WSREP"
|
((wsrep_forced_binlog_format != BINLOG_FORMAT_UNSPEC) \
|
||||||
|
? wsrep_forced_binlog_format : (ulong)(my_format))
|
||||||
|
|
||||||
|
// prefix all messages with "WSREP"
|
||||||
#define WSREP_LOG(fun, ...) \
|
#define WSREP_LOG(fun, ...) \
|
||||||
do { \
|
do { \
|
||||||
char msg[1024] = {'\0'}; \
|
char msg[1024] = {'\0'}; \
|
||||||
@ -309,6 +312,7 @@ int wsrep_create_trigger_query(THD *thd, uchar** buf, size_t* buf_len);
|
|||||||
#define WSREP_ON (0)
|
#define WSREP_ON (0)
|
||||||
#define WSREP_EMULATE_BINLOG(thd) (0)
|
#define WSREP_EMULATE_BINLOG(thd) (0)
|
||||||
#define WSREP_CLIENT(thd) (0)
|
#define WSREP_CLIENT(thd) (0)
|
||||||
|
#define WSREP_FORMAT(my_format) ((ulong)my_format)
|
||||||
#define wsrep_emulate_bin_log (0)
|
#define wsrep_emulate_bin_log (0)
|
||||||
#define wsrep_xid_seqno(X) (0)
|
#define wsrep_xid_seqno(X) (0)
|
||||||
#define wsrep_to_isolation (0)
|
#define wsrep_to_isolation (0)
|
||||||
|
Reference in New Issue
Block a user