1# ==== Purpose ==== 2# 3# Test verifies that failed CREATE OR REPLACE TEMPORARY TABLE statement which 4# dropped the table but failed at a later stage of creation of temporary table 5# is written to binarylog in row based replication. 6# 7# ==== Implementation ==== 8# 9# Steps: 10# 0 - Have mixed based replication mode. 11# 1 - Create a temporary table. It will be replicated as mixed replication 12# mode is in use. 13# 2 - Execute an unsafe statement which will switch current statement 14# binlog format to 'ROW'. i.e If binlog_format=MIXED, there are open 15# temporary tables, and an unsafe statement is executed, then subsequent 16# statements are logged in row format. 17# 3 - Execute a CREATE OR REPLACE TEMPORARY TABLE statement which tries to 18# create partitions on temporary table. Since it is not supported it will 19# fail. 20# 4 - Check the binary log output to ensure that the failed statement is 21# written to the binary log. 22# 5 - Slave should be up and running and in sync with master. 23# 24# ==== References ==== 25# 26# MDEV-18930: Failed CREATE OR REPLACE TEMPORARY not written into binary log 27# makes data on master and slave diverge 28# 29 30--source include/have_partition.inc 31--source include/have_binlog_format_mixed.inc 32--source include/master-slave.inc 33 34CREATE TEMPORARY TABLE t1 (a INT NOT NULL); 35 36# Execute an unsafe statement which switches replication mode internally from 37# "STATEMENT" to "ROW". 38--error ER_NO_SUCH_TABLE 39LOAD DATA INFILE 'x' INTO TABLE x; 40 41--error ER_PARTITION_NO_TEMPORARY 42CREATE OR REPLACE TEMPORARY TABLE t1 (x INT) PARTITION BY HASH(x); 43 44--echo "************** DROP TEMPORARY TABLE Should be present in Binary log **************" 45--source include/show_binlog_events.inc 46 47CREATE TABLE t1 (b INT); 48INSERT INTO t1 VALUES (NULL); 49--sync_slave_with_master 50 51# Cleanup 52--connection master 53DROP TABLE t1; 54 55--source include/rpl_end.inc 56 57