# mysql-test-run.pl --embedded cannot restart the server. --source include/not_embedded.inc # This test case needs to crash the server. Needs a debug server. --source include/have_debug.inc # Valgrind can hang or return spurious messages on DBUG_SUICIDE --source include/not_valgrind.inc # Avoid CrashReporter popup on Mac --source include/not_crashrep.inc -- source include/innodb_page_size_small.inc call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded."); call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue."); call mtr.add_suppression("InnoDB: Page 0 at offset 0 looks corrupted in file .*"); call mtr.add_suppression("InnoDB: Page for tablespace "); call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=0x"); FLUSH TABLES; let MYSQLD_DATADIR =`SELECT @@datadir`; let $pathfix=/: '.*test_wl5522.*t1.ibd'/: 'test_wl5522_t1.ibd'/; SET SESSION innodb_strict_mode=1; let $innodb_file_format_orig=`select @@innodb_file_format`; SET GLOBAL innodb_file_format=Barracuda; CREATE DATABASE test_wl5522; # Create the table that we will use for crash recovery (during IMPORT) CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb ROW_FORMAT=COMPRESSED; INSERT INTO test_wl5522.t1 VALUES (1), (2), (3), (4); --replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/ FLUSH TABLES test_wl5522.t1 FOR EXPORT; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_backup_tablespaces("test_wl5522", "t1"); EOF UNLOCK TABLES; DROP TABLE test_wl5522.t1; CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb ROW_FORMAT=COMPRESSED; INSERT INTO test_wl5522.t1 VALUES (1); ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_discard_tablespaces("test_wl5522", "t1"); EOF --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF ##### Before commit crash SET SESSION debug_dbug="+d,ib_import_before_commit_crash"; --error ER_TABLESPACE_DISCARDED SELECT * FROM test_wl5522.t1; # Write file to make mysql-test-run.pl start up the server again --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect # Execute the statement that causes the crash --error 2013 ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; --enable_reconnect --source include/wait_until_connected_again.inc --disable_reconnect #### Before commit crash # Check that the DD is consistent after recovery ##### Before checkpoint crash SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash"; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Don't start up the server right away. --exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect # Execute the statement that causes the crash --error 2013 ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; # After the above test the results are non-deterministic, # delete the old tablespace files and drop the table, # recreate the table and do a proper import. -- source include/wait_until_disconnected.inc perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF --echo # Restart and reconnect to the server --enable_reconnect --exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect --source include/wait_until_connected_again.inc --disable_reconnect #### Before checkpoint crash # After the above test the results are non-deterministic, recreate the table # and do a proper import. DROP TABLE test_wl5522.t1; SET SESSION innodb_strict_mode=1; SET GLOBAL innodb_file_format=Barracuda; CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb ROW_FORMAT=COMPRESSED; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; CHECK TABLE test_wl5522.t1; SELECT COUNT(*) FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 VALUES(400), (500), (600); SELECT * FROM test_wl5522.t1; DROP TABLE test_wl5522.t1; # Test handling of internal failure error CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb ROW_FORMAT=COMPRESSED; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after reset of space id and LSN in the tablespace SET @saved_debug_dbug = @@SESSION.debug_dbug; SET SESSION debug_dbug="+d,ib_import_internal_error"; --replace_regex /'.*t1.cfg'/'t1.cfg'/ --error ER_INTERNAL_ERROR ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; DROP TABLE test_wl5522.t1; # Test failure after reset of space id and LSN in the tablespace CREATE TABLE test_wl5522.t1 (c1 INT) ENGINE = Innodb ROW_FORMAT=COMPRESSED; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after reset of space id and LSN in the tablespace SET SESSION debug_dbug="+d,ib_import_reset_space_and_lsn_failure"; --replace_regex /'.*t1.cfg'/'t1.cfg'/ --error ER_INTERNAL_ERROR ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug=@saved_debug_dbug; # Test failure after attempting a tablespace open SET SESSION debug_dbug="+d,ib_import_open_tablespace_failure"; --replace_regex /'.*[\/\\]/'/ --error ER_GET_ERRMSG ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after ibuf check SET SESSION debug_dbug="+d,ib_import_check_bitmap_failure"; # Need proper mapping of error codes :-( --error ER_NOT_KEYFILE ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after adjusting the cluster index root page SET SESSION debug_dbug="+d,ib_import_cluster_root_adjust_failure"; --error ER_NOT_KEYFILE ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after importing the cluster index SET SESSION debug_dbug="+d,ib_import_cluster_failure"; --error ER_NOT_KEYFILE ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after importing the secondary index(es) SET SESSION debug_dbug="+d,ib_import_sec_root_adjust_failure"; --error ER_NOT_KEYFILE ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF # Test failure after importing the cluster index SET SESSION debug_dbug="+d,ib_import_set_max_rowid_failure"; --error ER_NOT_KEYFILE ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; # Left over from the failed IMPORT perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF DROP TABLE test_wl5522.t1; --disable_query_log # Enable metrics for the counters we are going to use set global innodb_monitor_enable = purge_stop_count; set global innodb_monitor_enable = purge_resume_count; set global innodb_monitor_enable = ibuf_merges; set global innodb_monitor_enable = ibuf_merges_insert; --enable_query_log # # Create a large table with delete marked records, disable purge during # the update so that we can test the IMPORT purge code. # CREATE TABLE test_wl5522.t1 ( c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 BIGINT, c3 VARCHAR(2048), c4 VARCHAR(2048), INDEX idx1(c2), INDEX idx2(c3(512)), INDEX idx3(c4(512))) Engine=InnoDB ROW_FORMAT=COMPRESSED; # Stop purge so that it doesn't remove the delete marked entries. connect (purge_control,localhost,root); START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; # Disable change buffer merge from the master thread, additionally # enable aggressive flushing so that more changes are buffered. SET GLOBAL innodb_disable_background_merge=ON; SET GLOBAL innodb_monitor_reset = ibuf_merges; SET GLOBAL innodb_monitor_reset = ibuf_merges_insert; INSERT INTO test_wl5522.t1(c2, c3, c4) VALUES (1, REPEAT('a', 2048), REPEAT('a', 2048)), (2, REPEAT('b', 2048), REPEAT('b', 2048)), (3, REPEAT('c', 2048), REPEAT('c', 2048)), (4, REPEAT('d', 2048), REPEAT('d', 2048)); INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1; INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1; INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1; INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1; INSERT INTO test_wl5522.t1(c2, c3, c4) SELECT c2, c3, c4 FROM test_wl5522.t1; DELETE FROM test_wl5522.t1 WHERE c2 = 1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c2 = c2 + c1; UPDATE test_wl5522.t1 SET c3 = REPEAT("c2", 1024); UPDATE test_wl5522.t1 SET c4 = REPEAT("c4", 1024); SHOW CREATE TABLE test_wl5522.t1; SELECT c1, c2 FROM test_wl5522.t1; SELECT COUNT(*) FROM test_wl5522.t1; SELECT SUM(c2) FROM test_wl5522.t1; SELECT name FROM information_schema.innodb_metrics WHERE name = 'ibuf_merges_insert' AND count = 0; FLUSH TABLES test_wl5522.t1 FOR EXPORT; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_backup_tablespaces("test_wl5522", "t1"); EOF UNLOCK TABLES; SELECT name FROM information_schema.innodb_metrics WHERE name = 'ibuf_merges' AND count > 0; SELECT name FROM information_schema.innodb_metrics WHERE name = 'ibuf_merges_inserts' AND count > 0; SET GLOBAL innodb_disable_background_merge=OFF; # Enable normal operation connection purge_control; COMMIT; disconnect purge_control; connection default; DROP TABLE test_wl5522.t1; CREATE TABLE test_wl5522.t1 ( c1 BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 BIGINT, c3 VARCHAR(2048), c4 VARCHAR(2048), INDEX idx1(c2), INDEX idx2(c3(512)), INDEX idx3(c4(512))) Engine=InnoDB ROW_FORMAT=COMPRESSED; SELECT c1, c2 FROM test_wl5522.t1; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; CHECK TABLE test_wl5522.t1; SELECT c1,c2 FROM test_wl5522.t1; SELECT COUNT(*) FROM test_wl5522.t1; SELECT SUM(c2) FROM test_wl5522.t1; SHOW CREATE TABLE test_wl5522.t1; DROP TABLE test_wl5522.t1; #### # Create a table and save the tablespace and .cfg file, we need to create # a Btree that has several levels CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; INSERT IGNORE INTO test_wl5522.t1 VALUES (100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 1200)); INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; INSERT INTO test_wl5522.t1 SELECT * FROM test_wl5522.t1; SELECT COUNT(*) FROM test_wl5522.t1; FLUSH TABLES test_wl5522.t1 FOR EXPORT; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_backup_tablespaces("test_wl5522", "t1"); EOF UNLOCK TABLES; DROP TABLE test_wl5522.t1; CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,ib_import_trigger_corruption_1"; --replace_regex /'.*t1.cfg'/'t1.cfg'/ --error ER_INTERNAL_ERROR ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF # CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure"; --replace_regex /'.*t1.cfg'/'t1.cfg'/ # Following alter is failing #--error ER_INTERNAL_ERROR ////does not fail in 10.0 ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,ib_import_trigger_corruption_2"; --replace_regex $pathfix --error ER_INNODB_INDEX_CORRUPT ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,ib_import_trigger_corruption_3"; --replace_regex /'.*t1.cfg'/'t1.cfg'/ --error ER_NOT_KEYFILE ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; SET SESSION debug_dbug="+d,ib_import_create_index_failure_1"; ALTER TABLE test_wl5522.t1 ADD INDEX idx(c1); SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF # CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,fil_space_create_failure"; --replace_regex /'.*[\/\\]/'/ --error ER_GET_ERRMSG ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF # CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,dict_tf_to_fsp_flags_failure"; --replace_regex /'.*[\/\\]/'/ --error ER_GET_ERRMSG ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF # CREATE TABLE test_wl5522.t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4; ALTER TABLE test_wl5522.t1 DISCARD TABLESPACE; --error ER_TABLESPACE_DISCARDED SELECT COUNT(*) FROM test_wl5522.t1; # Restore files perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_restore_tablespaces("test_wl5522", "t1"); EOF SET SESSION debug_dbug="+d,fsp_flags_is_valid_failure"; --replace_regex /'.*t1.cfg'/'t1.cfg'/ --error ER_INTERNAL_ERROR ALTER TABLE test_wl5522.t1 IMPORT TABLESPACE; SET SESSION debug_dbug=@saved_debug_dbug; DROP TABLE test_wl5522.t1; perl; do "$ENV{MTR_SUITE_DIR}/../innodb/include/innodb-util.pl"; ib_unlink_tablespace("test_wl5522", "t1"); EOF DROP DATABASE test_wl5522; set global innodb_monitor_disable = all; set global innodb_monitor_reset_all = all; -- disable_warnings set global innodb_monitor_enable = default; set global innodb_monitor_disable = default; set global innodb_monitor_reset = default; set global innodb_monitor_reset_all = default; -- enable_warnings --disable_query_log call mtr.add_suppression("'Resource temporarily unavailable'"); call mtr.add_suppression("Monitor ibuf_merges is already enabled"); call mtr.add_suppression("Monitor ibuf_merges_insert is already enabled"); call mtr.add_suppression("Got error -1 when reading table '.*'"); call mtr.add_suppression("InnoDB: Table '.*' tablespace is set as discarded."); call mtr.add_suppression("InnoDB: Tablespace '.*' exists in the cache.*"); call mtr.add_suppression("InnoDB: Freeing existing tablespace '.*' entry from the cache with id.*"); call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded"); call mtr.add_suppression(".*There was an error writing to the meta data file.*"); call mtr.add_suppression("InnoDB: Trying to import a tablespace, but could not open the tablespace file"); call mtr.add_suppression("Unsupported tablespace format"); call mtr.add_suppression("Error in page .* of index \"GEN_CLUST_INDEX\" of table \"test_wl5522\".\"t1\""); call mtr.add_suppression("Page is marked as free"); call mtr.add_suppression("t1.ibd: Page .* at offset .* looks corrupted"); call mtr.add_suppression("but tablespace with that id or name does not exist"); call mtr.add_suppression("Failed to find tablespace for table '\"test_wl5522\".\"t1\"' in the cache"); call mtr.add_suppression("Could not find a valid tablespace file for 'test_wl5522.*t1'"); call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it"); --enable_query_log #cleanup --remove_file $MYSQLTEST_VARDIR/tmp/t1.cfg --remove_file $MYSQLTEST_VARDIR/tmp/t1.ibd eval SET GLOBAL innodb_file_format=$innodb_file_format_orig;