diff options
Diffstat (limited to 'mysql-test/suite/versioning/t/rpl.test')
-rw-r--r-- | mysql-test/suite/versioning/t/rpl.test | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/mysql-test/suite/versioning/t/rpl.test b/mysql-test/suite/versioning/t/rpl.test new file mode 100644 index 00000000..b5be68fe --- /dev/null +++ b/mysql-test/suite/versioning/t/rpl.test @@ -0,0 +1,136 @@ +--source suite/versioning/engines.inc +--source include/have_partition.inc +--source include/master-slave.inc + +#BUG#12662190 - COM_COMMIT IS NOT INCREMENTED FROM THE BINARY LOGS ON SLAVE, COM_BEGIN IS +#Testing command counters -BEFORE. +#Storing the before counts of Slave +connection slave; +let $slave_com_commit_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_commit', Value, 1); +let $slave_com_insert_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_insert', Value, 1); +let $slave_com_delete_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_delete', Value, 1); +let $slave_com_update_before= query_get_value(SHOW GLOBAL STATUS LIKE 'com_update', Value, 1); + +connection master; +CREATE TABLE t1 (x int) with system versioning; +insert into t1 values (1); +select * from t1 order by x; +delete from t1; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +connection master; +insert into t1 values (2); +sync_slave_with_master; +select * from t1 order by x; + +connection master; +update t1 set x = 3; +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +--echo # check unversioned -> versioned replication +connection master; +create or replace table t1 (x int primary key); +sync_slave_with_master; +alter table t1 with system versioning; + +connection master; +insert into t1 values (1); +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +connection master; +update t1 set x= 2 where x = 1; +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +connection master; +delete from t1; +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +--echo # same thing (UPDATE, DELETE), but without PK +connection master; +create or replace table t1 (x int); +sync_slave_with_master; +alter table t1 with system versioning; + +connection master; +insert into t1 values (1); +update t1 set x= 2 where x = 1; +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +connection master; +delete from t1; +sync_slave_with_master; +select * from t1 order by x; +select * from t1 for system_time all order by row_end, x; + +--echo # multi-update +connection master; +create or replace table t1 (x int) with system versioning; +create or replace table t2 (x int) with system versioning; +insert into t1 values (1); +insert into t2 values (2); +update t1, t2 set t1.x=11, t2.x=22; +sync_slave_with_master; +select * from t1 order by x; +select * from t2 order by x; +select * from t1 for system_time all order by row_end, x; +select * from t2 for system_time all order by row_end, x; + +--echo # MDEV-14767 system_versioning_alter_history breaks ALTER replication +--echo ## Case 1: KEEP on the master, ALTER will work on the slave +connection master; +create or replace table t1 (a int) with system versioning; +set system_versioning_alter_history= KEEP; +alter table t1 add column b int; +sync_slave_with_master; +--replace_result InnoDB ENGINE MyISAM ENGINE MEMORY ENGINE +show create table t1; + +--echo ## Case 2: ERROR on the master, it'll fail on the master, the slave won't see it +connection master; +set system_versioning_alter_history= ERROR; +--error ER_VERS_ALTER_NOT_ALLOWED +alter table t1 drop column b; +sync_slave_with_master; +--replace_result InnoDB ENGINE MyISAM ENGINE MEMORY ENGINE +show create table t1; + +--echo ## Case 3: table is not versioned on the master, ALTER will work on the slave +connection master; +create or replace table t1 (a int); +sync_slave_with_master; +create or replace table t1 (a int) with system versioning; +connection master; +alter table t1 add column b int; +sync_slave_with_master; +--replace_result InnoDB ENGINE MyISAM ENGINE MEMORY ENGINE +show create table t1; + +connection master; +drop table t1, t2; + +# +# MDEV-15395 Wrong result or Assertion `old_part_id == m_last_part' failed in ha_partition::update_row on slave +# +create table t1 (i int) with system versioning partition by system_time limit 8 ( partition p1 history, partition p2 history, partition pn current ); +insert into t1 values (1); +update t1 set i = 1; +update t1 set i = 0; +sync_slave_with_master; +connection master; +drop table t1; + +--source include/rpl_end.inc |