summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/innodb/t/innodb-wl5522-debug.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/innodb/t/innodb-wl5522-debug.test')
-rw-r--r--mysql-test/suite/innodb/t/innodb-wl5522-debug.test1401
1 files changed, 1401 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/innodb-wl5522-debug.test b/mysql-test/suite/innodb/t/innodb-wl5522-debug.test
new file mode 100644
index 00000000..e642a949
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb-wl5522-debug.test
@@ -0,0 +1,1401 @@
+# mysql-test-run.pl --embedded cannot restart the server.
+--source include/not_embedded.inc
+
+# Adding big test option for this test.
+--source include/big_test.inc
+
+# This test case needs to crash the server. Needs a debug server.
+--source include/have_debug.inc
+
+# Don't test this under valgrind, memory leaks will occur.
+--source include/not_valgrind.inc
+
+# Avoid CrashReporter popup on Mac
+--source include/not_crashrep.inc
+
+--source include/have_innodb.inc
+--source include/default_charset.inc
+--source include/have_sequence.inc
+
+let $restart_noprint=2;
+call mtr.add_suppression("InnoDB: Operating system error number .* in a file operation.");
+call mtr.add_suppression("InnoDB: Error number \\d+ means");
+call mtr.add_suppression("InnoDB: Cannot open datafile for read-only: .*");
+call mtr.add_suppression("InnoDB: Ignoring tablespace .* because it could not be opened.");
+call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
+call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .*");
+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=");
+call mtr.add_suppression("InnoDB: Unknown index id .* on page");
+call mtr.add_suppression("InnoDB: Cannot save statistics for table `test`\\.`t1` because the \\.ibd file is missing");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed read of file '.*ibdata1' page");
+call mtr.add_suppression("InnoDB: File '.*ibdata1' is corrupted");
+FLUSH TABLES;
+
+let MYSQLD_DATADIR =`SELECT @@datadir`;
+let $strerrfix=/ (\(.+\))//;
+SET GLOBAL innodb_file_per_table = 1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = InnoDB;
+INSERT INTO t1 VALUES(1),(2),(3);
+
+--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
+--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
+
+--exec echo wait > $_expect_file_name
+SET SESSION debug_dbug="+d,ib_discard_before_commit_crash";
+--error 2013
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--source include/start_mysqld.inc
+
+DROP TABLE t1;
+
+SET GLOBAL innodb_file_per_table = 1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = InnoDB;
+INSERT INTO t1 VALUES(1),(2),(3);
+
+--exec echo wait > $_expect_file_name
+SET SESSION debug_dbug="+d,ib_discard_after_commit_crash";
+--error 2013
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--source include/start_mysqld.inc
+
+DROP TABLE t1;
+
+SET GLOBAL innodb_file_per_table = 1;
+
+# Create the table that we will use for crash recovery (during IMPORT)
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1), (2), (3), (4);
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_backup_tablespaces("test", "t1");
+EOF
+UNLOCK TABLES;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+--error ER_TABLESPACE_DISCARDED
+SELECT * FROM t1;
+
+--exec echo wait > $_expect_file_name
+SET SESSION debug_dbug="+d,ib_import_before_commit_crash";
+--error 2013
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+--source include/start_mysqld.inc
+
+# Check that the DD is consistent after recovery
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+--exec echo wait > $_expect_file_name
+SET SESSION debug_dbug="+d,ib_import_before_checkpoint_crash";
+--error 2013
+ALTER TABLE 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.
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+--source include/start_mysqld.inc
+
+DROP TABLE t1;
+
+SET @file_per_table= @@innodb_file_per_table;
+SET GLOBAL innodb_file_per_table = 1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+ALTER TABLE t1 IMPORT TABLESPACE;
+CHECK TABLE t1;
+
+SELECT COUNT(*) FROM t1;
+
+INSERT INTO t1 VALUES(400), (500), (600);
+
+SELECT * FROM t1;
+
+DROP TABLE t1;
+
+# Test IO Write error(s), flush tables doesn't return an error message
+# so we have to make do with the error/warning pushed by the server
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET @saved_debug_dbug = @@SESSION.debug_dbug;
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_1";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_2";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_3";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_4";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_5";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_6";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_7";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_8";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_9";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_10";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_11";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+SET SESSION debug_dbug="+d,ib_export_io_write_failure_12";
+
+--replace_regex /, .*\).*t1.cfg/, Bad file descriptor) t1.cfg/
+
+FLUSH TABLES t1 FOR EXPORT;
+
+UNLOCK TABLES;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+# Create a table and save the tablespace and .cfg file
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (100), (200), (300);
+SELECT COUNT(*) FROM t1;
+FLUSH TABLES t1 FOR EXPORT;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_backup_tablespaces("test", "t1");
+EOF
+
+UNLOCK TABLES;
+
+DROP TABLE t1;
+
+# Test IO Read error(s)
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_1";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_2";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_3";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_4";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_5";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_6";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_7";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_8";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_io_read_error_9";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+# Test string read failure
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+SET SESSION debug_dbug="+d,ib_import_string_read_error";
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_cfg_files("test", "t1");
+EOF
+
+--replace_regex $strerrfix
+
+--error ER_IO_READ_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+# Test OOM error during import
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_1";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_2";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_4";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_5";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_6";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_7";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_8";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_9";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+INSERT INTO t1 VALUES (1);
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_OOM_10";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_OUT_OF_RESOURCES
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+####
+# Test handling of internal failure error
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+# Test failure after reset of space id and LSN in the tablespace
+SET SESSION debug_dbug="+d,ib_import_internal_error";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_INTERNAL_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+DROP TABLE t1;
+
+
+# Test failure after reset of space id and LSN in the tablespace
+CREATE TABLE t1 (c1 INT) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "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 t1 IMPORT TABLESPACE;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "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_result \\ /
+--error ER_GET_ERRMSG
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "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 t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "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 t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+# Test failure after importing the cluster index
+SET SESSION debug_dbug="+d,ib_import_cluster_failure";
+
+--error ER_NOT_KEYFILE
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "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 t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+ALTER TABLE t1 IMPORT TABLESPACE;
+DROP TABLE t1;
+
+#
+# Create a large table with delete marked records, disable purge during
+# the update so that we can test the IMPORT purge code.
+#
+CREATE TABLE 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;
+
+# Stop purge so that it doesn't remove the delete marked entries.
+connect (purge_control,localhost,root);
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+connection default;
+
+INSERT INTO t1
+SELECT 1 + seq, 1 + (seq MOD 4),
+ REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048),
+ REPEAT(SUBSTR('abcd', 1 + (seq MOD 4), 1), 2048)
+FROM seq_0_to_127;
+
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c2 = c2 + c1;
+UPDATE t1 SET c3 = REPEAT("c2", 1024);
+UPDATE t1 SET c4 = REPEAT("c4", 1024);
+
+SHOW CREATE TABLE t1;
+
+SELECT c1, c2 FROM t1;
+SELECT COUNT(*) FROM t1;
+SELECT SUM(c2) FROM t1;
+
+FLUSH TABLES t1 FOR EXPORT;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_backup_tablespaces("test", "t1");
+EOF
+
+UNLOCK TABLES;
+
+# Enable normal operation
+connection purge_control;
+COMMIT;
+disconnect purge_control;
+connection default;
+
+DROP TABLE t1;
+
+CREATE TABLE 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;
+
+SELECT c1, c2 FROM t1;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+ALTER TABLE t1 IMPORT TABLESPACE;
+CHECK TABLE t1;
+
+SELECT c1,c2 FROM t1;
+SELECT COUNT(*) FROM t1;
+SELECT SUM(c2) FROM t1;
+
+SHOW CREATE TABLE t1;
+
+DROP TABLE t1;
+
+####
+# Create a table and save the tablespace and .cfg file, we need to create
+# a Btree that has several levels
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+INSERT IGNORE INTO t1 VALUES
+ (100, REPEAT('Karanbir', 899), REPEAT('Ajeeth', 2731));
+
+INSERT INTO t1
+SELECT 100, REPEAT('Karanbir', 128), REPEAT('Ajeeth', 1200)
+FROM seq_1_to_256;
+FLUSH TABLES t1 FOR EXPORT;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_backup_tablespaces("test", "t1");
+EOF
+
+UNLOCK TABLES;
+
+DROP TABLE t1;
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_trigger_corruption_1";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_INTERNAL_ERROR
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+#
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+my $page;
+my $ps = $ENV{INNODB_PAGE_SIZE};
+my $file = "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
+open(FILE, "+<$file") || die "Unable to open $file";
+binmode FILE;
+sysseek(FILE, 3*$ps, 0) || die "Unable to seek $file\n";
+die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
+substr($page,24,2)='42';
+sysseek(FILE, 3*$ps, 0) || die "Unable to rewind $file\n";
+syswrite(FILE, $page, $ps)==$ps || die "Unable to write $file\n";
+close(FILE) || die "Unable to close $file";
+EOF
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_NOT_KEYFILE
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+#
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_trigger_corruption_2";
+
+--error ER_INNODB_INDEX_CORRUPT
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+#
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,ib_import_trigger_corruption_3";
+
+--error ER_NOT_KEYFILE
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+SET SESSION debug_dbug="+d,ib_import_create_index_failure_1";
+
+--error ER_RECORD_FILE_FULL
+ALTER TABLE t1 ADD INDEX idx(c1);
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+ALTER TABLE t1 ADD INDEX idx(c1);
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+#
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,fil_space_create_failure";
+
+--replace_result \\ /
+--error ER_GET_ERRMSG
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+#
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,dict_tf_to_fsp_flags_failure";
+
+--replace_result \\ /
+--error ER_GET_ERRMSG
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+#
+
+CREATE TABLE t1 (c1 INT, c2 VARCHAR(1024), c3 BLOB) ENGINE = Innodb;
+
+ALTER TABLE t1 DISCARD TABLESPACE;
+
+--error ER_TABLESPACE_DISCARDED
+SELECT COUNT(*) FROM t1;
+
+# Restore files
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", "t1");
+EOF
+
+SET SESSION debug_dbug="+d,fsp_flags_is_valid_failure";
+
+--replace_regex /'.*t1.cfg'/'t1.cfg'/
+
+--error ER_NOT_KEYFILE
+ALTER TABLE t1 IMPORT TABLESPACE;
+
+SET SESSION debug_dbug=@saved_debug_dbug;
+
+DROP TABLE t1;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_unlink_tablespace("test", "t1");
+EOF
+
+--disable_query_log
+call mtr.add_suppression("InnoDB: The log sequence numbers [0-9]+ and [0-9]+ in ibdata files do not match the log sequence number [0-9]+ in the ib_logfiles!");
+call mtr.add_suppression("'Resource temporarily unavailable'");
+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("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("Could not find a valid tablespace file for '.*t1'");
+call mtr.add_suppression("while reading index meta-data, expected to read 44 bytes but read only 0 bytes");
+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
+
+SET GLOBAL INNODB_FILE_PER_TABLE=@file_per_table;