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
@ -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:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#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 @@ public:
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
/* 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:;
|
|||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user