478 lines
18 KiB
Plaintext
478 lines
18 KiB
Plaintext
#
|
|
# These test make sure that tables are visible after rebooting
|
|
#
|
|
|
|
--source include/have_innodb.inc
|
|
|
|
# Embedded server does not support crashing
|
|
--source include/not_embedded.inc
|
|
|
|
# Avoid CrashReporter popup on Mac
|
|
#--source include/not_crashrep.inc
|
|
|
|
SET default_storage_engine=InnoDB;
|
|
|
|
--disable_query_log
|
|
LET $MYSQLD_DATADIR = `select @@datadir`;
|
|
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
|
|
LET $data_directory = DATA DIRECTORY='$MYSQL_TMP_DIR/alt_dir';
|
|
--enable_query_log
|
|
|
|
--mkdir $MYSQL_TMP_DIR/alt_dir
|
|
--mkdir $MYSQL_TMP_DIR/alt_dir/test
|
|
--mkdir $MYSQL_TMP_DIR/new_dir
|
|
--mkdir $MYSQL_TMP_DIR/new_dir/test
|
|
|
|
--disable_query_log
|
|
# These errors are expected in the error log for this test.
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: A tablespace for `test/.*` has been found in multiple places");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Cannot open datafile for read-only:");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Could not find a valid tablespace file for ");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Default location:");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Dictionary location:");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Error number 11 means 'Resource temporarily unavailable'");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Error number 35 means 'Resource temporarily unavailable'");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Error number 38 means 'Function not implemented'.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Failed to find tablespace for table `test`.`.*` in the cache. Attempting to load");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: In file '.*', tablespace id and flags are .* but in the InnoDB data dictionary they are");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number 2 in a file operation.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number 11 in a file operation.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number 35 in a file operation.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number 38 in a file operation.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Remote location:");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: The error means the system cannot find the path specified.");
|
|
call mtr.add_suppression("\\[ERROR\\] InnoDB: Will not open tablespace `test/.*`");
|
|
call mtr.add_suppression("\\[Warning\\] InnoDB: Cannot calculate statistics for table `test`\.`.*` because the \.ibd file is missing");
|
|
call mtr.add_suppression("\\[Warning\\] InnoDB: Ignoring tablespace `test/.*` because it could not be opened.");
|
|
--enable_query_log
|
|
|
|
--echo #
|
|
--echo # Test when tablespaces can be found at multiple places
|
|
--echo # SYS_DATAFILES will refer to the file at alt_dir.
|
|
--echo # Link File will refer to the file at new_dir.
|
|
--echo # Tablename Default SYS_DATAFILES Link_File
|
|
--echo # yyy Yes Yes Yes
|
|
--echo # nyy No Yes Yes
|
|
--echo # yny Yes No Yes
|
|
--echo # yyn Yes Yes No
|
|
--echo # nyw No Yes WrongFile
|
|
--echo # nwy No WrongFile Yes
|
|
--echo # wny WrongFile No Yes
|
|
--echo # ynw Yes No WrongFile
|
|
--echo # wyn WrongFile Yes No
|
|
--echo # ywn Yes WrongFile No
|
|
--echo # nnn No No No
|
|
--echo # www WrongFile WrongFile WrongFile
|
|
--echo # nolink No Yes, No ISL No
|
|
--echo #
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE yyy (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO yyy VALUES (1, 'yyy');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE nyy (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO nyy VALUES (1, 'nyy');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE yny (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO yny VALUES (1, 'yny');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE yyn (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO yyn VALUES (1, 'yyn');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE nyw (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO nyw VALUES (1, 'nyw');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE nwy (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO nwy VALUES (1, 'nwy');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE wny (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO wny VALUES (1, 'wny');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE ynw (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO ynw VALUES (1, 'ynw');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE wyn (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO wyn VALUES (1, 'wyn');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE ywn (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO ywn VALUES (1, 'ywn');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE nnn (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO nnn VALUES (1, 'nnn');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE www (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO www VALUES (1, 'www');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE nolink (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO nolink VALUES (1, 'no link file');
|
|
|
|
--echo #
|
|
--echo # Shutdown the server, copy and remove files.
|
|
--echo #
|
|
--source include/shutdown_mysqld.inc
|
|
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
--echo ---- MYSQL_TMP_DIR/new_dir/test
|
|
--list_files $MYSQL_TMP_DIR/new_dir/test
|
|
|
|
--echo # YYY; Tablespace found in 3 places
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQLD_DATADIR/test/yyy.ibd
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/new_dir/test/yyy.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/yyy.ibd > $MYSQLD_DATADIR/test/yyy.isl
|
|
|
|
--echo # NYY; Tablespace found in alt_dir and new_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/nyy.ibd $MYSQL_TMP_DIR/new_dir/test/nyy.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/nyy.ibd > $MYSQLD_DATADIR/test/nyy.isl
|
|
|
|
--echo # YNY; Tablespace found in default and new_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yny.ibd $MYSQLD_DATADIR/test/yny.ibd
|
|
--move_file $MYSQL_TMP_DIR/alt_dir/test/yny.ibd $MYSQL_TMP_DIR/new_dir/test/yny.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/yny.ibd > $MYSQLD_DATADIR/test/yny.isl
|
|
|
|
--echo # YYN; Tablespace found in default and alt_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyn.ibd $MYSQLD_DATADIR/test/yyn.ibd
|
|
|
|
--echo # NYW; Copy the wrong file to new_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/new_dir/test/nyw.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/nyw.ibd > $MYSQLD_DATADIR/test/nyw.isl
|
|
|
|
--echo # NWY; Move the wrong file to alt_dir, good one to new_dir.
|
|
--move_file $MYSQL_TMP_DIR/alt_dir/test/nwy.ibd $MYSQL_TMP_DIR/new_dir/test/nwy.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/nwy.ibd > $MYSQLD_DATADIR/test/nwy.isl
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/alt_dir/test/nwy.ibd
|
|
|
|
--echo # WNY; Move the wrong file to default, good one to new_dir, delete it form alt_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQLD_DATADIR/test/wny.ibd
|
|
--move_file $MYSQL_TMP_DIR/alt_dir/test/wny.ibd $MYSQL_TMP_DIR/new_dir/test/wny.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/wny.ibd > $MYSQLD_DATADIR/test/wny.isl
|
|
|
|
--echo # YNW; Move the file to default, wrong one to new_dir, delete it form alt_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/ynw.ibd $MYSQLD_DATADIR/test/ynw.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/ynw.ibd
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/new_dir/test/ynw.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/ynw.ibd > $MYSQLD_DATADIR/test/ynw.isl
|
|
|
|
--echo # WYN; Copy the wrong file to default
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQLD_DATADIR/test/wyn.ibd
|
|
|
|
--echo # YWN; Move the file to default, wrong one to alt_dir
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/ywn.ibd $MYSQLD_DATADIR/test/ywn.ibd
|
|
-- remove_file $MYSQL_TMP_DIR/alt_dir/test/ywn.ibd
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/alt_dir/test/ywn.ibd
|
|
|
|
--echo # NNN; Delete the tablespace and ISL
|
|
--remove_file $MYSQLD_DATADIR/test/nnn.isl
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/nnn.ibd
|
|
|
|
--echo # WWW; Put the wrong file in all three locations
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQLD_DATADIR/test/www.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/www.ibd
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/alt_dir/test/www.ibd
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd $MYSQL_TMP_DIR/new_dir/test/www.ibd
|
|
--exec echo $MYSQL_TMP_DIR/new_dir/test/www.ibd > $MYSQLD_DATADIR/test/www.isl
|
|
|
|
--echo # NOLINK; Delete the ISL file Since remote location is still in SYS_DATAFILES,
|
|
--echo # it should still be found. And the ISL file should be re-created.
|
|
--remove_file $MYSQLD_DATADIR/test/nolink.isl
|
|
|
|
--echo # Make a backup of this tablespace to use later.
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak
|
|
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
--echo ---- MYSQL_TMP_DIR/new_dir/test
|
|
--list_files $MYSQL_TMP_DIR/new_dir/test
|
|
|
|
--echo #
|
|
--echo # Start the server and show the tablespaces.
|
|
--echo #
|
|
--source include/start_mysqld.inc
|
|
|
|
--source suite/innodb/include/show_i_s_tablespaces.inc
|
|
|
|
--error ER_TABLESPACE_MISSING
|
|
SELECT * FROM yyy;
|
|
--error ER_TABLESPACE_MISSING
|
|
SELECT * FROM nyy;
|
|
--error ER_TABLESPACE_MISSING
|
|
SELECT * FROM yny;
|
|
--error ER_TABLESPACE_MISSING
|
|
SELECT * FROM yyn;
|
|
SELECT * FROM nyw;
|
|
SELECT * FROM nwy;
|
|
SELECT * FROM wny;
|
|
SELECT * FROM ynw;
|
|
SELECT * FROM wyn;
|
|
SELECT * FROM ywn;
|
|
--error ER_TABLESPACE_MISSING
|
|
SELECT * FROM nnn;
|
|
--error ER_TABLESPACE_MISSING
|
|
SELECT * FROM www;
|
|
SELECT * FROM nolink;
|
|
|
|
--error ER_TABLESPACE_MISSING
|
|
SHOW CREATE TABLE yyy;
|
|
--error ER_TABLESPACE_MISSING
|
|
SHOW CREATE TABLE nyy;
|
|
--error ER_TABLESPACE_MISSING
|
|
SHOW CREATE TABLE yny;
|
|
--error ER_TABLESPACE_MISSING
|
|
SHOW CREATE TABLE yyn;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE nyw;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE nwy;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE wny;
|
|
SHOW CREATE TABLE ynw;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE wyn;
|
|
SHOW CREATE TABLE ywn;
|
|
--error ER_TABLESPACE_MISSING
|
|
SHOW CREATE TABLE nnn;
|
|
--error ER_TABLESPACE_MISSING
|
|
SHOW CREATE TABLE www;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE nolink;
|
|
|
|
--echo #
|
|
--echo # List of files before DROP TABLES
|
|
--echo #
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
--echo ---- MYSQL_TMP_DIR/new_dir/test
|
|
--list_files $MYSQL_TMP_DIR/new_dir/test
|
|
|
|
--echo #
|
|
--echo # Restart the server and DROP the tablespaces.
|
|
--echo #
|
|
--source include/restart_mysqld.inc
|
|
|
|
DROP TABLE yyy;
|
|
DROP TABLE nyy;
|
|
DROP TABLE yny;
|
|
DROP TABLE yyn;
|
|
DROP TABLE nyw;
|
|
DROP TABLE nwy;
|
|
DROP TABLE wny;
|
|
DROP TABLE ynw;
|
|
DROP TABLE wyn;
|
|
DROP TABLE ywn;
|
|
DROP TABLE nnn;
|
|
DROP TABLE www;
|
|
DROP TABLE nolink;
|
|
|
|
--echo #
|
|
--echo # List of files not deleted by the DROP TABLES
|
|
--echo #
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
--echo ---- MYSQL_TMP_DIR/new_dir/test
|
|
--list_files $MYSQL_TMP_DIR/new_dir/test
|
|
|
|
--remove_file $MYSQLD_DATADIR/test/www.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/wny.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/wyn.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/yny.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/yyn.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/yyy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/nwy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/nyy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/www.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/ywn.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/yyn.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/yyy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/new_dir/test/nyw.ibd
|
|
--remove_file $MYSQL_TMP_DIR/new_dir/test/nyy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/new_dir/test/www.ibd
|
|
--remove_file $MYSQL_TMP_DIR/new_dir/test/ynw.ibd
|
|
--remove_file $MYSQL_TMP_DIR/new_dir/test/yny.ibd
|
|
--remove_file $MYSQL_TMP_DIR/new_dir/test/yyy.ibd
|
|
|
|
--echo #
|
|
--echo # List of files after removing leftover files
|
|
--echo #
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
--echo ---- MYSQL_TMP_DIR/new_dir/test
|
|
--list_files $MYSQL_TMP_DIR/new_dir/test
|
|
|
|
--echo #
|
|
--echo # Create some tables again and this time, crash instead of shutdown
|
|
--echo # InnoDB recovery uses MLOG_FILE_records in the REDO log to find the
|
|
--echo # previous location of a tablespace since the dictionary is not
|
|
--echo # available. During recovery InnoDB will choose a file from multiple
|
|
--echo # locations based on this priority;
|
|
--echo # 1. Default location:
|
|
--echo # General Tablespace = datadir
|
|
--echo # File-per-table = datadir/dbname
|
|
--echo # 2. ISL location: if the ISL file exists.
|
|
--echo # 3. REDO log record location from MLOG_FILE_NAME record.
|
|
--echo #
|
|
--echo # Test recovery when tablespaces can be found at multiple places.
|
|
--echo # In each case except the control tablespace, the ISL file will
|
|
--echo # exist with a file name in alt_dir. 'fnolink.ibd.bak' is the
|
|
--echo # source of the 'wrong' tablespaces.
|
|
--echo #
|
|
--echo # Tablename Default_Tablespace Remote_Tablespace
|
|
--echo # ny No Yes
|
|
--echo # wy Wrong Yes
|
|
--echo # yn Yes No
|
|
--echo # yw Yes Wrong
|
|
--echo # yy Yes Yes (both the same file)
|
|
--echo #
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE ny (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO ny VALUES (1, 'ny');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE wy (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO wy VALUES (1, 'wy');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE yn (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO yn VALUES (1, 'yn');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE yw (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO yw VALUES (1, 'yw');
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
eval CREATE TABLE yy (c1 INT KEY, c2 TEXT) ENGINE=InnoDB $data_directory;
|
|
INSERT INTO yy VALUES (1, 'yy');
|
|
|
|
--echo #
|
|
--echo # Crash the server, copy and remove files.
|
|
--echo #
|
|
--source include/no_checkpoint_start.inc
|
|
|
|
BEGIN;
|
|
INSERT INTO ny VALUES (2, 'ny');
|
|
INSERT INTO wy VALUES (2, 'wy');
|
|
INSERT INTO yn VALUES (2, 'yn');
|
|
INSERT INTO yw VALUES (2, 'yw');
|
|
INSERT INTO yy VALUES (2, 'yy');
|
|
|
|
SELECT * FROM ny;
|
|
SELECT * FROM wy;
|
|
SELECT * FROM yn;
|
|
SELECT * FROM yw;
|
|
SELECT * FROM yy;
|
|
|
|
--let CLEANUP_IF_CHECKPOINT=drop table ny,wy,yn,yw,yy;
|
|
--let CLEANUP_FILES_IF_CHECKPOINT=--source suite/innodb/include/innodb-multiple-tablespaces-cleanup.inc
|
|
|
|
#This will kill the server
|
|
--source include/no_checkpoint_end.inc
|
|
|
|
--echo #
|
|
--echo # Now that the engine is not running, move files around to test various scenarios.
|
|
--echo #
|
|
|
|
--echo # NY; Tablespace found in alt_dir but not the default directory.
|
|
|
|
--echo # WY; The wrong tablespace is found in the default directory
|
|
--echo # and the correct one in alt_dir.
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak $MYSQLD_DATADIR/test/wy.ibd
|
|
|
|
--echo # YW; Tablespace is found in the default directory but the wrong file in alt_dir.
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yw.ibd $MYSQLD_DATADIR/test/yw.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/yw.ibd
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak $MYSQL_TMP_DIR/alt_dir/test/yw.ibd
|
|
|
|
--echo # YN; Tablespace found the default directory but not in alt_dir.
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yn.ibd $MYSQLD_DATADIR/test/yn.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/yn.ibd
|
|
|
|
--echo # YY; Found in both default directory and alt-dir.
|
|
--copy_file $MYSQL_TMP_DIR/alt_dir/test/yy.ibd $MYSQLD_DATADIR/test/yy.ibd
|
|
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
|
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err;
|
|
let $mysqld=$MYSQLD_CMD --core-file --console > $SEARCH_FILE 2>&1;
|
|
|
|
--echo # restoring yn.ibd, yw.ibd
|
|
--copy_file $MYSQLD_DATADIR/test/yn.ibd $MYSQL_TMP_DIR/alt_dir/test/yn.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/yn.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/yw.ibd
|
|
--copy_file $MYSQLD_DATADIR/test/yw.ibd $MYSQL_TMP_DIR/alt_dir/test/yw.ibd
|
|
--remove_file $MYSQLD_DATADIR/test/yw.ibd
|
|
|
|
|
|
--source include/start_mysqld.inc
|
|
|
|
SELECT * FROM ny;
|
|
SELECT * FROM wy;
|
|
SELECT * FROM yn;
|
|
SELECT * FROM yw;
|
|
SELECT * FROM yy;
|
|
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE ny;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE wy;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE yn;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE yw;
|
|
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
|
SHOW CREATE TABLE yy;
|
|
|
|
--source suite/innodb/include/show_i_s_tablespaces.inc
|
|
|
|
--echo #
|
|
--echo # List of files before removing unused files
|
|
--echo #
|
|
|
|
DROP TABLE ny;
|
|
DROP TABLE wy;
|
|
DROP TABLE yn;
|
|
DROP TABLE yw;
|
|
DROP TABLE yy;
|
|
|
|
--echo #
|
|
--echo # List of files after DROP TABLES
|
|
--echo #
|
|
--echo ---- MYSQLD_DATADIR/test
|
|
--list_files $MYSQLD_DATADIR/test
|
|
--echo ---- MYSQL_TMP_DIR/alt_dir/test
|
|
--list_files $MYSQL_TMP_DIR/alt_dir/test
|
|
|
|
--remove_file $MYSQLD_DATADIR/test/wy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/yy.ibd
|
|
--remove_file $MYSQL_TMP_DIR/alt_dir/test/nolink.ibd.bak
|
|
|
|
--rmdir $MYSQL_TMP_DIR/alt_dir/test
|
|
--rmdir $MYSQL_TMP_DIR/alt_dir
|
|
--rmdir $MYSQL_TMP_DIR/new_dir/test
|
|
--rmdir $MYSQL_TMP_DIR/new_dir
|