diff options
author | Kristian Nielsen <knielsen@knielsen-hq.org> | 2015-07-19 09:28:22 +0200 |
---|---|---|
committer | Kristian Nielsen <knielsen@knielsen-hq.org> | 2015-07-19 09:28:22 +0200 |
commit | 44c4b2304b0d8dd7172b7470e29139057837bae5 (patch) | |
tree | bd6f16c7170ea8a6bf428f80342c005b946ee680 /mysql-test/suite/multi_source | |
parent | b89de2b2ce84f41351a66d5832c3967b80f9dc31 (diff) | |
download | mariadb-git-44c4b2304b0d8dd7172b7470e29139057837bae5.tar.gz |
MDEV-8496: gtid_ignore_duplicates treats gtid_seq_no as 32-bit
--gtid-ignore-duplicates was comparing sequence numbers as 32-bit, so
after 2**32 transactions things would start to fail.
Diffstat (limited to 'mysql-test/suite/multi_source')
-rw-r--r-- | mysql-test/suite/multi_source/gtid_ignore_duplicates.result | 33 | ||||
-rw-r--r-- | mysql-test/suite/multi_source/gtid_ignore_duplicates.test | 34 |
2 files changed, 67 insertions, 0 deletions
diff --git a/mysql-test/suite/multi_source/gtid_ignore_duplicates.result b/mysql-test/suite/multi_source/gtid_ignore_duplicates.result index a43eea47ded..2e15f11a7c7 100644 --- a/mysql-test/suite/multi_source/gtid_ignore_duplicates.result +++ b/mysql-test/suite/multi_source/gtid_ignore_duplicates.result @@ -381,6 +381,39 @@ a 50 SET GLOBAL slave_exec_mode=@old_slave_mode; SET GLOBAL gtid_strict_mode=@old_strict; +*** MDEV-8496: gtid_ignore_duplicates treats gtid_seq_no as 32-bit *** +SET @old_domain= @@SESSION.gtid_domain_id; +SET SESSION gtid_domain_id=102; +SET SESSION gtid_seq_no=4294967294; +INSERT INTO t1 VALUES (60); +INSERT INTO t1 VALUES (61); +INSERT INTO t1 VALUES (62); +SET SESSION gtid_domain_id= @old_domain; +include/save_master_gtid.inc +include/sync_with_master_gtid.inc +SELECT * FROM t1 WHERE a >= 60 ORDER BY a; +a +60 +61 +62 +SET default_master_connection = "c2b"; +include/sync_with_master_gtid.inc +SET default_master_connection = "a2b"; +include/sync_with_master_gtid.inc +SELECT * FROM t1 WHERE a >= 60 ORDER BY a; +a +60 +61 +62 +SET default_master_connection = "b2c"; +include/sync_with_master_gtid.inc +SET default_master_connection = "a2c"; +include/sync_with_master_gtid.inc +SELECT * FROM t1 WHERE a >= 60 ORDER BY a; +a +60 +61 +62 SET GLOBAL gtid_domain_id=0; STOP ALL SLAVES; Warnings: diff --git a/mysql-test/suite/multi_source/gtid_ignore_duplicates.test b/mysql-test/suite/multi_source/gtid_ignore_duplicates.test index b2c42e03335..1eea038f8c9 100644 --- a/mysql-test/suite/multi_source/gtid_ignore_duplicates.test +++ b/mysql-test/suite/multi_source/gtid_ignore_duplicates.test @@ -366,6 +366,40 @@ SET GLOBAL slave_exec_mode=@old_slave_mode; SET GLOBAL gtid_strict_mode=@old_strict; +--echo *** MDEV-8496: gtid_ignore_duplicates treats gtid_seq_no as 32-bit *** + +--connection server_1 +SET @old_domain= @@SESSION.gtid_domain_id; +SET SESSION gtid_domain_id=102; +SET SESSION gtid_seq_no=4294967294; +INSERT INTO t1 VALUES (60); +INSERT INTO t1 VALUES (61); +INSERT INTO t1 VALUES (62); +# The bug was an overflow, the seq_no value 4294967296 (2**32) was treated +# as 0, causing the last transaction to be ignored. +SET SESSION gtid_domain_id= @old_domain; +--source include/save_master_gtid.inc + +--connection server_4 +--source include/sync_with_master_gtid.inc +SELECT * FROM t1 WHERE a >= 60 ORDER BY a; + +--connection server_2 +SET default_master_connection = "c2b"; +--source include/sync_with_master_gtid.inc +SET default_master_connection = "a2b"; +--source include/sync_with_master_gtid.inc +SELECT * FROM t1 WHERE a >= 60 ORDER BY a; + +--connection server_3 +SET default_master_connection = "b2c"; +--source include/sync_with_master_gtid.inc +SET default_master_connection = "a2c"; +--source include/sync_with_master_gtid.inc +SELECT * FROM t1 WHERE a >= 60 ORDER BY a; + + + # Clean up. --connection server_1 SET GLOBAL gtid_domain_id=0; |