# Testing table creations for row-based replication. --source include/have_binlog_format_row.inc --source include/master-slave.inc # Bug#18326: Do not lock table for writing during prepare of statement # The use of the ps protocol causes extra table maps in the binlog, so # we disable the ps-protocol for this statement. --disable_ps_protocol --disable_query_log --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9; --enable_warnings --enable_query_log # Set the default storage engine to different values on master and # slave. We need to stop the slave for the server variable to take # effect, since the variable is only read on start-up. connection slave; --disable_query_log set @storage_engine = @@global.storage_engine; STOP SLAVE; SET GLOBAL storage_engine=memory; START SLAVE; --enable_query_log connection master; CREATE TABLE t1 (a INT, b INT); CREATE TABLE t2 (a INT, b INT) ENGINE=Merge; CREATE TABLE t3 (a INT, b INT) CHARSET=utf8; CREATE TABLE t4 (a INT, b INT) ENGINE=Merge CHARSET=utf8; --replace_column 1 # 4 # 5 # --replace_regex /table_id: [0-9]+/table_id: #/ --query_vertical SHOW BINLOG EVENTS FROM 212 --echo **** On Master **** --query_vertical SHOW CREATE TABLE t1 --query_vertical SHOW CREATE TABLE t2 --query_vertical SHOW CREATE TABLE t3 sync_slave_with_master; --echo **** On Slave **** --query_vertical SHOW CREATE TABLE t1 --query_vertical SHOW CREATE TABLE t2 --query_vertical SHOW CREATE TABLE t3 connection master; CREATE TABLE t5 (b INT, c INT) SELECT * FROM t3; CREATE TEMPORARY TABLE tt3 (a INT, b INT); INSERT INTO tt3 VALUES (1,2), (2,4), (3,6), (4,2), (5,10), (6,12); CREATE TABLE t6 (b INT, c INT) SELECT * FROM tt3; --echo **** On Master **** --query_vertical SHOW CREATE TABLE t5 SELECT * FROM t5 ORDER BY a,b,c; --query_vertical SHOW CREATE TABLE t6 SELECT * FROM t6 ORDER BY a,b,c; sync_slave_with_master; --echo **** On Slave **** --query_vertical SHOW CREATE TABLE t5 SELECT * FROM t5 ORDER BY a,b,c; --query_vertical SHOW CREATE TABLE t6 SELECT * FROM t6 ORDER BY a,b,c; connection master; # Test for erroneous constructions --error 1062 CREATE TABLE t7 (UNIQUE(b)) SELECT a,b FROM tt3; # Shouldn't be written to the binary log --replace_regex /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS FROM 1326; # Test that INSERT-SELECT works the same way as for SBR. CREATE TABLE t7 (a INT, b INT UNIQUE); --error 1062 INSERT INTO t7 SELECT a,b FROM tt3; SELECT * FROM t7 ORDER BY a,b; # Should be written to the binary log --replace_regex /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS FROM 1326; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; connection master; CREATE TEMPORARY TABLE tt4 (a INT, b INT); INSERT INTO tt4 VALUES (4,8), (5,10), (6,12); BEGIN; INSERT INTO t7 SELECT a,b FROM tt4; ROLLBACK; --replace_regex /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS FROM 1522; SELECT * FROM t7 ORDER BY a,b; sync_slave_with_master; SELECT * FROM t7 ORDER BY a,b; connection master; CREATE TABLE t8 LIKE t4; CREATE TABLE t9 LIKE tt4; CREATE TEMPORARY TABLE tt5 LIKE t4; CREATE TEMPORARY TABLE tt6 LIKE tt4; --echo **** On Master **** --query_vertical SHOW CREATE TABLE t8 --query_vertical SHOW CREATE TABLE t9 --replace_regex /table_id: [0-9]+/table_id: #/ SHOW BINLOG EVENTS FROM 1618; sync_slave_with_master; --echo **** On Slave **** --query_vertical SHOW CREATE TABLE t8 --query_vertical SHOW CREATE TABLE t9 connection master; --disable_query_log DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9; sync_slave_with_master; # Here we reset the value of the default storage engine STOP SLAVE; SET GLOBAL storage_engine=@storage_engine; START SLAVE; --enable_query_log --enable_ps_protocol