Commit 00bd52b1 authored by Monty's avatar Monty

Added THD::binlog_table_should_be_logged() to simplify some code

- Added missing test for binlog_filter to ALTER TABLE
parent 1a49c5eb
......@@ -5964,11 +5964,8 @@ int THD::decide_logging_format(TABLE_LIST *tables)
}
#endif /* WITH_WSREP */
if ((WSREP_EMULATE_BINLOG_NNULL(this) ||
(mysql_bin_log.is_open() &&
(variables.option_bits & OPTION_BIN_LOG))) &&
!(wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
!binlog_filter->db_ok(db.str)))
if (WSREP_EMULATE_BINLOG_NNULL(this) ||
binlog_table_should_be_logged(&db))
{
if (is_bulk_op())
{
......@@ -6492,6 +6489,21 @@ exit:;
}
#ifndef MYSQL_CLIENT
/**
Check if we should log a table DDL to the binlog
@@return true yes
@@return false no
*/
bool THD::binlog_table_should_be_logged(const LEX_CSTRING *db)
{
return (mysql_bin_log.is_open() &&
(variables.option_bits & OPTION_BIN_LOG) &&
(wsrep_binlog_format() != BINLOG_FORMAT_STMT ||
binlog_filter->db_ok(db->str)));
}
/*
Template member function for ensuring that there is an rows log
event of the apropriate type before proceeding.
......
......@@ -2699,6 +2699,7 @@ class THD: public THD_count, /* this must be first */
{
binlog_table_maps= 0;
}
bool binlog_table_should_be_logged(const LEX_CSTRING *db);
#endif /* MYSQL_CLIENT */
......
......@@ -4802,10 +4802,7 @@ bool binlog_create_table(THD *thd, TABLE *table)
if (thd->variables.binlog_format == BINLOG_FORMAT_ROW &&
table->s->tmp_table)
return 0;
if (!mysql_bin_log.is_open() ||
!(thd->variables.option_bits & OPTION_BIN_LOG) ||
(thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
!binlog_filter->db_ok(table->s->db.str)))
if (!thd->binlog_table_should_be_logged(&table->s->db))
return 0;
/*
......@@ -4834,10 +4831,7 @@ bool binlog_drop_table(THD *thd, TABLE *table)
/* Don't log temporary tables in row format */
if (!table->s->table_creation_was_logged)
return 0;
if (!mysql_bin_log.is_open() ||
!(thd->variables.option_bits & OPTION_BIN_LOG) ||
(thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
!binlog_filter->db_ok(table->s->db.str)))
if (!thd->binlog_table_should_be_logged(&table->s->db))
return 0;
query.append("DROP ");
......
......@@ -10708,8 +10708,7 @@ do_continue:;
if ((table->file->partition_ht()->flags &
HTON_TABLE_MAY_NOT_EXIST_ON_SLAVE) &&
(table->file->partition_ht() != new_table->file->partition_ht()) &&
(mysql_bin_log.is_open() &&
(thd->variables.option_bits & OPTION_BIN_LOG)))
thd->binlog_table_should_be_logged(&new_table->s->db))
{
/*
We new_table is marked as internal temp table, but we want to have
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment