--- r/mysql-wsrep#33.result +++ r/mysql-wsrep#33,debug.reject @@ -698,12 +698,196 @@ 1 DROP TABLE t1; COMMIT; +Performing State Transfer on a server that has been killed and restarted +while a DDL was in progress on it +connection node_1; +CREATE TABLE t1 (id int not null primary key,f1 CHAR(255)) ENGINE=InnoDB; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 VALUES (1,'node1_committed_before'); +INSERT INTO t1 VALUES (2,'node1_committed_before'); +INSERT INTO t1 VALUES (3,'node1_committed_before'); +INSERT INTO t1 VALUES (4,'node1_committed_before'); +INSERT INTO t1 VALUES (5,'node1_committed_before'); +connection node_2; +START TRANSACTION; +INSERT INTO t1 VALUES (6,'node2_committed_before'); +INSERT INTO t1 VALUES (7,'node2_committed_before'); +INSERT INTO t1 VALUES (8,'node2_committed_before'); +INSERT INTO t1 VALUES (9,'node2_committed_before'); +INSERT INTO t1 VALUES (10,'node2_committed_before'); +COMMIT; +SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; +connection node_1; +ALTER TABLE t1 ADD COLUMN f2 INTEGER; +connection node_2; +SET wsrep_sync_wait = 0; +Killing server ... +connection node_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (id,f1) VALUES (11,'node1_committed_during'); +INSERT INTO t1 (id,f1) VALUES (12,'node1_committed_during'); +INSERT INTO t1 (id,f1) VALUES (13,'node1_committed_during'); +INSERT INTO t1 (id,f1) VALUES (14,'node1_committed_during'); +INSERT INTO t1 (id,f1) VALUES (15,'node1_committed_during'); +COMMIT; +START TRANSACTION; +INSERT INTO t1 (id,f1) VALUES (16,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (17,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (18,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (19,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (20,'node1_to_be_committed_after'); +connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (id,f1) VALUES (21,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (22,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (23,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (24,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (25,'node1_to_be_rollbacked_after'); +connection node_2; +Performing --wsrep-recover ... +connection node_2; +Starting server ... +Using --wsrep-start-position when starting mysqld ... +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (id,f1) VALUES (26,'node2_committed_after'); +INSERT INTO t1 (id,f1) VALUES (27,'node2_committed_after'); +INSERT INTO t1 (id,f1) VALUES (28,'node2_committed_after'); +INSERT INTO t1 (id,f1) VALUES (29,'node2_committed_after'); +INSERT INTO t1 (id,f1) VALUES (30,'node2_committed_after'); +COMMIT; +connection node_1; +INSERT INTO t1 (id,f1) VALUES (31,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (32,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (33,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (34,'node1_to_be_committed_after'); +INSERT INTO t1 (id,f1) VALUES (35,'node1_to_be_committed_after'); +COMMIT; +SET AUTOCOMMIT=OFF; +START TRANSACTION; +INSERT INTO t1 (id,f1) VALUES (36,'node1_committed_after'); +INSERT INTO t1 (id,f1) VALUES (37,'node1_committed_after'); +INSERT INTO t1 (id,f1) VALUES (38,'node1_committed_after'); +INSERT INTO t1 (id,f1) VALUES (39,'node1_committed_after'); +INSERT INTO t1 (id,f1) VALUES (40,'node1_committed_after'); +COMMIT; +connection node_1a_galera_st_kill_slave_ddl; +INSERT INTO t1 (id,f1) VALUES (41,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (42,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (43,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (44,'node1_to_be_rollbacked_after'); +INSERT INTO t1 (id,f1) VALUES (45,'node1_to_be_rollbacked_after'); +ROLLBACK; +SET AUTOCOMMIT=ON; +SET SESSION wsrep_sync_wait=15; +SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; +EXPECT_3 +3 +SELECT COUNT(*) AS EXPECT_35 FROM t1; +EXPECT_35 +35 +SELECT * FROM t1; +id f1 f2 +1 node1_committed_before NULL +2 node1_committed_before NULL +3 node1_committed_before NULL +4 node1_committed_before NULL +5 node1_committed_before NULL +6 node2_committed_before NULL +7 node2_committed_before NULL +8 node2_committed_before NULL +9 node2_committed_before NULL +10 node2_committed_before NULL +11 node1_committed_during NULL +12 node1_committed_during NULL +13 node1_committed_during NULL +14 node1_committed_during NULL +15 node1_committed_during NULL +16 node1_to_be_committed_after NULL +17 node1_to_be_committed_after NULL +18 node1_to_be_committed_after NULL +19 node1_to_be_committed_after NULL +20 node1_to_be_committed_after NULL +26 node2_committed_after NULL +27 node2_committed_after NULL +28 node2_committed_after NULL +29 node2_committed_after NULL +30 node2_committed_after NULL +31 node1_to_be_committed_after NULL +32 node1_to_be_committed_after NULL +33 node1_to_be_committed_after NULL +34 node1_to_be_committed_after NULL +35 node1_to_be_committed_after NULL +36 node1_committed_after NULL +37 node1_committed_after NULL +38 node1_committed_after NULL +39 node1_committed_after NULL +40 node1_committed_after NULL +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +COMMIT; +connection node_1; +SET AUTOCOMMIT=ON; +SET SESSION wsrep_sync_wait=15; +SELECT COUNT(*) AS EXPECT_3 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; +EXPECT_3 +3 +SELECT COUNT(*) AS EXPECT_35 FROM t1; +EXPECT_35 +35 +SELECT * FROM t1; +id f1 f2 +1 node1_committed_before NULL +2 node1_committed_before NULL +3 node1_committed_before NULL +4 node1_committed_before NULL +5 node1_committed_before NULL +6 node2_committed_before NULL +7 node2_committed_before NULL +8 node2_committed_before NULL +9 node2_committed_before NULL +10 node2_committed_before NULL +11 node1_committed_during NULL +12 node1_committed_during NULL +13 node1_committed_during NULL +14 node1_committed_during NULL +15 node1_committed_during NULL +16 node1_to_be_committed_after NULL +17 node1_to_be_committed_after NULL +18 node1_to_be_committed_after NULL +19 node1_to_be_committed_after NULL +20 node1_to_be_committed_after NULL +26 node2_committed_after NULL +27 node2_committed_after NULL +28 node2_committed_after NULL +29 node2_committed_after NULL +30 node2_committed_after NULL +31 node1_to_be_committed_after NULL +32 node1_to_be_committed_after NULL +33 node1_to_be_committed_after NULL +34 node1_to_be_committed_after NULL +35 node1_to_be_committed_after NULL +36 node1_committed_after NULL +37 node1_committed_after NULL +38 node1_committed_after NULL +39 node1_committed_after NULL +40 node1_committed_after NULL +SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +COUNT(*) = 0 +1 +DROP TABLE t1; +COMMIT; +SET GLOBAL debug_dbug = $debug_orig; connection node_2; connection node_1; -CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); +CALL mtr.add_suppression("Slave SQL: Error 'The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); DROP USER sst; connection node_2; -CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); +CALL mtr.add_suppression("Slave SQL: Error 'The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement' on query"); CALL mtr.add_suppression("InnoDB: Error: Table \"mysql\"\\.\"innodb_index_stats\" not found"); CALL mtr.add_suppression("Can't open and lock time zone table"); CALL mtr.add_suppression("Can't open and lock privilege tables");