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) ...@@ -5964,11 +5964,8 @@ int THD::decide_logging_format(TABLE_LIST *tables)
} }
#endif /* WITH_WSREP */ #endif /* WITH_WSREP */
if ((WSREP_EMULATE_BINLOG_NNULL(this) || if (WSREP_EMULATE_BINLOG_NNULL(this) ||
(mysql_bin_log.is_open() && binlog_table_should_be_logged(&db))
(variables.option_bits & OPTION_BIN_LOG))) &&
!(wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
!binlog_filter->db_ok(db.str)))
{ {
if (is_bulk_op()) if (is_bulk_op())
{ {
...@@ -6492,6 +6489,21 @@ exit:; ...@@ -6492,6 +6489,21 @@ exit:;
} }
#ifndef MYSQL_CLIENT #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 Template member function for ensuring that there is an rows log
event of the apropriate type before proceeding. event of the apropriate type before proceeding.
......
...@@ -2699,6 +2699,7 @@ class THD: public THD_count, /* this must be first */ ...@@ -2699,6 +2699,7 @@ class THD: public THD_count, /* this must be first */
{ {
binlog_table_maps= 0; binlog_table_maps= 0;
} }
bool binlog_table_should_be_logged(const LEX_CSTRING *db);
#endif /* MYSQL_CLIENT */ #endif /* MYSQL_CLIENT */
......
...@@ -4802,10 +4802,7 @@ bool binlog_create_table(THD *thd, TABLE *table) ...@@ -4802,10 +4802,7 @@ bool binlog_create_table(THD *thd, TABLE *table)
if (thd->variables.binlog_format == BINLOG_FORMAT_ROW && if (thd->variables.binlog_format == BINLOG_FORMAT_ROW &&
table->s->tmp_table) table->s->tmp_table)
return 0; return 0;
if (!mysql_bin_log.is_open() || if (!thd->binlog_table_should_be_logged(&table->s->db))
!(thd->variables.option_bits & OPTION_BIN_LOG) ||
(thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
!binlog_filter->db_ok(table->s->db.str)))
return 0; return 0;
/* /*
...@@ -4834,10 +4831,7 @@ bool binlog_drop_table(THD *thd, TABLE *table) ...@@ -4834,10 +4831,7 @@ bool binlog_drop_table(THD *thd, TABLE *table)
/* Don't log temporary tables in row format */ /* Don't log temporary tables in row format */
if (!table->s->table_creation_was_logged) if (!table->s->table_creation_was_logged)
return 0; return 0;
if (!mysql_bin_log.is_open() || if (!thd->binlog_table_should_be_logged(&table->s->db))
!(thd->variables.option_bits & OPTION_BIN_LOG) ||
(thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT &&
!binlog_filter->db_ok(table->s->db.str)))
return 0; return 0;
query.append("DROP "); query.append("DROP ");
......
...@@ -10708,8 +10708,7 @@ do_continue:; ...@@ -10708,8 +10708,7 @@ do_continue:;
if ((table->file->partition_ht()->flags & if ((table->file->partition_ht()->flags &
HTON_TABLE_MAY_NOT_EXIST_ON_SLAVE) && HTON_TABLE_MAY_NOT_EXIST_ON_SLAVE) &&
(table->file->partition_ht() != new_table->file->partition_ht()) && (table->file->partition_ht() != new_table->file->partition_ht()) &&
(mysql_bin_log.is_open() && thd->binlog_table_should_be_logged(&new_table->s->db))
(thd->variables.option_bits & OPTION_BIN_LOG)))
{ {
/* /*
We new_table is marked as internal temp table, but we want to have 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