include/master-slave.inc
[connection master]
connection slave;
include/stop_slave.inc
connection master;
set binlog_format=mixed;
include/kill_binlog_dump_threads.inc
RESET MASTER;
connection slave;
include/start_slave.inc
set binlog_format=mixed;
RESET MASTER;
connection master;
connection slave;
use database;
connection master;
#
# MDEV-23691 S3 storage engine: delayed slave can drop the table
#
connection slave;
stop slave;
connection master;
create /*or replace*/ table t100 (
pk varchar(100)
) engine = 'innodb';
insert into t100 values ('old data');
alter table t100 engine=s3;
drop table t100;
create /*or replace*/ table t100 (
pk varchar(100)
) engine= innodb;
insert into t100 select 'new data' from seq_1_to_10;
alter table t100 engine=s3;
select count(*), 'before slave start' from t100;
count(*)	before slave start
10	before slave start
connection slave;
start slave;
connection master;
connection slave;
connection master;
flush tables;
select count(*), 'after slave start' from t100;
count(*)	after slave start
10	after slave start
show create table t100;
Table	Create Table
t100	CREATE TABLE `t100` (
  `pk` varchar(100) DEFAULT NULL
) ENGINE=S3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci PAGE_CHECKSUM=1
connection slave;
select count(*) from t100;
count(*)
10
connection master;
drop table t100;
#
# Test delayed slave with inserts
#
connection slave;
stop slave;
connection master;
create table t1 (a int) engine=innodb;
insert into t1 values (1),(2),(3);
insert into t1 select * from seq_4_to_6;
alter table t1 engine=s3;
connection slave;
start slave;
connection master;
connection slave;
select * from t1;
a
1
2
3
4
5
6
connection master;
drop table t1;
#
# Check slave binary log
#
connection slave;
include/show_binlog_events.inc
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	create database database
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; create /*or replace*/ table t100 (
pk varchar(100)
) engine = 'innodb'
slave-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; insert into t100 values ('old data')
slave-bin.000001	#	Query	#	#	COMMIT
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; alter table t100 engine=s3
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; DROP TABLE IF EXISTS `t100` /* generated by server */
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; create /*or replace*/ table t100 (
pk varchar(100)
) engine= innodb
slave-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; insert into t100 select 'new data' from seq_1_to_10
slave-bin.000001	#	Query	#	#	COMMIT
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; alter table t100 engine=s3
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; flush tables
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; DROP TABLE IF EXISTS `t100` /* generated by server */
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; create table t1 (a int) engine=innodb
slave-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; insert into t1 values (1),(2),(3)
slave-bin.000001	#	Query	#	#	COMMIT
slave-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; insert into t1 select * from seq_4_to_6
slave-bin.000001	#	Query	#	#	COMMIT
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; alter table t1 engine=s3
slave-bin.000001	#	Gtid	#	#	GTID #-#-#
slave-bin.000001	#	Query	#	#	use `database`; DROP TABLE IF EXISTS `t1` /* generated by server */
connection master;
#
# clean up
#
include/rpl_end.inc
