mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
read-only slave using statement replication should replicate tmp tables
Relates to MDEV-17863 DROP TEMPORARY TABLE creates a transaction in binary log on read only server Other things: - Fixed that insert into normal_table select from tmp_table is replicated as row events if tmp_table doesn't exists on slave.
This commit is contained in:
53
mysql-test/suite/rpl/r/rpl_read_only2.result
Normal file
53
mysql-test/suite/rpl/r/rpl_read_only2.result
Normal file
@@ -0,0 +1,53 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
#
|
||||
# Ensure that read-only slave logs temporary table statements under statement based
|
||||
# replication. This is related to MDEV-17863.
|
||||
#
|
||||
connection slave;
|
||||
set global read_only=1;
|
||||
connection master;
|
||||
create table t1(a int) engine=MyISAM;
|
||||
create temporary table tmp1 (a int) engine=MyISAM;
|
||||
insert into t1 values(1);
|
||||
insert into tmp1 values (2);
|
||||
insert into t1 select * from tmp1;
|
||||
insert into t1 values(3);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
drop table t1;
|
||||
drop temporary table tmp1;
|
||||
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 # # use `test`; create table t1(a int) engine=MyISAM
|
||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; create temporary table tmp1 (a int) engine=MyISAM
|
||||
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; insert into t1 values(1)
|
||||
slave-bin.000001 # Query # # COMMIT
|
||||
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; insert into tmp1 values (2)
|
||||
slave-bin.000001 # Query # # COMMIT
|
||||
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; insert into t1 select * from tmp1
|
||||
slave-bin.000001 # Query # # COMMIT
|
||||
slave-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; insert into t1 values(3)
|
||||
slave-bin.000001 # Query # # COMMIT
|
||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; analyze table t1
|
||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS `t1` /* generated by server */
|
||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
||||
slave-bin.000001 # Query # # DROP TEMPORARY TABLE IF EXISTS `test`.`tmp1` /* generated by server */
|
||||
set global read_only=0;
|
||||
connection master;
|
||||
include/rpl_end.inc
|
30
mysql-test/suite/rpl/t/rpl_read_only2.test
Normal file
30
mysql-test/suite/rpl/t/rpl_read_only2.test
Normal file
@@ -0,0 +1,30 @@
|
||||
--source include/have_binlog_format_statement.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
--echo #
|
||||
--echo # Ensure that read-only slave logs temporary table statements under statement based
|
||||
--echo # replication. This is related to MDEV-17863.
|
||||
--echo #
|
||||
|
||||
connection slave;
|
||||
set global read_only=1;
|
||||
|
||||
connection master;
|
||||
|
||||
create table t1(a int) engine=MyISAM;
|
||||
create temporary table tmp1 (a int) engine=MyISAM;
|
||||
insert into t1 values(1);
|
||||
insert into tmp1 values (2);
|
||||
insert into t1 select * from tmp1;
|
||||
insert into t1 values(3);
|
||||
select * from t1;
|
||||
analyze table t1;
|
||||
drop table t1;
|
||||
drop temporary table tmp1;
|
||||
|
||||
sync_slave_with_master;
|
||||
--source include/show_binlog_events.inc
|
||||
set global read_only=0;
|
||||
connection master;
|
||||
|
||||
--source include/rpl_end.inc
|
Reference in New Issue
Block a user