summaryrefslogtreecommitdiff
path: root/mysql-test/extra
diff options
context:
space:
mode:
authorDavi Arnaut <Davi.Arnaut@Sun.COM>2010-07-15 10:47:50 -0300
committerDavi Arnaut <Davi.Arnaut@Sun.COM>2010-07-15 10:47:50 -0300
commit649390ac814ce5ea1e77b833ab5fe92dfcfe86d5 (patch)
treeac8b15ac65b08a492c256369b73e372f6568c7a4 /mysql-test/extra
parent06b8897e8e9a27b6ffc562af90153ab63f30e63e (diff)
parent8df20918d6751dc1eeb47ab722269dbd9d2da297 (diff)
downloadmariadb-git-649390ac814ce5ea1e77b833ab5fe92dfcfe86d5.tar.gz
Merge of mysql-trunk-bugfixing into mysql-trunk-merge.
Diffstat (limited to 'mysql-test/extra')
-rw-r--r--mysql-test/extra/binlog_tests/drop_temp_table.test30
-rw-r--r--mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test4
-rw-r--r--mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.inc967
-rw-r--r--mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.test389
4 files changed, 1388 insertions, 2 deletions
diff --git a/mysql-test/extra/binlog_tests/drop_temp_table.test b/mysql-test/extra/binlog_tests/drop_temp_table.test
index 63833c10c14..c852ee4c8a0 100644
--- a/mysql-test/extra/binlog_tests/drop_temp_table.test
+++ b/mysql-test/extra/binlog_tests/drop_temp_table.test
@@ -69,4 +69,34 @@ let $VERSION=`SELECT VERSION()`;
source include/show_binlog_events.inc;
DROP DATABASE `drop-temp+table-test`;
+
+#
+# Bug #54842: DROP TEMPORARY TABLE not binlogged after manual switching binlog format to ROW
+#
+# Sanity test. Checking that implicit DROP event is logged.
+#
+# After BUG#52616, the switch to ROW mode becomes effective even
+# if there are open temporary tables. As such the implicit drop
+# for temporary tables on session closing must be logged.
+#
+
+RESET MASTER;
+
+CREATE TABLE t1 ( i text );
+
+--connect(con1,localhost,root,,)
+CREATE TEMPORARY TABLE ttmp1 ( i text );
+SET @@session.binlog_format=ROW;
+INSERT INTO t1 VALUES ('1');
+SELECT @@session.binlog_format;
+--disconnect con1
+
+-- connection default
+--let $wait_binlog_event= DROP
+--source include/wait_for_binlog_event.inc
+-- source include/show_binlog_events.inc
+RESET MASTER;
+
+DROP TABLE t1;
+
# End of 4.1 tests
diff --git a/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test b/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test
index dd5f9907a21..1fb6b3dcb8a 100644
--- a/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test
+++ b/mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test
@@ -77,11 +77,11 @@ eval UPDATE t2, t1 SET t2.data = CONCAT($data, $data, $data, $data),
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
-if (`SELECT @@binlog_format = 'STATEMENT'`)
+if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
{
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
}
-if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
+if (`SELECT @@binlog_format = 'ROW'`)
{
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2;
}
diff --git a/mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.inc b/mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.inc
new file mode 100644
index 00000000000..2d480349c65
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.inc
@@ -0,0 +1,967 @@
+--source include/have_innodb.inc
+--disable_abort_on_error
+
+if (`SELECT HEX(@commands) = HEX('configure')`)
+{
+ connection master;
+
+ #
+ # Creates a T-table that is never dropped.
+ #
+ --eval CREATE TABLE tt_xx_1 ( id INT ) ENGINE = Innodb
+
+ #
+ # Creates a N-table that is never dropped.
+ #
+ --eval CREATE TABLE nt_xx_1 ( id INT ) ENGINE = MyIsam
+
+ #
+ # Creates a Temporary N-table that is never dropped.
+ #
+ --eval CREATE TEMPORARY TABLE nt_tmp_xx_1 ( id INT ) ENGINE = MyIsam
+
+ #
+ # Creates a Temporary N-table that is never dropped.
+ #
+ --eval CREATE TEMPORARY TABLE tt_tmp_xx_1 ( id INT ) ENGINE = Innodb
+
+ #
+ # In what follows, we create a set of tables that are used
+ # throughout this test case. The number of tables to be
+ # created is give by the variable $tot_table.
+ #
+ #
+ # Creates Temporay N-tables that are automatically dropped and recreated
+ # when a command ends.
+ #
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TEMPORARY TABLE IF EXISTS nt_tmp_$n
+ --eval CREATE TEMPORARY TABLE nt_tmp_$n ( id INT ) ENGINE = MyIsam
+ --disable_query_log
+ --eval SET @check_temp='$available_n_temp'
+ --enable_query_log
+ #
+ # Updates the $available_n_temp that keeps track of the created
+ # temporary N-tables.
+ #
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_n_temp= $available_n_temp,nt_tmp_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_n_temp= nt_tmp_$n
+ }
+ --dec $n
+ }
+
+ #
+ # Creates Temporay T-tables that are automatically dropped and recreated
+ # when a command ends.
+ #
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TEMPORARY TABLE IF EXISTS tt_tmp_$n
+ --eval CREATE TEMPORARY TABLE tt_tmp_$n ( id INT ) ENGINE = Innodb
+ --disable_query_log
+ --eval SET @check_temp='$available_t_temp'
+ --enable_query_log
+ #
+ # Updates the $available_t_temp that keeps track of the created
+ # temporary T-tables.
+ #
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_t_temp= $available_t_temp,tt_tmp_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_t_temp= tt_tmp_$n
+ }
+ --dec $n
+ }
+
+ #
+ # Creates N-tables that are automatically dropped and recreated
+ # when a command ends.
+ #
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TABLE IF EXISTS nt_$n
+ --eval CREATE TABLE nt_$n ( id INT ) ENGINE = MyIsam
+ --disable_query_log
+ --eval SET @check_temp='$available_n'
+ --enable_query_log
+ #
+ # Updates the $available_n that keeps track of the created
+ # N-tables.
+ #
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_n= $available_n,nt_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_n= nt_$n
+ }
+ --dec $n
+ }
+
+ #
+ # Creates T-tables that are automatically dropped and recreated
+ # when a command ends.
+ #
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TABLE IF EXISTS tt_$n
+ --eval CREATE TABLE tt_$n ( id INT ) ENGINE = Innodb
+ --disable_query_log
+ --eval SET @check_temp='$available_t'
+ --enable_query_log
+ #
+ # Updates the $available_t that keeps track of the created
+ # T-tables.
+ #
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_t= $available_t,tt_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_t= tt_$n
+ }
+ --dec $n
+ }
+
+ --let $dropped_t_temp=
+ --let $dropped_n_temp=
+
+ --let $dropped_t=
+ --let $dropped_n=
+
+ let $pos_trans_command= query_get_value("SHOW MASTER STATUS", Position, 1);
+
+ SET @commands= '';
+}
+
+#
+# Drops tables and synchronizes master and slave. Note that temporary
+# tables are not explitcily dropped as they will be dropped while
+# closing the connection.
+#
+if (`SELECT HEX(@commands) = HEX('clean')`)
+{
+ connection master;
+
+ DROP TABLE IF EXISTS tt_xx_1;
+
+ DROP TABLE IF EXISTS nt_xx_1;
+
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TABLE IF EXISTS nt_$n
+ --dec $n
+ }
+
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TABLE IF EXISTS tt_$n
+ --dec $n
+ }
+
+ sync_slave_with_master;
+
+ SET @commands= '';
+}
+
+#
+# This is the core of the test is responsible for processing
+# the following commands:
+#
+# B - Begin
+# C - Commit
+# R - Rollback
+#
+#
+# T - Inserts a row into a T-table
+# N-Temp - Inserts a row into a temporary N-table.
+#
+#
+# T-SELECT-N-Temp - Selects from a temporary N-table and inserts
+# into a T-table.
+# N-SELECT-N-Temp - Selects from a temporary N-table and inserts
+# into a N-table.
+# T-SELECT-T-Temp - Selects from a temporary T-table and inserts
+# into a T-table.
+# N-SELECT-T-Temp - Selects from a temporary T-table and inserts
+# into a N-table.
+#
+#
+# Create-N-Temp - Creates a temporary N-table if a temporary N-table
+# was dropped before
+# Create-T-Temp - Creates a temporary T-table if a temporary T-table
+# was dropped before
+#
+#
+# Drop-Temp-T-Temp - Drops a temporary T-table if there is any
+# Drop-Temp-N-Temp - Drops a temporary N-table if there is any
+# Drop-Temp-TN-Temp - Drops both a temporary T-table and N-table if there
+# is any
+# Drop-Temp-TT-Temp - Drops two temporary T-tables if there is any
+# Drop-Temp-NN-Temp - Drops two temporary N-tables if there is any
+# Drop-Temp-Xe-Temp - Tries to drop a temporary table that does not exist
+# Drop-Temp-NXe-Temp - Drops a temporary N-table if there is any and
+# a temporary table that does not exist
+# Drop-Temp-TXe-Temp - Drops a temporary T-table if there is any and
+# a temporary table that does not exist
+#
+#
+# Drop-Temp-If-Xe-Temp - Tries to drop a temporary table that does not exist
+# Drop-Temp-If-TXe-Temp - Drops a temporary T-table if there is any and
+# a temporary table that does not exist
+#
+#
+# Drop-T - Drops a T-table if there is any
+# Drop-N - Drops a N-table if there is any
+# Drop-Xe - Tries to drop a table that does not exist
+# Drop-TXe - Drops a T-table if there is any and a table that does
+# not exist
+# Drop-NXe - Drops a N-table if there is any and a table that does
+# not exist
+# Drop-TN - Drops both a T-table and N-table if there is any
+# Drop-TT - Drops two T-tables if there is any
+# Drop-NN - Drops two N-tables if there is any
+# Drop-N-TN-Temp - Drops a N-table and both a temporary T-table and
+# N-table if there is any
+#
+#
+# Drop-If-Xe - Tries to drop a table that does not exist
+# Drop-If-TXe - Drops a T-table if there is any and a table that does
+# not exist
+# Drop-If-NXe - Drops a N-table if there is any and a table that does
+# not exist
+#
+while (`SELECT HEX(@commands) != HEX('')`)
+{
+ --disable_query_log
+ SET @command= SUBSTRING_INDEX(@commands, ' ', 1);
+ let $command= `SELECT @command`;
+ --eval SET @check_commands= '$commands'
+ if (`SELECT HEX(@check_commands) = HEX('''')`)
+ {
+ let $commands= `SELECT @commands`;
+ }
+
+ if (`SELECT HEX(@command) = HEX('B')`)
+ {
+ --enable_query_log
+ eval BEGIN;
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('T')`)
+ {
+ --enable_query_log
+ eval INSERT INTO tt_xx_1() VALUES (1);
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('N')`)
+ {
+ --enable_query_log
+ eval INSERT INTO nt_xx_1() VALUES (1);
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('N-Temp')`)
+ {
+ --enable_query_log
+ eval INSERT INTO nt_tmp_xx_1() VALUES (1);
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('N-SELECT-N-Temp')`)
+ {
+ --enable_query_log
+ eval INSERT INTO nt_xx_1 SELECT * FROM nt_tmp_xx_1;
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('N-SELECT-T-Temp')`)
+ {
+ --enable_query_log
+ eval INSERT INTO nt_xx_1 SELECT * FROM tt_tmp_xx_1;
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('T-SELECT-N-Temp')`)
+ {
+ --enable_query_log
+ eval INSERT INTO tt_xx_1 SELECT * FROM nt_tmp_xx_1;
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('T-SELECT-T-Temp')`)
+ {
+ --enable_query_log
+ eval INSERT INTO tt_xx_1 SELECT * FROM tt_tmp_xx_1;
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('Create-N-Temp') || HEX(@command) = HEX('Create-T-Temp')`)
+ {
+ if (`SELECT HEX(@command) = HEX('Create-N-Temp')`)
+ {
+ --let $dropped_temp=$dropped_n_temp
+ --let $available_temp=$available_n_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Create-T-Temp')`)
+ {
+ --let $dropped_temp=$dropped_t_temp
+ --let $available_temp=$available_t_temp
+ }
+
+ --eval SET @check_temp='$dropped_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ SET @temp= SUBSTRING_INDEX(@check_temp, ',', 1);
+ let $table=`SELECT @temp`;
+ --eval SET @check_temp='$available_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_temp= $available_temp,$table
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_temp= $table
+ }
+ --eval SET @check_temp='$dropped_temp'
+ --eval SET @table_temp='$table'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $dropped_temp= `SELECT @check_temp`
+
+ if (`SELECT HEX(@command) = HEX('Create-N-Temp')`)
+ {
+ --enable_query_log
+ --eval CREATE TEMPORARY TABLE $table ( id INT ) engine= MyIsam
+ --disable_query_log
+
+ --let $available_n_temp= $available_temp
+ --let $dropped_n_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Create-T-Temp')`)
+ {
+ --enable_query_log
+ --eval CREATE TEMPORARY TABLE $table ( id INT ) engine= Innodb
+ --disable_query_log
+
+ --let $available_t_temp= $available_temp
+ --let $dropped_t_temp= $dropped_temp
+ }
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-N-Temp') || HEX(@command) = HEX('Drop-Temp-T-Temp') || HEX(@command) = HEX('Drop-T') || HEX(@command) = HEX('Drop-N')`)
+ {
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-N-Temp')`)
+ {
+ --let $dropped_temp=$dropped_n_temp
+ --let $available_temp=$available_n_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-T-Temp')`)
+ {
+ --let $dropped_temp=$dropped_t_temp
+ --let $available_temp=$available_t_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-N')`)
+ {
+ --let $dropped_temp=$dropped_n
+ --let $available_temp=$available_n
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-T')`)
+ {
+ --let $dropped_temp=$dropped_t
+ --let $available_temp=$available_t
+ }
+
+ --eval SET @check_temp='$available_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ SET @temp= SUBSTRING_INDEX(@check_temp, ',', 1);
+ let $table=`SELECT @temp`;
+ --eval SET @check_temp='$dropped_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $dropped_temp= $dropped_temp,$table
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $dropped_temp= $table
+ }
+ --eval SET @check_temp='$available_temp'
+ --eval SET @table_temp='$table'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_temp= `SELECT @check_temp`
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-N-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table
+ --disable_query_log
+
+ --let $available_n_temp= $available_temp
+ --let $dropped_n_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-T-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table
+ --disable_query_log
+
+ --let $available_t_temp= $available_temp
+ --let $dropped_t_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-N')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table
+ --disable_query_log
+
+ --let $available_n= $available_temp
+ --let $dropped_n= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-T')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table
+ --disable_query_log
+
+ --let $available_t= $available_temp
+ --let $dropped_t= $dropped_temp
+ }
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-Xe-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE tt_xx_1
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-If-Xe-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE IF EXISTS tt_xx_1
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Xe')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE xx_1
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-If-Xe')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE IF EXISTS xx_1
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-NXe-Temp') || HEX(@command) = HEX('Drop-Temp-TXe-Temp') || HEX(@command) = HEX('Drop-NXe') || HEX(@command) = HEX('Drop-TXe') || HEX(@command) = HEX('Drop-Temp-If-NXe-Temp') || HEX(@command) = HEX('Drop-Temp-If-TXe-Temp') || HEX(@command) = HEX('Drop-If-NXe') || HEX(@command) = HEX('Drop-If-TXe')`)
+ {
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-NXe-Temp') || HEX(@command) = HEX('Drop-Temp-If-NXe-Temp')`)
+ {
+ --let $dropped_temp=$dropped_n_temp
+ --let $available_temp=$available_n_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-TXe-Temp') || HEX(@command) = HEX('Drop-Temp-If-TXe-Temp')`)
+ {
+ --let $dropped_temp=$dropped_t_temp
+ --let $available_temp=$available_t_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-NXe') || HEX(@command) = HEX('Drop-If-NXe')`)
+ {
+ --let $dropped_temp=$dropped_n
+ --let $available_temp=$available_n
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-TXe') || HEX(@command) = HEX('Drop-If-TXe')`)
+ {
+ --let $dropped_temp=$dropped_t
+ --let $available_temp=$available_t
+ }
+
+ --eval SET @check_temp='$available_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ SET @temp= SUBSTRING_INDEX(@check_temp, ',', 1);
+ let $table=`SELECT @temp`;
+ --eval SET @check_temp='$dropped_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $dropped_temp= $dropped_temp,$table
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $dropped_n_temp= $table
+ }
+ --eval SET @check_temp='$available_temp'
+ --eval SET @table_temp='$table'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_temp= `SELECT @check_temp`
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-NXe-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table, tt_1
+ --disable_query_log
+
+ --let $available_n_temp= $available_temp
+ --let $dropped_n_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-If-NXe-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE IF EXISTS $table, tt_1
+ --disable_query_log
+
+ --let $available_n_temp= $available_temp
+ --let $dropped_n_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-TXe-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table, tt_1
+ --disable_query_log
+
+ --let $available_t_temp= $available_temp
+ --let $dropped_t_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-If-TXe-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE IF EXISTS $table, tt_1
+ --disable_query_log
+
+ --let $available_t_temp= $available_temp
+ --let $dropped_t_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-NXe')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table, xx_1
+ --disable_query_log
+
+ --let $available_n= $available_temp
+ --let $dropped_n= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-If-NXe')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE IF EXISTS $table, xx_1
+ --disable_query_log
+
+ --let $available_n= $available_temp
+ --let $dropped_n= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-TXe')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table, xx_1
+ --disable_query_log
+
+ --let $available_t= $available_temp
+ --let $dropped_t= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-If-TXe')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE IF EXISTS $table, xx_1
+ --disable_query_log
+
+ --let $available_t= $available_temp
+ --let $dropped_t= $dropped_temp
+ }
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-NN-Temp') || HEX(@command) = HEX('Drop-Temp-TT-Temp') || HEX(@command) = HEX('Drop-NN') || HEX(@command) = HEX('Drop-TT')`)
+ {
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-NN-Temp')`)
+ {
+ --let $dropped_temp=$dropped_n_temp
+ --let $available_temp=$available_n_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-TT-Temp')`)
+ {
+ --let $dropped_temp=$dropped_t_temp
+ --let $available_temp=$available_t_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-NN')`)
+ {
+ --let $dropped_temp=$dropped_n
+ --let $available_temp=$available_n
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-TT')`)
+ {
+ --let $dropped_temp=$dropped_t
+ --let $available_temp=$available_t
+ }
+
+ --eval SET @check_temp='$available_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $n= 2
+ while (`SELECT HEX(@check_temp) != HEX('') && $n != 0`)
+ {
+ SET @temp= SUBSTRING_INDEX(@check_temp, ',', 1);
+ let $table=`SELECT @temp`;
+ --eval SET @check_temp='$dropped_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $dropped_temp= $dropped_temp,$table
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $dropped_temp= $table
+ }
+ if (`SELECT $n = 1`)
+ {
+ --let $table_1= $table
+ }
+ if (`SELECT $n = 2`)
+ {
+ --let $table_2= $table
+ }
+
+ --dec $n
+ --eval SET @check_temp='$available_temp'
+ --eval SET @table_temp='$table'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_temp= `SELECT @check_temp`
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-NN-Temp') && $n = 0`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table_1, $table_2
+ --disable_query_log
+
+ --let $available_n_temp= $available_temp
+ --let $dropped_n_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-TT-Temp') && $n= 0`)
+ {
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table_1, $table_2
+ --disable_query_log
+
+ --let $available_t_temp= $available_temp
+ --let $dropped_t_temp= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-NN') && $n = 0`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table_1, $table_2
+ --disable_query_log
+
+ --let $available_n= $available_temp
+ --let $dropped_n= $dropped_temp
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-TT') && $n= 0`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table_1, $table_2
+ --disable_query_log
+
+ --let $available_t= $available_temp
+ --let $dropped_t= $dropped_temp
+ }
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-Temp-TN-Temp')`)
+ {
+ --eval SET @check_temp_t='$available_t_temp'
+ --eval SET @check_temp_n='$available_n_temp'
+ if (`SELECT HEX(@check_temp_t) != HEX('') && HEX(@check_temp_n) != HEX('')`)
+ {
+ SET @temp_t= SUBSTRING_INDEX(@check_temp_t, ',', 1);
+ let $table_t=`SELECT @temp_t`;
+ --eval SET @check_temp_t='$dropped_t_temp'
+ if (`SELECT HEX(@check_temp_t) != HEX('')`)
+ {
+ --let $dropped_t_temp= $dropped_t_temp,$table_t
+ }
+ if (`SELECT HEX(@check_temp_t) = HEX('')`)
+ {
+ --let $dropped_t_temp= $table_t
+ }
+ --eval SET @check_temp='$available_t_temp'
+ --eval SET @table_temp='$table_t'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_t_temp= `SELECT @check_temp`
+
+ SET @temp_n= SUBSTRING_INDEX(@check_temp_n, ',', 1);
+ let $table_n=`SELECT @temp_n`;
+ --eval SET @check_temp_n='$dropped_n_temp'
+ if (`SELECT HEX(@check_temp_n) != HEX('')`)
+ {
+ --let $dropped_n_temp= $dropped_n_temp,$table_n
+ }
+ if (`SELECT HEX(@check_temp_n) = HEX('')`)
+ {
+ --let $dropped_n_temp= $table_n
+ }
+ --eval SET @check_temp='$available_n_temp'
+ --eval SET @table_temp='$table_n'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_t_temp= `SELECT @check_temp`
+
+ --enable_query_log
+ --eval DROP TEMPORARY TABLE $table_t, $table_n
+ --disable_query_log
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-TN')`)
+ {
+ --eval SET @check_temp_t='$available_t'
+ --eval SET @check_temp_n='$available_n'
+ if (`SELECT HEX(@check_temp_t) != HEX('') && HEX(@check_temp_n) != HEX('')`)
+ {
+ SET @temp_t= SUBSTRING_INDEX(@check_temp_t, ',', 1);
+ let $table_t=`SELECT @temp_t`;
+ --eval SET @check_temp_t='$dropped_t'
+ if (`SELECT HEX(@check_temp_t) != HEX('')`)
+ {
+ --let $dropped_t= $dropped_t,$table_t
+ }
+ if (`SELECT HEX(@check_temp_t) = HEX('')`)
+ {
+ --let $dropped_t= $table_t
+ }
+ --eval SET @check_temp='$available_t'
+ --eval SET @table_temp='$table_t'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_t= `SELECT @check_temp`
+
+ SET @temp_n= SUBSTRING_INDEX(@check_temp_n, ',', 1);
+ let $table_n=`SELECT @temp_n`;
+ --eval SET @check_temp_n='$dropped_n'
+ if (`SELECT HEX(@check_temp_n) != HEX('')`)
+ {
+ --let $dropped_n= $dropped_n,$table_n
+ }
+ if (`SELECT HEX(@check_temp_n) = HEX('')`)
+ {
+ --let $dropped_n= $table_n
+ }
+ --eval SET @check_temp='$available_n'
+ --eval SET @table_temp='$table_n'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_t= `SELECT @check_temp`
+
+ --enable_query_log
+ --eval DROP TABLE $table_t, $table_n
+ --disable_query_log
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('Drop-N-TN-Temp') || HEX(@command) = HEX('Drop-TN-Temp')`)
+ {
+ --eval SET @check_temp_t='$available_t_temp'
+ --eval SET @check_temp_n='$available_n_temp'
+ if (`SELECT HEX(@command) = HEX('Drop-N-TN-Temp')`)
+ {
+ --eval SET @check_n='$available_n'
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-TN-Temp')`)
+ {
+ #
+ # Just to be possible to go through the next if...
+ #
+ --eval SET @check_n='...'
+ }
+ if (`SELECT HEX(@check_temp_t) != HEX('') && HEX(@check_temp_n) != HEX('') && HEX(@check_n) != HEX('')`)
+ {
+ SET @temp_t= SUBSTRING_INDEX(@check_temp_t, ',', 1);
+ let $table_temp_t=`SELECT @temp_t`;
+ --eval SET @check_temp_t='$dropped_t_temp'
+ if (`SELECT HEX(@check_temp_t) != HEX('')`)
+ {
+ --let $dropped_t_temp= $dropped_t_temp,$table_temp_t
+ }
+ if (`SELECT HEX(@check_temp_t) = HEX('')`)
+ {
+ --let $dropped_t_temp= $table_temp_t
+ }
+ --eval SET @check_temp='$available_t_temp'
+ --eval SET @table_temp='$table_temp_t'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_t_temp= `SELECT @check_temp`
+
+ SET @temp_n= SUBSTRING_INDEX(@check_temp_n, ',', 1);
+ let $table_temp_n=`SELECT @temp_n`;
+ --eval SET @check_temp_n='$dropped_n_temp'
+ if (`SELECT HEX(@check_temp_n) != HEX('')`)
+ {
+ --let $dropped_n_temp= $dropped_n_temp,$table_temp_n
+ }
+ if (`SELECT HEX(@check_temp_n) = HEX('')`)
+ {
+ --let $dropped_n_temp= $table_temp_n
+ }
+ --eval SET @check_temp='$available_n_temp'
+ --eval SET @table_temp='$table_temp_n'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_n_temp= `SELECT @check_temp`
+
+ if (`SELECT HEX(@command) = HEX('Drop-N-TN-Temp')`)
+ {
+ SET @temp_n= SUBSTRING_INDEX(@check_n, ',', 1);
+ let $table_n=`SELECT @temp_n`;
+ --eval SET @check_n='$dropped_n'
+ if (`SELECT HEX(@check_n) != HEX('')`)
+ {
+ --let $dropped_n= $dropped_n,$table_n
+ }
+ if (`SELECT HEX(@check_n) = HEX('')`)
+ {
+ --let $dropped_n= $table_n
+ }
+ --eval SET @check_temp='$available_n'
+ --eval SET @table_temp='$table_n'
+ SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
+ --let $available_n= `SELECT @check_temp`
+
+ --enable_query_log
+ --eval DROP TABLE $table_temp_t, $table_temp_n, $table_n
+ --disable_query_log
+ }
+ if (`SELECT HEX(@command) = HEX('Drop-TN-Temp')`)
+ {
+ --enable_query_log
+ --eval DROP TABLE $table_temp_t, $table_temp_n
+ --disable_query_log
+ }
+ }
+ }
+
+ if (`SELECT HEX(@command) = HEX('C')`)
+ {
+ --enable_query_log
+ --error 0, ER_GET_ERRMSG
+ eval COMMIT;
+ --disable_query_log
+ }
+
+ if (`SELECT HEX(@command) = HEX('R')`)
+ {
+ --enable_query_log
+ --error 0, ER_GET_ERRMSG
+ eval ROLLBACK;
+ --disable_query_log
+ }
+
+ SET @commands= LTRIM(SUBSTRING(@commands, LENGTH(@command) + 1));
+ if (`SELECT HEX(@commands) = HEX('')`)
+ {
+ let $binlog_start= $pos_trans_command;
+ --echo -b-b-b-b-b-b-b-b-b-b-b- >> $commands << -b-b-b-b-b-b-b-b-b-b-b-
+ --source include/show_binlog_events.inc
+ --echo -e-e-e-e-e-e-e-e-e-e-e- >> $commands << -e-e-e-e-e-e-e-e-e-e-e-
+ --echo
+
+ --disable_warnings
+ --let $available_n_temp=
+ --let $dropped_n_temp=
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TEMPORARY TABLE IF EXISTS nt_tmp_$n
+ --eval CREATE TEMPORARY TABLE nt_tmp_$n ( id INT ) ENGINE = MyIsam
+ --eval SET @check_temp='$available_n_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_n_temp= $available_n_temp,nt_tmp_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_n_temp= nt_tmp_$n
+ }
+ --dec $n
+ }
+
+ --let $available_t_temp=
+ --let $dropped_t_temp=
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TEMPORARY TABLE IF EXISTS tt_tmp_$n
+ --eval CREATE TEMPORARY TABLE tt_tmp_$n ( id INT ) ENGINE = Innodb
+ --eval SET @check_temp='$available_t_temp'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_t_temp= $available_t_temp,tt_tmp_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_t_temp= tt_tmp_$n
+ }
+ --dec $n
+ }
+
+ --let $available_t=
+ --let $dropped_t=
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TABLE IF EXISTS tt_$n
+ --eval CREATE TABLE tt_$n ( id INT ) ENGINE = Innodb
+ --eval SET @check_temp='$available_t'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_t= $available_t,tt_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_t= tt_$n
+ }
+ --dec $n
+ }
+
+ --let $available_n=
+ --let $dropped_n=
+ --let $n= $tot_table
+ while (`SELECT $n != 0`)
+ {
+ --eval DROP TABLE IF EXISTS nt_$n
+ --eval CREATE TABLE nt_$n ( id INT ) ENGINE = MyIsam
+ --eval SET @check_temp='$available_n'
+ if (`SELECT HEX(@check_temp) != HEX('')`)
+ {
+ --let $available_n= $available_n,nt_$n
+ }
+ if (`SELECT HEX(@check_temp) = HEX('')`)
+ {
+ --let $available_n= nt_$n
+ }
+ --dec $n
+ }
+ --enable_warnings
+
+ let $pos_trans_command= query_get_value("SHOW MASTER STATUS", Position, 1);
+ let $commands= '';
+ }
+ --enable_query_log
+}
diff --git a/mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.test b/mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.test
new file mode 100644
index 00000000000..32f8d16b900
--- /dev/null
+++ b/mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.test
@@ -0,0 +1,389 @@
+###############################################################################
+# In this test case, we check how changes to temporary tables are written
+# to the binary log.
+#
+# (TODO --- GET INFO AS SOON AS THE SITE IS AVAILABLE)
+#
+# This test uses the commands available at:
+# extra/rpl_tests/rpl_drop_create_temp_table.inc
+#
+###############################################################################
+
+
+--echo #########################################################################
+--echo # CONFIGURATION
+--echo #########################################################################
+
+call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
+
+--let $tot_table= 2
+SET @commands= 'configure';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo #########################################################################
+--echo # 1 - Tables dropped by "DROP TEMPORARY TABLE"
+--echo #########################################################################
+connection master;
+
+--echo
+--echo #
+--echo #1) Generates in the binlog what follows:
+--echo #
+SET @commands= 'Drop-Temp-T-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-N-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-Xe-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-If-Xe-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-TXe-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-If-TXe-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-NXe-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-If-NXe-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-TN-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-TT-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-NN-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+
+--echo
+--echo #
+--echo #2) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B T Drop-Temp-T-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-T-Temp N Drop-Temp-T-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-N-Temp N Drop-Temp-N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-Xe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-Xe-Temp N Drop-Temp-Xe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-Xe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-Xe-Temp N Drop-Temp-If-Xe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TXe-Temp N Drop-Temp-TXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-TXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-TXe-Temp N Drop-Temp-If-TXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NXe-Temp N Drop-Temp-NXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-NXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-NXe-Temp N Drop-Temp-If-NXe-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TN-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TN-Temp N Drop-Temp-TN-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TT-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TT-Temp N Drop-Temp-TT-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NN-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NN-Temp N Drop-Temp-NN-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+
+--echo
+--echo #
+--echo #3) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B T Drop-Temp-T-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-T-Temp N Drop-Temp-T-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-N-Temp N Drop-Temp-N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-Xe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-Xe-Temp N Drop-Temp-Xe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-Xe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-Xe-Temp N Drop-Temp-If-Xe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TXe-Temp N Drop-Temp-TXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-TXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-TXe-Temp N Drop-Temp-If-TXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NXe-Temp N Drop-Temp-NXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-NXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-If-NXe-Temp N Drop-Temp-If-NXe-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TN-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TN-Temp N Drop-Temp-TN-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TT-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-TT-Temp N Drop-Temp-TT-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NN-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Temp-NN-Temp N Drop-Temp-NN-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+
+--echo #########################################################################
+--echo # 2 - Tables dropped by "DROP TABLE"
+--echo #########################################################################
+connection master;
+
+--echo
+--echo #
+--echo #1) Generates in the binlog what follows:
+--echo #
+SET @commands= 'Drop-T';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-N';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Xe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-If-Xe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-TXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-If-TXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-NXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-If-NXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-TN';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-TT';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-NN';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-N-TN-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-TN-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo
+--echo #
+--echo #2) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B T Drop-T';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-N';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-Xe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-If-Xe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-TXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-If-TXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-NXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-If-NXe';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-TN';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-TT';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-NN';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-N-TN-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B T Drop-TN-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo #########################################################################
+--echo # 3 - CREATE TEMPORARY TABLE
+--echo #########################################################################
+connection master;
+
+--echo
+--echo #
+--echo #1) Generates in the binlog what follows:
+--echo #
+SET @commands= 'Drop-Temp-N-Temp Create-N-Temp Drop-Temp-N-Temp Drop-Temp-N-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'Drop-Temp-T-Temp Create-T-Temp Drop-Temp-T-Temp Drop-Temp-T-Temp';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo
+--echo #
+--echo #2) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B T Drop-Temp-N-Temp Create-N-Temp Drop-Temp-N-Temp Drop-Temp-N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B Drop-Temp-T-Temp Create-T-Temp Drop-Temp-T-Temp Drop-Temp-T-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo
+--echo #
+--echo #3) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B T Drop-Temp-N-Temp Create-N-Temp Drop-Temp-N-Temp Drop-Temp-N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B Drop-Temp-T-Temp Create-T-Temp Drop-Temp-T-Temp Drop-Temp-T-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+
+--echo #########################################################################
+--echo # 4 - CHANGING TEMPORARY TABLES
+--echo #########################################################################
+connection master;
+
+--echo
+--echo #
+--echo #1) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B N N-Temp N-SELECT-N-Temp N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B N N-Temp T-SELECT-N-Temp N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B N N-Temp N-SELECT-T-Temp N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B N N-Temp T-SELECT-T-Temp N-Temp C';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo
+--echo
+--echo #
+--echo #2) Generates in the binlog what follows:
+--echo #
+SET @commands= 'B N N-Temp N-SELECT-N-Temp N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B N N-Temp T-SELECT-N-Temp N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B N N-Temp N-SELECT-T-Temp N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+SET @commands= 'B N N-Temp T-SELECT-T-Temp N-Temp R';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc
+
+--echo ###################################################################################
+--echo # CHECK CONSISTENCY
+--echo ###################################################################################
+connection master;
+sync_slave_with_master;
+
+let $MYSQLD_DATADIR= `SELECT @@datadir`;
+
+--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLD_DATADIR/test-temporary-master.sql
+--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLD_DATADIR/test-temporary-slave.sql
+--diff_files $MYSQLD_DATADIR/test-temporary-master.sql $MYSQLD_DATADIR/test-temporary-slave.sql
+
+--echo #########################################################################
+--echo # CLEAN
+--echo #########################################################################
+SET @commands= 'clean';
+--source extra/rpl_tests/rpl_drop_create_temp_table.inc