mirror of
https://github.com/MariaDB/server.git
synced 2025-07-05 12:42:17 +03:00
DURING INNODB RECOVERY Problem: ======= The connection 'master' is dropped by mysqltest after rpl_end.inc. At this point, dropping temporary tables at the connection 'master' are not synced at slave. So, the temporary tables replicated from master remain on slave leading to an inconsistent close of the test. The following test thus complains about the presence of temporary table(s) left over from the previous test. Fix: === - Put explicit drop commands in replication tests so that the temporary tables are dropped at slave as well. - Added the check for Slave_open_temp_tables in mtr_check.sql to warn about the remaining temporary table, if any, at the close of a test.
972 lines
28 KiB
PHP
972 lines
28 KiB
PHP
--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 ($n)
|
|
{
|
|
--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 ($n)
|
|
{
|
|
--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 ($n)
|
|
{
|
|
--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 ($n)
|
|
{
|
|
--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.
|
|
#
|
|
|
|
if (`SELECT HEX(@commands) = HEX('clean')`)
|
|
{
|
|
connection master;
|
|
|
|
DROP TABLE IF EXISTS tt_xx_1;
|
|
|
|
DROP TABLE IF EXISTS nt_xx_1;
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tt_tmp_xx_1;
|
|
DROP TEMPORARY TABLE IF EXISTS nt_tmp_xx_1;
|
|
|
|
--let $n= $tot_table
|
|
while ($n)
|
|
{
|
|
--eval DROP TABLE IF EXISTS nt_$n
|
|
--eval DROP TEMPORARY TABLE IF EXISTS tt_tmp_$n
|
|
--eval DROP TEMPORARY TABLE IF EXISTS nt_tmp_$n
|
|
--dec $n
|
|
}
|
|
|
|
--let $n= $tot_table
|
|
while ($n)
|
|
{
|
|
--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 ($n == 1)
|
|
{
|
|
--let $table_1= $table
|
|
}
|
|
if ($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_n_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 ($n)
|
|
{
|
|
--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 ($n)
|
|
{
|
|
--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 ($n)
|
|
{
|
|
--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 ($n)
|
|
{
|
|
--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
|
|
}
|