include/rpl_init.inc [topology=1->2->3->4] ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB; CREATE TABLE t1 (a int PRIMARY KEY, b INT) ENGINE=InnoDB; SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads; include/stop_slave.inc SET GLOBAL slave_parallel_threads=10; CHANGE MASTER TO master_use_gtid=slave_pos; SET @old_parallel_mode=@@GLOBAL.slave_parallel_mode; SET GLOBAL slave_parallel_mode='optimistic'; SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads; include/stop_slave.inc SET GLOBAL slave_parallel_threads=10; CHANGE MASTER TO master_use_gtid=slave_pos; SET @old_parallel_mode=@@GLOBAL.slave_parallel_mode; SET GLOBAL slave_parallel_mode='optimistic'; SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads; include/stop_slave.inc SET GLOBAL slave_parallel_threads=10; CHANGE MASTER TO master_use_gtid=slave_pos; SET @old_parallel_mode=@@GLOBAL.slave_parallel_mode; SET GLOBAL slave_parallel_mode='optimistic'; *** MDEV-6676: Test that @@skip_parallel_replication is preserved in slave binlog *** INSERT INTO t1 VALUES(1,1); BEGIN; INSERT INTO t1 VALUES(2,1); INSERT INTO t1 VALUES(3,1); COMMIT; SET SESSION skip_parallel_replication=1; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; UPDATE t1 SET b=b+1 WHERE a=2; SET SESSION skip_parallel_replication=0; SELECT * FROM t1 ORDER BY a; a b 1 1 2 11 3 1 include/save_master_gtid.inc include/start_slave.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a b 1 1 2 11 3 1 status Ok, no retry include/start_slave.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a b 1 1 2 11 3 1 status Ok, no retry include/start_slave.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a b 1 1 2 11 3 1 status Ok, no retry *** MDEV-6676: Test that the FL_WAITED flag in GTID is preserved in slave binlog *** include/stop_slave.inc CHANGE MASTER TO master_use_gtid=slave_pos; SET GLOBAL slave_parallel_mode='optimistic'; include/stop_slave.inc CHANGE MASTER TO master_use_gtid=slave_pos; SET GLOBAL slave_parallel_mode='optimistic'; include/stop_slave.inc CHANGE MASTER TO master_use_gtid=slave_pos; SET GLOBAL slave_parallel_mode='optimistic'; BEGIN; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="thd_report_wait_for SIGNAL waiting1"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting1"; SET debug_sync="thd_report_wait_for SIGNAL waiting2"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting2"; SET debug_sync="thd_report_wait_for SIGNAL waiting3"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting3"; SET debug_sync="thd_report_wait_for SIGNAL waiting4"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting4"; SET debug_sync="thd_report_wait_for SIGNAL waiting5"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting5"; SET debug_sync="thd_report_wait_for SIGNAL waiting6"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting6"; SET debug_sync="thd_report_wait_for SIGNAL waiting7"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting7"; SET debug_sync="thd_report_wait_for SIGNAL waiting8"; UPDATE t1 SET b=b+1 WHERE a=2; SET debug_sync="now WAIT_FOR waiting8"; COMMIT; SET debug_sync="RESET"; COMMIT; COMMIT; COMMIT; COMMIT; COMMIT; COMMIT; COMMIT; SELECT * FROM t1 ORDER BY a; a b 1 1 2 20 3 1 include/save_master_gtid.inc include/start_slave.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a b 1 1 2 20 3 1 status Ok, no retry include/start_slave.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a b 1 1 2 20 3 1 status Ok, no retry include/start_slave.inc include/sync_with_master_gtid.inc SELECT * FROM t1 ORDER BY a; a b 1 1 2 20 3 1 status Ok, no retry include/stop_slave.inc SET GLOBAL slave_parallel_mode=@old_parallel_mode; SET GLOBAL slave_parallel_threads=@old_parallel_threads; include/start_slave.inc include/stop_slave.inc SET GLOBAL slave_parallel_mode=@old_parallel_mode; SET GLOBAL slave_parallel_threads=@old_parallel_threads; include/start_slave.inc include/stop_slave.inc SET GLOBAL slave_parallel_mode=@old_parallel_mode; SET GLOBAL slave_parallel_threads=@old_parallel_threads; include/start_slave.inc DROP TABLE t1; include/rpl_end.inc