diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2022-01-09 09:37:44 +0200 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2022-01-11 08:11:48 +0200 |
commit | e0dc422eded88c59cebe5ec46dec2ddd9c0f7b5b (patch) | |
tree | f8c8fb5043eb4f1b7c75fb2c13ecaf9c5279f299 | |
parent | 10a86d86d5e87a2360957188bb59ecdd10bfda5d (diff) | |
download | mariadb-git-bb-10.6-galera-jan.tar.gz |
MDEV-25201 : Assertion `thd->wsrep_trx_meta.gtid.seqno == (-1)' failed in int wsrep_to_isolation_begin(THD*, const char*, const char*, const TABLE_LIST*, Alter_info*)bb-10.6-galera-jan
Test case does not assert anymore but works incorrectly. We should
not replicate PREPARE using TOI.
-rw-r--r-- | mysql-test/suite/galera/r/enforce_storage_engine2.result | 1 | ||||
-rw-r--r-- | mysql-test/suite/galera/r/galera_myisam_transactions.result | 17 | ||||
-rw-r--r-- | mysql-test/suite/galera/t/galera_myisam_transactions.test | 17 | ||||
-rw-r--r-- | sql/sql_base.cc | 2 |
4 files changed, 37 insertions, 0 deletions
diff --git a/mysql-test/suite/galera/r/enforce_storage_engine2.result b/mysql-test/suite/galera/r/enforce_storage_engine2.result index 8b174139eae..e0fb8d867dc 100644 --- a/mysql-test/suite/galera/r/enforce_storage_engine2.result +++ b/mysql-test/suite/galera/r/enforce_storage_engine2.result @@ -9,6 +9,7 @@ CREATE TABLE t1(i INT) ENGINE=INNODB; CREATE TABLE t2(i INT) ENGINE=MYISAM; Warnings: Note 1266 Using storage engine InnoDB for table 't2' +Note 1266 Using storage engine InnoDB for table 't2' connection node_2; SHOW TABLES; Tables_in_test diff --git a/mysql-test/suite/galera/r/galera_myisam_transactions.result b/mysql-test/suite/galera/r/galera_myisam_transactions.result index 091c5ffb6f6..fc8c95bd3e0 100644 --- a/mysql-test/suite/galera/r/galera_myisam_transactions.result +++ b/mysql-test/suite/galera/r/galera_myisam_transactions.result @@ -37,3 +37,20 @@ SELECT COUNT(*) = 0 FROM t2; COUNT(*) = 0 1 DROP TABLE t1, t2, t3; +SET SESSION lock_wait_timeout=2; +SET GLOBAL wsrep_mode = "REPLICATE_MYISAM,REPLICATE_ARIA"; +CREATE TEMPORARY TABLE t1 (i INT, PRIMARY KEY pk (i)) ENGINE=MyISAM; +Warnings: +Warning 1280 Name 'pk' ignored for PRIMARY key. +CREATE TEMPORARY TABLE t2 (i INT, PRIMARY KEY pk (i)) ENGINE=Aria; +Warnings: +Warning 1280 Name 'pk' ignored for PRIMARY key. +PREPARE stmt FROM "INSERT INTO t1 (id) SELECT * FROM (SELECT 4 AS i) AS y"; +PREPARE stmt2 FROM "INSERT INTO t2 (id) SELECT * FROM (SELECT 4 AS i) AS y"; +INSERT INTO t1 VALUES(4); +INSERT INTO t2 VALUES(4); +DEALLOCATE PREPARE stmt; +DEALLOCATE PREPARE stmt2; +COMMIT; +DROP TABLE t1,t2; +SET GLOBAL wsrep_mode=DEFAULT; diff --git a/mysql-test/suite/galera/t/galera_myisam_transactions.test b/mysql-test/suite/galera/t/galera_myisam_transactions.test index 00e0bf3fdca..6843764ccb4 100644 --- a/mysql-test/suite/galera/t/galera_myisam_transactions.test +++ b/mysql-test/suite/galera/t/galera_myisam_transactions.test @@ -34,3 +34,20 @@ SELECT COUNT(*) = 0 FROM t2; SELECT COUNT(*) = 0 FROM t2; DROP TABLE t1, t2, t3; + +# +# MDEV-25201 : Assertion `thd->wsrep_trx_meta.gtid.seqno == (-1)' failed in int wsrep_to_isolation_begin(THD*, const char*, const char*, const TABLE_LIST*, Alter_info*) +# +SET SESSION lock_wait_timeout=2; +SET GLOBAL wsrep_mode = "REPLICATE_MYISAM,REPLICATE_ARIA"; +CREATE TEMPORARY TABLE t1 (i INT, PRIMARY KEY pk (i)) ENGINE=MyISAM; +CREATE TEMPORARY TABLE t2 (i INT, PRIMARY KEY pk (i)) ENGINE=Aria; +PREPARE stmt FROM "INSERT INTO t1 (id) SELECT * FROM (SELECT 4 AS i) AS y"; +PREPARE stmt2 FROM "INSERT INTO t2 (id) SELECT * FROM (SELECT 4 AS i) AS y"; +INSERT INTO t1 VALUES(4); +INSERT INTO t2 VALUES(4); +DEALLOCATE PREPARE stmt; +DEALLOCATE PREPARE stmt2; +COMMIT; +DROP TABLE t1,t2; +SET GLOBAL wsrep_mode=DEFAULT; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 8ee1d19961f..509da905c63 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4458,6 +4458,7 @@ restart: wsrep_thd_is_local(thd) && tbl && tables == *start && + !thd->stmt_arena->is_stmt_prepare() && !wsrep_check_mode_after_open_table(thd, tbl->file->ht, tables)) { @@ -4474,6 +4475,7 @@ restart: { enum_sql_command sql_command= thd->lex->sql_command; bool is_dml_stmt= thd->get_command() != COM_STMT_PREPARE && + !thd->stmt_arena->is_stmt_prepare() && (sql_command == SQLCOM_INSERT || sql_command == SQLCOM_INSERT_SELECT || sql_command == SQLCOM_REPLACE || |