diff options
Diffstat (limited to 'mysql-test/suite/galera/t/MW-286.test')
-rw-r--r-- | mysql-test/suite/galera/t/MW-286.test | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/mysql-test/suite/galera/t/MW-286.test b/mysql-test/suite/galera/t/MW-286.test index 426b4493bb7..9c849861001 100644 --- a/mysql-test/suite/galera/t/MW-286.test +++ b/mysql-test/suite/galera/t/MW-286.test @@ -4,31 +4,55 @@ --source include/galera_cluster.inc --source include/have_innodb.inc ---source include/big_test.inc - +--source include/have_debug_sync.inc + --connection node_1 -CREATE TABLE ten (f1 INTEGER) Engine=InnoDB; -INSERT INTO ten VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); CREATE TABLE t1 (f1 INTEGER) Engine=InnoDB; - # Insert some values before the ALTER -INSERT INTO t1 (f1) SELECT 000000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5; - -# Insert more values while the ALTER is running ---send INSERT INTO t1 (f1) SELECT 100000 + (10000 * a1.f1) + (1000 * a2.f1) + (100 * a3.f1) + (10 * a4.f1) + a5.f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5; +INSERT INTO t1 (f1) VALUES (1), (2), (3); +# +# run ALTER with no wsrep replication +# --connection node_2 SET GLOBAL wsrep_desync = TRUE; SET wsrep_on = FALSE; ---error 0,ER_QUERY_INTERRUPTED -ALTER TABLE t1 ADD PRIMARY KEY (f1); +# +# stop ALTER processing after it has acquired exclusive MDL lock +# +SET SESSION debug_sync = "alter_table_inplace_after_lock_upgrade SIGNAL mdl_locked WAIT_FOR mdl_continue"; + +--send ALTER TABLE t1 ADD PRIMARY KEY (f1); + +--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 +--connection node_2a +SET SESSION debug_sync = "now WAIT_FOR mdl_locked"; + +# +# replicate conflicting insert from node_1 +# +--connection node_1 +INSERT INTO t1(f1) VALUES (11); + +# +# let parked ALTER processing to continue after the conflict +# +--connection node_2a +SET debug_sync = "now SIGNAL mdl_continue"; +SET debug_sync='RESET'; + +# +# ALTER should have been aborted with query interupted error code +# +--connection node_2 +--error ER_QUERY_INTERRUPTED +--reap SET wsrep_on = TRUE; SET GLOBAL wsrep_desync = FALSE; --connection node_1 -reap; + DROP TABLE t1; -DROP TABLE ten; |