--source include/have_innodb.inc --source include/no_valgrind_without_big.inc call mtr.add_suppression("Table `test`.`t2` should have 2 indexes but the tablespace has 1 indexes"); call mtr.add_suppression("Index for table 't2' is corrupt; try to repair it"); call mtr.add_suppression("Trying to read .* bytes at .* outside the bounds of the file: \\..test.t2\\.ibd"); call mtr.add_suppression("InnoDB: File '.*test/t2\\.ibd' is corrupted"); let MYSQLD_DATADIR = `SELECT @@datadir`; CREATE TABLE t1 ( id INT AUTO_INCREMENT PRIMARY KEY, not_id INT, data CHAR(255), data2 BLOB ) ENGINE=INNODB; --disable_query_log --let i = 0 while ($i != 1000) { eval INSERT INTO t1 VALUES (DEFAULT, $i, REPEAT('b', 255), REPEAT('a', 5000)); --inc $i } --enable_query_log ALTER TABLE t1 MODIFY not_id INT UNIQUE KEY; connect (purge_control,localhost,root,,); START TRANSACTION WITH CONSISTENT SNAPSHOT; connection default; DELETE FROM t1 WHERE id % 2 = 1; FLUSH TABLES t1 FOR EXPORT; --copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/tmp.ibd --copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/tmp.cfg perl; use strict; die unless open(FILE, "+<$ENV{MYSQLD_DATADIR}/test/tmp.ibd"); die unless truncate(FILE, 16384*23); close(FILE); EOF UNLOCK TABLES; connection purge_control; COMMIT; connection default; DROP TABLE t1; CREATE TABLE t2 ( id INT AUTO_INCREMENT PRIMARY KEY, not_id INT UNIQUE KEY, data CHAR(255), data2 BLOB ) ENGINE=INNODB; ALTER TABLE t2 DISCARD TABLESPACE; --move_file $MYSQLD_DATADIR/test/tmp.ibd $MYSQLD_DATADIR/test/t2.ibd --move_file $MYSQLD_DATADIR/test/tmp.cfg $MYSQLD_DATADIR/test/t2.cfg --error ER_NOT_KEYFILE ALTER TABLE t2 IMPORT TABLESPACE; DROP TABLE t2;