mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-36620 : galera_toi_ddl_nonconflicting test failure
Test changes only. Idea of the test is to test two concurrent nonconflicting DDL-clauses. Therefore, use debug sync to really execute two DDL-clauses as concurrently as Galera allows. Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
This commit is contained in:
committed by
Julius Goryavsky
parent
67b6f9f285
commit
fe25a30a92
@@ -1,29 +1,69 @@
|
|||||||
connection node_2;
|
connection node_2;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
|
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
|
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
|
||||||
|
connection node_1;
|
||||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER);
|
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER);
|
||||||
|
INSERT INTO t1(f2) SELECT seq FROM seq_1_to_1000;
|
||||||
|
connection node_2a;
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
connection node_1a;
|
||||||
|
# Block the applier on node_1 and issue a ddl from node_2
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync';
|
||||||
connection node_2;
|
connection node_2;
|
||||||
ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 123);;
|
# DDL 1
|
||||||
|
ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 VALUES (NULL, 10000, 10000);;
|
||||||
|
connection node_1a;
|
||||||
|
SET SESSION wsrep_on = 0;
|
||||||
|
SET SESSION wsrep_on = 1;
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
# This will block on acquiring total order isolation
|
||||||
connection node_1;
|
connection node_1;
|
||||||
|
# DDL 2
|
||||||
CREATE UNIQUE INDEX i1 ON t1(f2);;
|
CREATE UNIQUE INDEX i1 ON t1(f2);;
|
||||||
|
connection node_1a;
|
||||||
|
# Signal DDL 1
|
||||||
|
SET GLOBAL wsrep_provider_options = 'dbug=';
|
||||||
|
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync';
|
||||||
connection node_2;
|
connection node_2;
|
||||||
INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 234);
|
|
||||||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
|
||||||
COUNT(*) = 3
|
|
||||||
1
|
|
||||||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
|
||||||
COUNT(*) = 2
|
|
||||||
1
|
|
||||||
SELECT COUNT(*) = 2 FROM t1;
|
|
||||||
COUNT(*) = 2
|
|
||||||
1
|
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
connection node_2;
|
||||||
COUNT(*) = 3
|
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
1
|
EXPECT_3
|
||||||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
3
|
||||||
COUNT(*) = 2
|
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
1
|
EXPECT_2
|
||||||
SELECT COUNT(*) = 2 FROM t1;
|
2
|
||||||
COUNT(*) = 2
|
SHOW CREATE TABLE t1;
|
||||||
1
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`f2` int(11) DEFAULT NULL,
|
||||||
|
`f3` int(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`f1`),
|
||||||
|
UNIQUE KEY `i1` (`f2`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=2002 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||||
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
|
EXPECT_1001
|
||||||
|
1001
|
||||||
|
connection node_1;
|
||||||
|
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
|
EXPECT_3
|
||||||
|
3
|
||||||
|
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
|
EXPECT_2
|
||||||
|
2
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`f2` int(11) DEFAULT NULL,
|
||||||
|
`f3` int(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`f1`),
|
||||||
|
UNIQUE KEY `i1` (`f2`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=2047 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||||
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
|
EXPECT_1001
|
||||||
|
1001
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@@ -1,43 +1,81 @@
|
|||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_sequence.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
|
--source include/have_debug_sync.inc
|
||||||
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
#
|
#
|
||||||
# In this test, we simultaneously send two non-conflicting ALTER TABLE statements
|
# In this test, we simultaneously send two non-conflicting ALTER TABLE statements
|
||||||
#
|
#
|
||||||
|
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
|
||||||
|
--connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER);
|
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 INTEGER);
|
||||||
|
INSERT INTO t1(f2) SELECT seq FROM seq_1_to_1000;
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2a
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t1';
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--send ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 123);
|
--let $wait_condition = SELECT COUNT(*) = 1000 FROM t1;
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
--echo # Block the applier on node_1 and issue a ddl from node_2
|
||||||
|
SET SESSION wsrep_sync_wait=0;
|
||||||
|
--let $galera_sync_point = apply_monitor_slave_enter_sync
|
||||||
|
--source include/galera_set_sync_point.inc
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--echo # DDL 1
|
||||||
|
--send ALTER TABLE t1 ADD COLUMN f3 INTEGER; INSERT INTO t1 VALUES (NULL, 10000, 10000);
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
--source include/galera_wait_sync_point.inc
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
|
||||||
|
--echo # This will block on acquiring total order isolation
|
||||||
--connection node_1
|
--connection node_1
|
||||||
|
--echo # DDL 2
|
||||||
--send CREATE UNIQUE INDEX i1 ON t1(f2);
|
--send CREATE UNIQUE INDEX i1 ON t1(f2);
|
||||||
|
|
||||||
|
--connection node_1a
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'acquiring total order%' or STATE LIKE 'Waiting for table metadata%'
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--echo # Signal DDL 1
|
||||||
|
--source include/galera_clear_sync_point.inc
|
||||||
|
--let $galera_sync_point = apply_monitor_slave_enter_sync
|
||||||
|
--source include/galera_signal_sync_point.inc
|
||||||
|
|
||||||
--connection node_2
|
--connection node_2
|
||||||
--reap
|
--reap
|
||||||
INSERT INTO t1 (f1, f2) VALUES (DEFAULT, 234);
|
|
||||||
|
|
||||||
--let $wait_condition = SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
|
||||||
--source include/wait_condition.inc
|
|
||||||
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
|
||||||
--source include/wait_condition.inc
|
|
||||||
|
|
||||||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
|
||||||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
|
||||||
SELECT COUNT(*) = 2 FROM t1;
|
|
||||||
|
|
||||||
--connection node_1
|
--connection node_1
|
||||||
--reap
|
--reap
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
--let $wait_condition = SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
SELECT COUNT(*) = 2 FROM t1;
|
SHOW CREATE TABLE t1;
|
||||||
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
|
SELECT COUNT(*) AS EXPECT_2 FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 't1';
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
SELECT COUNT(*) AS EXPECT_1001 FROM t1;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
Reference in New Issue
Block a user