diff options
Diffstat (limited to 'storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_xa.inc')
-rw-r--r-- | storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_xa.inc | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_xa.inc b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_xa.inc new file mode 100644 index 00000000..253d9f16 --- /dev/null +++ b/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_xa.inc @@ -0,0 +1,84 @@ +# +# This "body" file checks general properties of XA transaction replication +# as of MDEV-7974, including XA of mixed engine branches. +# Parameters: +# --let rpl_xa_check= SELECT ... +# +connection master; +create table ti (a int, b int) engine=innodb; +create table t1 (a int, b int) engine=rocksdb; +insert into ti values(0, 0); +insert into t1 values(0, 0); +xa start 't'; +insert into ti values(1, 2); +insert into t1 values(1, 2); +xa end 't'; +xa prepare 't'; +xa commit 't'; + +sync_slave_with_master; +let $diff_tables= master:t1, slave:t1; +source include/diff_tables.inc; + +connection master; + +xa start 't'; +insert into ti values(3, 4); +insert into t1 values(3, 4); +xa end 't'; +xa prepare 't'; +xa rollback 't'; + +sync_slave_with_master; +let $diff_tables= master:t1, slave:t1; +source include/diff_tables.inc; + +connection master; +SET pseudo_slave_mode=1; +create table t2 (a int) engine=rocksdb; +xa start 't'; +insert into ti values (5, 6); +insert into t1 values (5, 6); +xa end 't'; +xa prepare 't'; +xa start 's'; +insert into ti values (7, 8); +insert into t2 values (0); +xa end 's'; +xa prepare 's'; +--source include/save_master_gtid.inc + +connection slave; +source include/sync_with_master_gtid.inc; +if ($rpl_xa_check) +{ + --eval $rpl_xa_check + if ($rpl_xa_verbose) + { + --eval SELECT $rpl_xa_check_lhs + --eval SELECT $rpl_xa_check_rhs + } +} +xa recover; + +connection master; +xa commit 't'; +xa commit 's'; +SET pseudo_slave_mode=0; + +# pure rocksdb xa +xa start 'r'; +insert into t1 values(7, 8); +xa end 'r'; +xa prepare 'r'; +xa commit 'r'; + + +sync_slave_with_master; +let $diff_tables= master:t1, slave:t1; +source include/diff_tables.inc; +let $diff_tables= master:t2, slave:t2; +source include/diff_tables.inc; + +connection master; +drop table ti, t1, t2; |