summaryrefslogtreecommitdiff
path: root/storage/tokudb/mysql-test/rpl/t/rpl_xa_interleave.test
diff options
context:
space:
mode:
Diffstat (limited to 'storage/tokudb/mysql-test/rpl/t/rpl_xa_interleave.test')
-rw-r--r--storage/tokudb/mysql-test/rpl/t/rpl_xa_interleave.test103
1 files changed, 103 insertions, 0 deletions
diff --git a/storage/tokudb/mysql-test/rpl/t/rpl_xa_interleave.test b/storage/tokudb/mysql-test/rpl/t/rpl_xa_interleave.test
new file mode 100644
index 00000000000..3941604c855
--- /dev/null
+++ b/storage/tokudb/mysql-test/rpl/t/rpl_xa_interleave.test
@@ -0,0 +1,103 @@
+--source include/have_tokudb.inc
+--source include/have_binlog_format_mixed_or_row.inc
+--source include/master-slave.inc
+
+CREATE TABLE t1(`a` INT) ENGINE=TokuDB;
+
+## XA interleave commit
+--connection master
+XA START 'x1';
+INSERT INTO t1 VALUES (1);
+XA END 'x1';
+XA PREPARE 'x1';
+
+--connection master1
+BEGIN;
+INSERT INTO t1 VALUES (10);
+COMMIT;
+XA START 'y1';
+INSERT INTO t1 VALUES (2);
+XA END 'y1';
+XA PREPARE 'y1';
+
+--connection master
+XA COMMIT 'x1';
+
+--connection master1
+XA COMMIT 'y1';
+
+--connection master
+BEGIN;
+INSERT INTO t1 VALUES (11);
+COMMIT;
+XA START 'x2';
+INSERT INTO t1 VALUES (3);
+XA END 'x2';
+XA PREPARE 'x2';
+
+--connection master1
+XA START 'y2';
+INSERT INTO t1 VALUES (4);
+XA END 'y2';
+XA PREPARE 'y2';
+
+--connection master
+XA COMMIT 'x2';
+
+--connection master1
+XA COMMIT 'y2';
+
+## XA interleave rollback
+--connection master
+XA START 'x1';
+INSERT INTO t1 VALUES (1);
+XA END 'x1';
+XA PREPARE 'x1';
+
+--connection master1
+BEGIN;
+INSERT INTO t1 VALUES (10);
+COMMIT;
+XA START 'y1';
+INSERT INTO t1 VALUES (2);
+XA END 'y1';
+XA PREPARE 'y1';
+
+--connection master
+XA ROLLBACK 'x1';
+
+--connection master1
+XA ROLLBACK 'y1';
+
+--connection master
+BEGIN;
+INSERT INTO t1 VALUES (11);
+COMMIT;
+XA START 'x2';
+INSERT INTO t1 VALUES (3);
+XA END 'x2';
+XA PREPARE 'x2';
+
+--connection master1
+XA START 'y2';
+INSERT INTO t1 VALUES (4);
+XA END 'y2';
+XA PREPARE 'y2';
+
+--connection master
+XA ROLLBACK 'x2';
+
+--connection master1
+XA ROLLBACK 'y2';
+
+--connection master
+
+--sync_slave_with_master
+
+--echo TABLES t1 and t2 must be equal otherwise an error will be thrown.
+--let $diff_tables= master:test.t1, slave:test.t1
+--source include/diff_tables.inc
+
+--connection master
+DROP TABLE t1;
+--source include/rpl_end.inc