Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/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 : //home/usr.opt/mysql57/mysql-test/suite/innodb/t/innodb_wl6560_debug.test |
# # WL#6560: InnoDB: separate tablespace for innodb-temp-tables. # --source include/have_innodb.inc --source include/have_debug.inc # Valgrind can hang or return spurious messages on DBUG_SUICIDE --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 --source include/have_innodb_max_16k.inc # In the test scenario, there can be orphaned .frm files. # These are expected. So suppressing the associated warnings. call mtr.add_suppression("\\[ERROR\\] InnoDB: table .* does not exist " "in the InnoDB internal"); ################################################################################ # # Will test following scenarios: # 1. hit a crash point during tablespace creation to ensure temp-table # is recovered correctly. # 2. hit a crash point during table creation. # 3. hit a crash point during tablespace expansion. # 4. hit a crash point while appying log # ################################################################################ #----------------------------------------------------------------------------- # # create test-bed # set global innodb_file_per_table = off; let $MYSQL_TMP_DIR = `select @@tmpdir`; let $MYSQL_DATA_DIR = `select @@datadir`; let SEARCH_FILE = $MYSQLTEST_VARDIR/log/my_restart.err; let $args = --loose-console > $SEARCH_FILE 2>&1; let crash = $args --innodb-force-recovery-crash; #----------------------------------------------------------------------------- # # 1. hit a crash point during tablespace creation to ensure temp-table # is recovered correctly. # --echo "testing creation of tablepsace by enabling error path" --echo # files in MYSQL_DATA_DIR --list_files $MYSQL_DATA_DIR/ ibtmp* # --source include/shutdown_mysqld.inc # --echo "Temp-tablespace removed on shutdown" --echo # files in MYSQL_DATA_DIR --list_files $MYSQL_DATA_DIR/ ibtmp* --echo --innodb-force-recovery-crash=100 --echo "Next stmt will crash server" --error 137,3 --exec $MYSQLD_CMD $crash=100 let SEARCH_PATTERN = InnoDB: Creating shared tablespace for temporary tables; --source include/search_pattern_in_file.inc # --source include/start_mysqld.inc --echo # files in MYSQL_DATA_DIR --list_files $MYSQL_DATA_DIR/ ibtmp* create temporary table t1 (keyc int, c1 char(100), c2 char(100)) engine=innodb; insert into t1 values (1, 'c', 'b'); select * from t1; drop table t1; #----------------------------------------------------------------------------- # # 2. hit a crash point during table creation. # --echo "try hitting crash-point during table creation" --echo # files in MYSQL_DATA_DIR --list_files $MYSQL_DATA_DIR/ ibtmp* --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect set session debug="+d,ib_ddl_crash_during_create2"; --error 2013 create temporary table t1 (a int, b int, primary key(a), index(b)) engine = innodb; --enable_reconnect --source include/wait_until_connected_again.inc --disable_reconnect --echo # files in MYSQL_DATA_DIR --list_files $MYSQL_DATA_DIR/ ibtmp* create temporary table t1 (a int, b int, primary key(a), index(b)) engine = innodb; insert into t1 values (1, 2); select * from t1; drop table t1; #----------------------------------------------------------------------------- # # 3. hit a crash point during tablespace expansion. # set session debug="-d,ib_ddl_crash_during_create"; use test; create temporary table t1 (a int, b char(100), c char(100)) engine = innodb; create table t2 (a int, b char(100), c char(100)) engine = innodb; delimiter |; create procedure populate_t1_t2() begin declare i int default 1; while (i <= 5000) DO insert into t1 values (i, 'a', 'b'); insert into t2 values (i, 'a', 'b'); set i = i + 1; end while; end| delimiter ;| set autocommit = 0; --disable_query_log call populate_t1_t2(); --echo # set debug point ib_crash_during_tablespace_extension --enable_query_log set session debug="+d,ib_crash_during_tablespace_extension"; select count(*) from t1; select count(*) from t2; commit; show tables; select count(*) from t1; select count(*) from t2; --echo # stnt will result in tablespace extension --exec echo "restart " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --error 2013 call populate_t1_t2(); # --enable_reconnect # Write file to make mysql-test-run.pl start up the server again --source include/wait_until_connected_again.inc --disable_reconnect # use test; show tables; select count(*) from t2; select * from t2 limit 10; set autocommit = 1; truncate table t2; select count(*) from t2; # drop procedure populate_t1_t2; drop table t2; #----------------------------------------------------------------------------- # # 4. hit a crash point while appying log # use test; create temporary table t1 (a int, b char(100), c char(100)) engine = innodb; create table t2 (a int, b char(100), c char(100)) engine = innodb; insert into t1 values (1, 'a', 'b'); insert into t2 values (1, 'a', 'b'); select * from t1; select * from t2; set session debug="+d,crash_commit_after"; --exec echo "restart " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --error 2013 insert into t2 values (2, 'a', 'b'); # --enable_reconnect # Write file to make mysql-test-run.pl start up the server again --source include/wait_until_connected_again.inc --disable_reconnect use test; show tables; select * from t2; insert into t2 values (3, 'a', 'b'); select * from t2; # create temporary table t1 (a int, b char(100), c char(100)) engine = innodb; insert into t1 values (1, 'a', 'b'); begin; insert into t2 values (4, 'a', 'b'); --source include/kill_and_restart_mysqld.inc show tables; select * from t2; update t2 set a = a * -1; select * from t2 order by a; # create temporary table t1 (a int, b char(100), c char(100)) engine = innodb; insert into t1 values (1, 'a', 'b'); begin; insert into t1 values (4, 'a', 'b'); # crash on temp table commit_before --source include/kill_and_restart_mysqld.inc show tables; SELECT * from t2; update t2 set a = a * -1; SELECT * from t2 order by a; # drop table t2;