summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2020-06-18 11:49:07 +0300
committerMonty <monty@mariadb.org>2020-06-19 12:03:13 +0300
commit00bd52b14722737b3e8d22dc8c3fcbeeab8efeef (patch)
tree5130d0a83ca2c92506614d3b0e0a4da7b439a42a
parent1a49c5eb4d11dd6a35d293856281239d8e459582 (diff)
downloadmariadb-git-00bd52b14722737b3e8d22dc8c3fcbeeab8efeef.tar.gz
Added THD::binlog_table_should_be_logged() to simplify some code
- Added missing test for binlog_filter to ALTER TABLE
-rw-r--r--sql/sql_class.cc22
-rw-r--r--sql/sql_class.h1
-rw-r--r--sql/sql_insert.cc10
-rw-r--r--sql/sql_table.cc3
4 files changed, 21 insertions, 15 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index c370008d96e..e11ca8c9c69 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -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.
diff --git a/sql/sql_class.h b/sql/sql_class.h
index ed4ebbbba3a..58a786ed33c 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -2699,6 +2699,7 @@ public:
{
binlog_table_maps= 0;
}
+ bool binlog_table_should_be_logged(const LEX_CSTRING *db);
#endif /* MYSQL_CLIENT */
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 1576a28f43a..48baabd8803 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -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 ");
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index e51ead077be..5c74cae713b 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -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