mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 01:34:17 +01:00
Added THD::binlog_table_should_be_logged() to simplify some code
- Added missing test for binlog_filter to ALTER TABLE
This commit is contained in:
parent
1a49c5eb4d
commit
00bd52b147
4 changed files with 21 additions and 15 deletions
|
@ -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 @@ public:
|
|||
{
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue