--source include/have_innodb.inc --disable_abort_on_error --source include/have_myisam.inc if (`SELECT HEX(@commands) = HEX('configure')`) { connection master; # # Index that is used as an Id to tables that trigger errors. # --let $tt_error_counter=0 --let $nt_error_counter=0 # # 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 T-table that is never dropped. # --eval CREATE TABLE tt_error_1 ( id INT, PRIMARY KEY (id) ) ENGINE = Innodb # # Creates a N-table that is never dropped. # --eval CREATE TABLE nt_error_1 ( id INT, PRIMARY KEY (id) ) ENGINE = MyIsam # # Creates a T-table that is never dropped. # --eval CREATE TABLE tt_error_2 ( id INT, PRIMARY KEY (id) ) ENGINE = Innodb # # Creates a N-table that is never dropped. # --eval CREATE TABLE nt_error_2 ( id INT, PRIMARY KEY (id) ) ENGINE = MyIsam # # Create a trigger nt_error_2 --> tt_error_2 # DELIMITER |; CREATE TRIGGER tr_i_nt_2_to_tt_2 AFTER INSERT ON nt_error_2 FOR EACH ROW BEGIN DECLARE in_stmt_id INTEGER; INSERT INTO tt_error_2(id) VALUES (NEW.id); END| DELIMITER ;| # # 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 TABLE IF EXISTS tt_error_1; DROP TABLE IF EXISTS nt_error_1; DROP TABLE IF EXISTS tt_error_2; DROP TABLE IF EXISTS nt_error_2; 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('Te')`) { --enable_query_log --inc $tt_error_counter eval INSERT INTO tt_error_1() VALUES ($tt_error_counter), ($tt_error_counter); --disable_query_log } if (`SELECT HEX(@command) = HEX('Ne')`) { --enable_query_log --inc $nt_error_counter eval INSERT INTO nt_error_1() VALUES ($nt_error_counter), ($nt_error_counter); --disable_query_log } if (`SELECT HEX(@command) = HEX('NeT-trig')`) { --enable_query_log --inc $nt_error_counter eval INSERT INTO nt_error_1() VALUES ($nt_error_counter), ($nt_error_counter); --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 --replace_column 2 # 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- # Use other connection because include/show_binlog_events.inc # executes SELECT UUID(), which switches to row-logging when # binlog_format=mixed, if there are open temporary tables. This is # due to BUG#13692513. --connection server_1 --source include/show_binlog_events.inc --connection master --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 }