summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/s3/replication.inc
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/s3/replication.inc')
-rw-r--r--mysql-test/suite/s3/replication.inc209
1 files changed, 209 insertions, 0 deletions
diff --git a/mysql-test/suite/s3/replication.inc b/mysql-test/suite/s3/replication.inc
new file mode 100644
index 00000000..cfa38d93
--- /dev/null
+++ b/mysql-test/suite/s3/replication.inc
@@ -0,0 +1,209 @@
+--source include/have_s3.inc
+--source include/have_sequence.inc
+
+#
+# Tests for S3 replication
+#
+
+sync_slave_with_master;
+let $SLAVE_DATADIR= `select @@datadir`;
+connection master;
+
+#
+# Create unique database for running the tests
+#
+--source create_database.inc
+
+--echo #
+--echo # Test ALTER TABLE ENGINE S3
+--echo #
+
+create table t1 (a int, b int) engine=aria;
+insert into t1 select seq,seq+10 from seq_1_to_10;
+sync_slave_with_master;
+connection master;
+alter table t1 engine=s3;
+show create table t1;
+
+sync_slave_with_master;
+--replace_result $database database
+--eval use $database
+select * from t1 limit 2;
+--file_exists $SLAVE_DATADIR/$database/t1.frm
+
+connection master;
+alter table t1 add column c int;
+
+sync_slave_with_master;
+--error 1
+--file_exists $SLAVE_DATADIR/$database/t1.frm
+--replace_result $database database
+select * from t1,t1 as t1_tmp limit 2;
+
+--echo # Now test when the .frm table is out of date on the slave
+stop slave;
+
+connection master;
+alter table t1 add column d int, engine=s3;
+connection slave;
+select * from t1 limit 2;
+start slave;
+connection master;
+sync_slave_with_master;
+select * from t1 limit 2;
+
+--echo # Same without tables in the table cache;
+stop slave;
+flush tables;
+connection master;
+alter table t1 add column e int, engine=s3;
+connection slave;
+select * from t1 limit 2;
+start slave;
+connection master;
+sync_slave_with_master;
+select * from t1 limit 2;
+connection master;
+
+--echo # Convert S3 table to Aria. Rows should be binary logged
+alter table t1 engine=aria;
+sync_slave_with_master;
+select * from t1 limit 2;
+show create table t1;
+
+--echo # Convert S3 table to Aria with rename. Rows should be binary logged
+connection master;
+alter table t1 engine=s3;
+alter table t1 rename t2, engine=aria;
+sync_slave_with_master;
+select * from t2 limit 2;
+show create table t2;
+
+connection master;
+drop table t2;
+sync_slave_with_master;
+connection master;
+
+--echo #
+--echo # Test RENAME
+--echo #
+
+create table t1 (a int, b int) engine=aria;
+insert into t1 select seq,seq+10 from seq_1_to_10;
+alter table t1 engine=s3;
+
+rename table t1 to t2;
+sync_slave_with_master;
+--replace_result $database database
+--error 1
+--file_exists $SLAVE_DATADIR/$database/t2.frm
+--error ER_NO_SUCH_TABLE
+select * from t1 limit 2;
+select * from t2 limit 2;
+connection master;
+
+alter table t2 add column f int, rename t1;
+select * from t1 limit 2;
+sync_slave_with_master;
+--error 1
+--file_exists $SLAVE_DATADIR/$database/t1.frm
+--error 1
+--file_exists $SLAVE_DATADIR/$database/t2.frm
+select * from t1 limit 2;
+--replace_result $database database
+--error ER_NO_SUCH_TABLE
+select * from t2 limit 2;
+
+# Check rename of table when a new table has replaced the original one
+
+connection slave;
+stop slave;
+connection master;
+rename table t1 to t2;
+# Check the different create options with the table
+create table t1 (a int) engine=aria;
+drop table t1;
+create table if not exists t1 (a int, b int) engine=aria;
+drop table t1;
+create or replace table t1 (a int, b int, c int) engine=aria;
+alter table t1 engine=s3;
+connection slave;
+start slave;
+connection master;
+sync_slave_with_master;
+show create table t1;
+select * from t1 limit 2;
+select * from t2 limit 2;
+connection master;
+
+--echo #
+--echo # Test DROP
+--echo #
+drop table t1,t2;
+
+sync_slave_with_master;
+--error 1
+--file_exists $SLAVE_DATADIR/$database/t1.frm
+--error 1
+--file_exists $SLAVE_DATADIR/$database/t2.frm
+--replace_result $database database
+--error ER_NO_SUCH_TABLE
+select * from t1 limit 2;
+--replace_result $database database
+--error ER_NO_SUCH_TABLE
+select * from t2 limit 2;
+
+connection master;
+
+--echo #
+--echo # Test LIKE
+--echo #
+
+create table t1 (a int,b int);
+alter table t1 engine=s3;
+--replace_result $database database
+--error ER_CANT_CREATE_TABLE
+create table t2 like t1;
+sync_slave_with_master;
+--replace_result $database database
+--error ER_NO_SUCH_TABLE
+show create table t2;
+connection master;
+--replace_result $database database
+drop table if exists t1,t2;
+
+--echo #
+--echo # Check slave binary log
+--echo #
+
+sync_slave_with_master;
+--let $binlog_database=$database
+--source include/show_binlog_events.inc
+connection master;
+
+--echo #
+--echo # MDEV-24351: S3, same-backend replication: Dropping a table on master
+--echo # causes error on slave
+--echo #
+show variables like 's3_replicate_alter_as_create_select';
+
+connection slave;
+create table t3 (a int, b int) engine=aria;
+insert into t3 values (1,1),(2,2),(3,3);
+alter table t3 engine=s3;
+
+connection master;
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+drop table t3;
+--echo # Must show "DROP TABLE IF EXISTS t3", not just "DROP TABLE t3"
+--source include/show_binlog_events.inc
+
+sync_slave_with_master;
+connection master;
+
+--echo #
+--echo # clean up
+--echo #
+--source drop_database.inc
+sync_slave_with_master;
+--source include/rpl_end.inc