Current Path : /usr/opt/mysql57/mysql-test/suite/innodb_zip/t/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/opt/mysql57/mysql-test/suite/innodb_zip/t/wl6501_1.test |
#################################################################### # TC to check truncate table statement atomicity for single # # tablespace # # Sceanrio covered: # # 1. Debug points added for worklog # # 2. Table with differnt row types # # 3. Transactional statement. # #################################################################### --source include/have_innodb.inc --source include/have_debug.inc --source include/big_test.inc --source include/have_innodb_16k.inc # Valgrind would result in a "long semaphore wait" inside InnoDB --source include/not_valgrind.inc # Embedded server does not support crashing --source include/not_embedded.inc # Avoid CrashReporter popup on Mac --source include/not_crashrep.inc #----------------------------------------------------------------------- --disable_query_log let $MYSQL_DATA_DIR= `select @@datadir`; let $data_directory = data directory='$MYSQL_TMP_DIR/alt_dir'; let $innodb_file_per_table_orig=`select @@innodb_file_per_table`; call mtr.add_suppression("InnoDB.*table did not exist in the InnoDB data dictionary.*"); call mtr.add_suppression("InnoDB: A page in the doublewrite buffer is not within space bounds.*"); call mtr.add_suppression("InnoDB: Cannot create file.*"); call mtr.add_suppression("InnoDB: Error number 17 means 'File exists'.*"); call mtr.add_suppression("InnoDB: A page in the doublewrite buffer is not within space bounds"); call mtr.add_suppression("InnoDB: Error: table .* does not exist in the InnoDB internal"); --enable_query_log #----------------------------------------------------------------------- set global innodb_file_per_table=on; --echo # Verify that 'TRUNCATE TABLE' statement works fine and the size --echo # of .ibd file is equal to the initial size after truncation. #----------------------------------------------------------------------- drop table if exists t1,t2,t3,t4,t6; let $cnt = 6; while ($cnt) { # table with basic data type + primary ,secondary,composite,prefix index create table t1(c1 int not null, c2 int not null, c3 char(255) not null, c4 text(500) not null, c5 blob(500) not null, c6 varchar(500) not null, c7 varchar(500) not null, c8 datetime, c9 decimal(5,3), primary key (c1), index (c3,c4(50),c5(50)), index (c2)) engine=innodb row_format=redundant; create table t2(c1 int not null, c2 int not null, c3 char(255) not null, c4 text(500) not null, c5 blob(500) not null, c6 varchar(500) not null, c7 varchar(500) not null, c8 datetime, c9 decimal(5,3), primary key (c1), index (c3,c4(50),c5(50)), index (c2)) engine=innodb row_format=compact; # with row type , key block size = 4K create table t3(c1 int not null, c2 int not null, c3 char(255) not null, c4 text(500) not null, c5 blob(500) not null, c6 varchar(500) not null, c7 varchar(500) not null, c8 datetime, c9 decimal(5,3), primary key (c1), index (c3,c4(50),c5(50)), index (c2)) engine=innodb row_format=compressed key_block_size=4; create table t4(c1 int not null, c2 int not null, c3 char(255) not null, c4 text(500) not null, c5 blob(500) not null, c6 varchar(500) not null, c7 varchar(500) not null, c8 datetime, c9 decimal(5,3), primary key (c1), index (c3,c4(50),c5(50)), index (c2)) engine=innodb row_format=dynamic; create temporary table t5(c1 int not null, c2 int not null, c3 char(255) not null, c4 text(500) not null, c5 blob(500) not null, c6 varchar(500) not null, c7 varchar(500) not null, c8 datetime, c9 decimal(5,3), primary key (c1), index (c3,c4(50),c5(50)), index (c2)) engine=innodb; create table t6 ( a int ) engine = innodb; insert into t6 values (50),(100),(150); --disable_query_log --disable_result_log let $n=5; # load created tables. while ($n) { start transaction; eval insert ignore into t1 values( $n, $n, repeat(concat(' tc3_',$n), 42), repeat(concat(' tc4_',$n), 300), repeat(concat(' tc5_',$n), 300), repeat(concat(' tc6_',$n), 300), repeat(concat(' tc7_',$n), 300), now(), (100.55+$n)); eval insert ignore into t2 values( $n, $n, repeat(concat(' tc3_',$n), 42), repeat(concat(' tc4_',$n), 300), repeat(concat(' tc5_',$n), 300), repeat(concat(' tc6_',$n), 300), repeat(concat(' tc7_',$n), 300), now(), (100.55+$n)); eval insert ignore into t3 values( $n, $n, repeat(concat(' tc3_',$n), 42), repeat(concat(' tc4_',$n), 300), repeat(concat(' tc5_',$n), 300), repeat(concat(' tc6_',$n), 300), repeat(concat(' tc7_',$n), 300), now(), (100.55+$n)); eval insert ignore into t4 values( $n, $n, repeat(concat(' tc3_',$n), 42), repeat(concat(' tc4_',$n), 300), repeat(concat(' tc5_',$n), 300), repeat(concat(' tc6_',$n), 300), repeat(concat(' tc7_',$n), 300), now(), (100.55+$n)); eval insert ignore into t5 values( $n, $n, repeat(concat(' tc3_',$n), 42), repeat(concat(' tc4_',$n), 300), repeat(concat(' tc5_',$n), 300), repeat(concat(' tc6_',$n), 300), repeat(concat(' tc7_',$n), 300), now(), (100.55+$n)); if ($n <= 3) { commit; } if ($n > 3) { rollback; } dec $n; } # validate loading of the tables. --enable_result_log --enable_query_log select count(*) from t1; select count(*) from t2; select count(*) from t3; select count(*) from t4; select count(*) from t5; select count(*) from t6; # set the debug crash point and exercise them. if ($cnt == 6) { set session debug="+d,ib_trunc_crash_during_drop_index_temp_table"; --echo "---debug ib_trunc_crash_during_drop_index_temp_table point---" } if ($cnt == 5) { set session debug="+d,ib_trunc_crash_drop_reinit_done_create_to_start"; --echo "---debug ib_trunc_crash_drop_reinit_done_create_to_start---" } if ($cnt >= 5) { --echo # Write file to make mysql-test-run.pl expect crash and restart --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --echo # Run the crashing query --error 2013 truncate table t5; --source include/wait_until_disconnected.inc --enable_reconnect --echo # Restart the MySQL server --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect select count(*) from t1; select count(*) from t2; select count(*) from t3; select count(*) from t4; --error ER_NO_SUCH_TABLE select count(*) from t5; select count(*) from t6; } # set the debug crash point and exercise them. if ($cnt == 6) { set session debug="+d,ib_trunc_crash_on_drop_of_sec_index"; --echo "---debug ib_trunc_crash_on_drop_of_sec_index point---" } if ($cnt == 5) { set session debug="+d,ib_trunc_crash_on_create_of_sec_index"; --echo "---debug ib_trunc_crash_on_create_of_sec_index---" } if ($cnt == 4) { set session debug="+d,ib_trunc_crash_before_log_removal"; --echo "---debug ib_trunc_crash_before_log_removal point---" } if ($cnt == 3) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 2) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 1) { set session debug="+d,ib_trunc_crash_after_redo_log_write_complete"; --echo "---debug ib_trunc_crash_after_redo_log_write_complete point---" } --echo # Write file to make mysql-test-run.pl expect crash and restart --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --echo # Run the crashing query --error 2013 truncate table t1; --source include/wait_until_disconnected.inc --enable_reconnect --echo # Restart the MySQL server --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect select count(*) from t1; select count(*) from t2; select count(*) from t3; select count(*) from t4; --error ER_NO_SUCH_TABLE select count(*) from t5; select count(*) from t6; if ($cnt == 6) { set session debug="+d,ib_trunc_crash_on_drop_of_sec_index"; --echo "---debug ib_trunc_crash_on_drop_of_sec_index point---" } if ($cnt == 5) { set session debug="+d,ib_trunc_crash_on_create_of_sec_index"; --echo "---debug ib_trunc_crash_on_create_of_sec_index---" } if ($cnt == 4) { set session debug="+d,ib_trunc_crash_before_log_removal"; --echo "---debug ib_trunc_crash_before_log_removal point---" } if ($cnt == 3) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 2) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 1) { set session debug="+d,ib_trunc_crash_after_redo_log_write_complete"; --echo "---debug ib_trunc_crash_after_redo_log_write_complete point---" } --echo # Write file to make mysql-test-run.pl expect crash and restart --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --echo # Run the crashing query --error 2013 truncate table t2; --source include/wait_until_disconnected.inc --enable_reconnect --echo # Restart the MySQL server --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect select count(*) from t1; select count(*) from t2; select count(*) from t3; select count(*) from t4; --error ER_NO_SUCH_TABLE select count(*) from t5; select count(*) from t6; if ($cnt == 6) { set session debug="+d,ib_trunc_crash_on_drop_of_sec_index"; --echo "---debug ib_trunc_crash_on_drop_of_sec_index point---" } if ($cnt == 5) { set session debug="+d,ib_trunc_crash_on_create_of_sec_index"; --echo "---debug ib_trunc_crash_on_create_of_sec_index---" } if ($cnt == 4) { set session debug="+d,ib_trunc_crash_before_log_removal"; --echo "---debug ib_trunc_crash_before_log_removal point---" } if ($cnt == 3) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 2) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 1) { set session debug="+d,ib_trunc_crash_after_redo_log_write_complete"; --echo "---debug ib_trunc_crash_after_redo_log_write_complete point---" } --echo # Write file to make mysql-test-run.pl expect crash and restart --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --echo # Run the crashing query --error 2013 truncate table t3; --source include/wait_until_disconnected.inc --enable_reconnect --echo # Restart the MySQL server --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect select count(*) from t1; select count(*) from t2; select count(*) from t3; select count(*) from t4; --error ER_NO_SUCH_TABLE select count(*) from t5; select count(*) from t6; if ($cnt == 6) { set session debug="+d,ib_trunc_crash_on_drop_of_sec_index"; --echo "---debug ib_trunc_crash_on_drop_of_sec_index point---" } if ($cnt == 5) { set session debug="+d,ib_trunc_crash_on_create_of_sec_index"; --echo "---debug ib_trunc_crash_on_create_of_sec_index---" } if ($cnt == 4) { set session debug="+d,ib_trunc_crash_before_log_removal"; --echo "---debug ib_trunc_crash_before_log_removal point---" } if ($cnt == 3) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 2) { set session debug="+d,ib_trunc_crash_after_truncate_done"; --echo "---debug ib_trunc_crash_after_truncate_done point---" } if ($cnt == 1) { set session debug="+d,ib_trunc_crash_after_redo_log_write_complete"; --echo "---debug ib_trunc_crash_after_redo_log_write_complete point---" } --echo # Write file to make mysql-test-run.pl expect crash and restart --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --echo # Run the crashing query --error 2013 truncate table t4; --source include/wait_until_disconnected.inc --enable_reconnect --echo # Restart the MySQL server --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect select count(*) from t1; select count(*) from t2; select count(*) from t3; select count(*) from t4; --error ER_NO_SUCH_TABLE select count(*) from t5; select count(*) from t6; drop table t1, t2, t3, t4, t6; dec $cnt; --disable_query_log eval set global innodb_file_per_table=$innodb_file_per_table_orig; --enable_query_log }