let $MYSQLD_DATADIR = `SELECT @@datadir`; --echo # Test Case 1 : discard without purged CREATE TABLE t1( a INT PRIMARY KEY, b LONGBLOB) ENGINE=InnoDB; INSERT INTO t1 VALUES (1, REPEAT('a',10000)), (2, REPEAT('b',20000)), (3, REPEAT('c',40000)), (4, REPEAT('d',6000000)); SET GLOBAL innodb_purge_stop_now=ON; UPDATE t1 SET b = REPEAT('e',6000000) WHERE a = 4; --echo # Flush the table and store CFG/IBD files to temp FLUSH TABLE t1 FOR EXPORT; --copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/t1.cfg_back --copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/t1.ibd_back UNLOCK TABLES; CREATE TABLE t2( a INT PRIMARY KEY, b LONGBLOB) ENGINE=InnoDB; ALTER TABLE t2 DISCARD TABLESPACE; --echo # Copy CFG/IBD file from temp --copy_file $MYSQLD_DATADIR/t1.cfg_back $MYSQLD_DATADIR/test/t2.cfg --copy_file $MYSQLD_DATADIR/t1.ibd_back $MYSQLD_DATADIR/test/t2.ibd --echo # IMPORT should succeed now ALTER TABLE t2 IMPORT TABLESPACE; SELECT a from t2; INSERT INTO t2 VALUES(5, REPEAT('f',6000000)); #Show file sizes let $fs1 = `SELECT file_size FROM information_schema.innodb_tablespaces WHERE name = 'test/t1'`; let $fs2 = `SELECT file_size FROM information_schema.innodb_tablespaces WHERE name = 'test/t2'`; --echo t1 size : $fs1 --echo t2 size : $fs2 set global innodb_purge_run_now=ON; DROP TABLE t2; DROP TABLE t1; # Cleanup --remove_file $MYSQLD_DATADIR/t1.cfg_back --remove_file $MYSQLD_DATADIR/t1.ibd_back --echo # Test Case 2 : discard waiting for purged CREATE TABLE t1( a INT PRIMARY KEY, b LONGBLOB) ENGINE=InnoDB; INSERT INTO t1 VALUES (1, REPEAT('a',10000)), (2, REPEAT('b',20000)), (3, REPEAT('c',40000)), (4, REPEAT('d',6000000)); UPDATE t1 SET b = REPEAT('e',6000000) WHERE a = 4; --source include/wait_innodb_all_purged.inc --echo # Flush the table and store CFG/IBD files to temp FLUSH TABLE t1 FOR EXPORT; --copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/t1.cfg_back --copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/t1.ibd_back UNLOCK TABLES; CREATE TABLE t2( a INT PRIMARY KEY, b LONGBLOB) ENGINE=InnoDB; ALTER TABLE t2 DISCARD TABLESPACE; --echo # Copy CFG/IBD file from temp --copy_file $MYSQLD_DATADIR/t1.cfg_back $MYSQLD_DATADIR/test/t2.cfg --copy_file $MYSQLD_DATADIR/t1.ibd_back $MYSQLD_DATADIR/test/t2.ibd --echo # IMPORT should succeed now ALTER TABLE t2 IMPORT TABLESPACE; SELECT a from t2; INSERT INTO t2 VALUES(5, REPEAT('f',6000000)); #Show file sizes let $fs1 = `SELECT file_size FROM information_schema.innodb_tablespaces WHERE name = 'test/t1'`; let $fs2 = `SELECT file_size FROM information_schema.innodb_tablespaces WHERE name = 'test/t2'`; --echo t1 size : $fs1 --echo t2 size : $fs2 DROP TABLE t2; DROP TABLE t1; # Cleanup --remove_file $MYSQLD_DATADIR/t1.cfg_back --remove_file $MYSQLD_DATADIR/t1.ibd_back