summaryrefslogtreecommitdiff
path: root/mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2023-03-29 15:16:42 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2023-03-29 15:16:42 +0300
commitdd2fe81122224c07a65e89b409dc28d70802fe99 (patch)
treeb3737b6d5a89e34fa30aea32843a8a78704e4b23 /mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test
parente4b83f0febbd24b04687d4814871c758cbede111 (diff)
parent0760ad3336521b85454b522390eb972a606def23 (diff)
downloadmariadb-git-dd2fe81122224c07a65e89b409dc28d70802fe99.tar.gz
Merge 10.6 into 10.8
Diffstat (limited to 'mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test')
-rw-r--r--mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test68
1 files changed, 67 insertions, 1 deletions
diff --git a/mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test b/mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test
index e2a41d0db7e..41f372eddf8 100644
--- a/mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test
+++ b/mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test
@@ -1 +1,67 @@
---source include/rpl_parallel_free_deferred_event.inc
+--echo *** MDEV-5788 Incorrect free of rgi->deferred_events in parallel replication ***
+
+--source include/have_innodb.inc
+--source include/master-slave.inc
+
+--connection server_2
+--source include/stop_slave.inc
+CHANGE MASTER TO master_use_gtid=slave_pos;
+--source include/start_slave.inc
+
+--connection server_1
+ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
+CREATE TABLE t3 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
+--save_master_pos
+
+--connection server_2
+--sync_with_master
+SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
+# Use just two worker threads, so we are sure to get the rpl_group_info added
+# to the free list, which is what triggered the bug.
+--source include/stop_slave.inc
+SET GLOBAL replicate_ignore_table="test.t3";
+SET GLOBAL slave_parallel_threads=2;
+--source include/start_slave.inc
+
+--connection server_1
+INSERT INTO t3 VALUES (100, rand());
+INSERT INTO t3 VALUES (101, rand());
+--save_master_pos
+
+--connection server_2
+--sync_with_master
+
+--connection server_1
+INSERT INTO t3 VALUES (102, rand());
+INSERT INTO t3 VALUES (103, rand());
+INSERT INTO t3 VALUES (104, rand());
+INSERT INTO t3 VALUES (105, rand());
+--save_master_pos
+
+--connection server_2
+--sync_with_master
+--source include/stop_slave.inc
+SET GLOBAL replicate_ignore_table="";
+--source include/start_slave.inc
+
+--connection server_1
+INSERT INTO t3 VALUES (106, rand());
+INSERT INTO t3 VALUES (107, rand());
+--save_master_pos
+
+--connection server_2
+--sync_with_master
+--replace_column 2 #
+SELECT * FROM t3 WHERE a >= 100 ORDER BY a;
+
+
+# Clean up.
+--connection server_2
+--source include/stop_slave.inc
+SET GLOBAL slave_parallel_threads=@old_parallel_threads;
+--source include/start_slave.inc
+
+--connection server_1
+DROP TABLE t3;
+
+--source include/rpl_end.inc