From 86a2e2ba9051888d457b6a5d0b4fb2879e24beb5 Mon Sep 17 00:00:00 2001 From: mkaruza Date: Wed, 22 Sep 2021 14:30:03 +0200 Subject: [PATCH] MDEV-22708 Assertion `!mysql_bin_log.is_open() || thd.is_current_stmt_binlog_format_row()' failed in Delayed_insert::handle_inserts and in Diagnostics_area::set_eof_status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Variable wsrep_forced_binlog_format has higher priority than binlog_format. In situation where STATEMENT is used and DELAYED INSERT is executing we should fall back to non-delay INSERT. Reviewed-by: Jan Lindström --- mysql-test/suite/galera/r/MDEV-22708.result | 11 +++++++++++ mysql-test/suite/galera/t/MDEV-22708.cnf | 4 ++++ mysql-test/suite/galera/t/MDEV-22708.test | 14 ++++++++++++++ sql/sql_insert.cc | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 mysql-test/suite/galera/r/MDEV-22708.result create mode 100644 mysql-test/suite/galera/t/MDEV-22708.cnf create mode 100644 mysql-test/suite/galera/t/MDEV-22708.test diff --git a/mysql-test/suite/galera/r/MDEV-22708.result b/mysql-test/suite/galera/r/MDEV-22708.result new file mode 100644 index 00000000000..a672ed7be0d --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-22708.result @@ -0,0 +1,11 @@ +connection node_2; +connection node_1; +SET @wsrep_forced_binlog_format_saved = @@GLOBAL.wsrep_forced_binlog_format; +SET @@GLOBAL.wsrep_forced_binlog_format = STATEMENT; +CREATE TABLE t1(c INT PRIMARY KEY) ENGINE = MyISAM; +INSERT DELAYED INTO t1 VALUES (1),(2),(3); +SELECT SLEEP(1); +SLEEP(1) +0 +DROP TABLE t1; +SET @@GLOBAL.wsrep_forced_binlog_format = @wsrep_forced_binlog_format_saved; diff --git a/mysql-test/suite/galera/t/MDEV-22708.cnf b/mysql-test/suite/galera/t/MDEV-22708.cnf new file mode 100644 index 00000000000..f7ac4f43082 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-22708.cnf @@ -0,0 +1,4 @@ +!include ../galera_2nodes.cnf + +[mysqld] +log-bin \ No newline at end of file diff --git a/mysql-test/suite/galera/t/MDEV-22708.test b/mysql-test/suite/galera/t/MDEV-22708.test new file mode 100644 index 00000000000..5f75715febf --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-22708.test @@ -0,0 +1,14 @@ +--source include/galera_cluster.inc +--source include/have_innodb.inc + +SET @wsrep_forced_binlog_format_saved = @@GLOBAL.wsrep_forced_binlog_format; +SET @@GLOBAL.wsrep_forced_binlog_format = STATEMENT; + +CREATE TABLE t1(c INT PRIMARY KEY) ENGINE = MyISAM; + +INSERT DELAYED INTO t1 VALUES (1),(2),(3); +SELECT SLEEP(1); + +DROP TABLE t1; + +SET @@GLOBAL.wsrep_forced_binlog_format = @wsrep_forced_binlog_format_saved; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index cbd815eb8fd..4dd0ec3375b 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -474,7 +474,7 @@ void upgrade_lock_type(THD *thd, thr_lock_type *lock_type, } bool log_on= (thd->variables.option_bits & OPTION_BIN_LOG); - if (global_system_variables.binlog_format == BINLOG_FORMAT_STMT && + if (thd->wsrep_binlog_format() == BINLOG_FORMAT_STMT && log_on && mysql_bin_log.is_open()) { /*