diff options
author | Monty <monty@mariadb.org> | 2020-06-18 11:49:07 +0300 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2020-06-19 12:03:13 +0300 |
commit | 00bd52b14722737b3e8d22dc8c3fcbeeab8efeef (patch) | |
tree | 5130d0a83ca2c92506614d3b0e0a4da7b439a42a | |
parent | 1a49c5eb4d11dd6a35d293856281239d8e459582 (diff) | |
download | mariadb-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.cc | 22 | ||||
-rw-r--r-- | sql/sql_class.h | 1 | ||||
-rw-r--r-- | sql/sql_insert.cc | 10 | ||||
-rw-r--r-- | sql/sql_table.cc | 3 |
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 |