mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 19:41:47 +01:00
dbe02e6d4a
In statement-based or mixed-mode replication, use DROP TEMPORARY TABLE to drop multiple tables causes different errors on master and slave, when one or more of these tables do not exist. Because when executed on slave, it would automatically add IF EXISTS to the query to ignore all ER_BAD_TABLE_ERROR errors. To fix the problem, do not add IF EXISTS when executing DROP TEMPORARY TABLE on the slave, and clear the ER_BAD_TABLE_ERROR error after execution if the query does not expect any errors.
69 lines
1.6 KiB
Text
69 lines
1.6 KiB
Text
##############################################
|
|
# Change Author: JBM
|
|
# Change Date: 2006-02-07
|
|
# Change: Added ENGINE=MyISAM
|
|
# Purpose: According to TU in 16552 This is how
|
|
# to work around NDB's issue with temp tables
|
|
##############################################
|
|
source include/master-slave.inc;
|
|
source include/have_binlog_format_mixed_or_statement.inc;
|
|
|
|
--disable_warnings
|
|
create database if not exists mysqltest;
|
|
--enable_warnings
|
|
|
|
connect (con_temp,127.0.0.1,root,,test,$MASTER_MYPORT,);
|
|
|
|
connection con_temp;
|
|
use mysqltest;
|
|
create temporary table mysqltest.t1 (n int)ENGINE=MyISAM;
|
|
create temporary table mysqltest.t2 (n int)ENGINE=MyISAM;
|
|
|
|
disconnect con_temp;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection master;
|
|
-- let $wait_binlog_event= DROP
|
|
-- source include/wait_for_binlog_event.inc
|
|
sync_slave_with_master;
|
|
|
|
connection slave;
|
|
show status like 'Slave_open_temp_tables';
|
|
# Cleanup
|
|
connection master;
|
|
drop database mysqltest;
|
|
sync_slave_with_master;
|
|
|
|
#
|
|
# Bug#49137
|
|
# This test verifies if DROP MULTI TEMPORARY TABLE
|
|
# will cause different errors on master and slave,
|
|
# when one or more of these tables do not exist.
|
|
#
|
|
|
|
connection master;
|
|
DROP TEMPORARY TABLE IF EXISTS tmp1;
|
|
CREATE TEMPORARY TABLE t1 ( a int );
|
|
--error 1051
|
|
DROP TEMPORARY TABLE t1, t2;
|
|
--error 1051
|
|
DROP TEMPORARY TABLE tmp2;
|
|
sync_slave_with_master;
|
|
|
|
connection slave;
|
|
stop slave;
|
|
wait_for_slave_to_stop;
|
|
|
|
--echo **** On Master ****
|
|
connection master;
|
|
CREATE TEMPORARY TABLE tmp3 (a int);
|
|
DROP TEMPORARY TABLE tmp3;
|
|
|
|
connection slave;
|
|
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
|
|
START SLAVE;
|
|
|
|
connection master;
|
|
sync_slave_with_master;
|
|
|
|
# End of 4.1 tests
|