summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormkaruza <mario.karuza@galeracluster.com>2021-09-22 14:30:03 +0200
committerJan Lindström <jan.lindstrom@mariadb.com>2021-10-01 11:38:14 +0300
commit86a2e2ba9051888d457b6a5d0b4fb2879e24beb5 (patch)
tree86b34376e1556500c22b7b2358228ee8aec0ec3a
parent2f5ae0da71d097fa5619ece6aa5dac075282d519 (diff)
downloadmariadb-git-86a2e2ba9051888d457b6a5d0b4fb2879e24beb5.tar.gz
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
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 <jan.lindstrom@mariadb.com>
-rw-r--r--mysql-test/suite/galera/r/MDEV-22708.result11
-rw-r--r--mysql-test/suite/galera/t/MDEV-22708.cnf4
-rw-r--r--mysql-test/suite/galera/t/MDEV-22708.test14
-rw-r--r--sql/sql_insert.cc2
4 files changed, 30 insertions, 1 deletions
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())
{
/*