mirror of
https://github.com/MariaDB/server.git
synced 2026-05-08 08:04:29 +02:00
MDEV-22222: Assertion `state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay' failed in wsrep::transaction::before_rollback
LOCK TABLE will do implicit commit, we need to properly handle transaction after commit.
This commit is contained in:
parent
d4d42a6ad0
commit
2b8b7394a1
3 changed files with 39 additions and 0 deletions
|
|
@ -0,0 +1,12 @@
|
|||
connection node_2;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
LOCK TABLES t2 READ;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
LOCK TABLES t1 READ;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Check `LOCK TABLES` command with or without existing table in database.
|
||||
# Test case for MDEV-22222 / MDEV-22223
|
||||
#
|
||||
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
--error ER_NO_SUCH_TABLE
|
||||
LOCK TABLES t2 READ;
|
||||
|
||||
START TRANSACTION;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
LOCK TABLES t1 READ;
|
||||
UNLOCK TABLES;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
|
@ -4998,6 +4998,12 @@ mysql_execute_command(THD *thd)
|
|||
if (res)
|
||||
goto error;
|
||||
|
||||
#ifdef WITH_WSREP
|
||||
/* Clean up the previous transaction on implicit commit. */
|
||||
if (wsrep_on(thd) && !wsrep_not_committed(thd) && wsrep_after_statement(thd))
|
||||
goto error;
|
||||
#endif
|
||||
|
||||
/* We can't have any kind of table locks while backup is active */
|
||||
if (thd->current_backup_stage != BACKUP_FINISHED)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue