mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-25740 Assertion `!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row())' failed in void wsrep_commit_empty(THD*, bool)
Using ROLLBACK with `completion_type = CHAIN` result in start of transaction and implicit commit before previous WSREP internal data is cleared. Reviewed-by: Jan Lindström <jan.lindstrom@mariadb.com>
This commit is contained in:
9
mysql-test/suite/galera/r/MDEV-25740.result
Normal file
9
mysql-test/suite/galera/r/MDEV-25740.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
connection node_2;
|
||||||
|
connection node_1;
|
||||||
|
SET AUTOCOMMIT = OFF;
|
||||||
|
SET completion_type = CHAIN;
|
||||||
|
CREATE TABLE t1(f1 INT) ENGINE=InnoDB;
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
14
mysql-test/suite/galera/t/MDEV-25740.test
Normal file
14
mysql-test/suite/galera/t/MDEV-25740.test
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# When `completion_type = CHAIN` is used, transaction started should not have previous writeset.
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
SET AUTOCOMMIT = OFF;
|
||||||
|
SET completion_type = CHAIN;
|
||||||
|
CREATE TABLE t1(f1 INT) ENGINE=InnoDB;
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
ROLLBACK;
|
||||||
|
DROP TABLE t1;
|
@ -5750,6 +5750,11 @@ mysql_execute_command(THD *thd)
|
|||||||
/* Begin transaction with the same isolation level. */
|
/* Begin transaction with the same isolation level. */
|
||||||
if (tx_chain)
|
if (tx_chain)
|
||||||
{
|
{
|
||||||
|
#ifdef WITH_WSREP
|
||||||
|
/* If there are pending changes after rollback we should clear them */
|
||||||
|
if (wsrep_on(thd) && wsrep_has_changes(thd))
|
||||||
|
wsrep_after_statement(thd);
|
||||||
|
#endif
|
||||||
if (trans_begin(thd))
|
if (trans_begin(thd))
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user