config root man

Current Path : /home/usr.opt/mysql57/mysql-test/suite/innodb/r/

FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64
Upload File :
Current File : //home/usr.opt/mysql57/mysql-test/suite/innodb/r/innodb-wl5980-discard.result

#
# This test shows DISCARD/IMPORT of a remote tablespace.
#
SET default_storage_engine=InnoDB;
SET GLOBAL innodb_file_per_table=ON;
DROP TABLE IF EXISTS t5980;
#
# CREATE TABLE ... DATA DIRECTORY
# combined with  WL#5522 - Transportable Tablespace
# Create the tablespace in MYSQL_TMP_DIR/alt_dir
# InnoDB will create the sub-directories if needed.
# Test that DISCARD and IMPORT work correctly.
#
CREATE TABLE t5980 (a int KEY, b text) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir';
INSERT INTO t5980 VALUES (1, "Create the tablespace");
SELECT * FROM t5980;
a	b
1	Create the tablespace
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.ibd
#
# Check that DATA DIRECTORY shows up in the SHOW CREATE TABLE  results.
#
SHOW CREATE TABLE t5980;
Table	Create Table
t5980	CREATE TABLE `t5980` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
#
# Backup the cfg and ibd files.
#
FLUSH TABLES t5980 FOR EXPORT;
SELECT * FROM t5980;
a	b
1	Create the tablespace
UNLOCK TABLES;
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.ibd
t5980.ibd.bak
#
# Do some DDL and DML.
#
INSERT INTO t5980 VALUES (2,'Remote table has been FLUSHed and UNLOCKed');
START TRANSACTION;
INSERT INTO t5980 VALUES (12,'Transactional record inserted');
COMMIT;
START TRANSACTION;
INSERT INTO t5980 VALUES (13,'Rollback this transactional record');
ROLLBACK;
SELECT COUNT(*) FROM t5980;
COUNT(*)
3
SELECT * FROM t5980;
a	b
1	Create the tablespace
2	Remote table has been FLUSHed and UNLOCKed
12	Transactional record inserted
ALTER TABLE t5980 DROP PRIMARY KEY;
ALTER TABLE t5980 ADD COLUMN c VARCHAR(50) DEFAULT NULL;
INSERT INTO t5980(a,b,c) VALUES (2,'Duplicate value since primary key has been dropped','third column added');
SELECT * FROM t5980;
a	b	c
1	Create the tablespace	NULL
2	Remote table has been FLUSHed and UNLOCKed	NULL
12	Transactional record inserted	NULL
2	Duplicate value since primary key has been dropped	third column added
#
# Make a second backup of the cfg and ibd files.
#
FLUSH TABLES t5980 FOR EXPORT;
SELECT * FROM t5980;
a	b	c
1	Create the tablespace	NULL
2	Remote table has been FLUSHed and UNLOCKed	NULL
12	Transactional record inserted	NULL
2	Duplicate value since primary key has been dropped	third column added
UNLOCK TABLES;
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
#
# DROP the table and make sure all files except the backups are gone.
#
DROP TABLE t5980;
### files in MYSQLD_DATADIR/test
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
#
# CREATE the table again.
#
CREATE TABLE t5980 (a int KEY, b text) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir';
INSERT INTO t5980 VALUES (1, "Create the tablespace a second time");
SELECT * FROM t5980;
a	b
1	Create the tablespace a second time
#
# DISCARD existing tablespace so backed-up .ibd which can be imported/restored
#
ALTER TABLE t5980 DISCARD TABLESPACE;
SELECT * FROM t5980;
ERROR HY000: Tablespace has been discarded for table 't5980'
### files in MYSQLD_DATADIR/test
t5980.frm
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
#
# Restore the second backup of cfg and ibd files.
#
"### files in MYSQL_TMP_DIR/alt_dir/test"
t5980.cfg
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
#
# Try to Import the second backup.  These backups have extra DDL and
# do not match the current frm file.
#
ALTER TABLE t5980 IMPORT TABLESPACE;
ERROR HY000: Schema mismatch (Number of columns don't match, table has 5 columns but the tablespace meta-data file has 6 columns)
CHECK TABLE t5980;
Table	Op	Msg_type	Msg_text
test.t5980	check	Error	Tablespace has been discarded for table 't5980'
test.t5980	check	error	Corrupt
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
#
# Restore the first backup of cfg and ibd files.
#
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
#
# Import the tablespace and do some DDL and DML.
#
ALTER TABLE t5980 IMPORT TABLESPACE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980'
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
CHECK TABLE t5980;
Table	Op	Msg_type	Msg_text
test.t5980	check	status	OK
SELECT COUNT(*) FROM t5980;
COUNT(*)
1
SELECT * FROM t5980;
a	b
1	Create the tablespace
INSERT INTO t5980 VALUES (2,'Inserted record after IMPORT');
SELECT * FROM t5980;
a	b
1	Create the tablespace
2	Inserted record after IMPORT
START TRANSACTION;
INSERT INTO t5980 VALUES (12,'Transactional record inserted');
COMMIT;
START TRANSACTION;
INSERT INTO t5980 VALUES (13,'Rollback this transactional record');
ROLLBACK;
SELECT * FROM t5980;
a	b
1	Create the tablespace
2	Inserted record after IMPORT
12	Transactional record inserted
ALTER TABLE t5980 DROP PRIMARY KEY;
ALTER TABLE t5980 ADD COLUMN c VARCHAR(50) DEFAULT NULL;
INSERT INTO t5980(a,b,c) VALUES (2,'Duplicate value since primary key has been dropped','third column added');
SELECT * FROM t5980;
a	b	c
1	Create the tablespace	NULL
2	Inserted record after IMPORT	NULL
12	Transactional record inserted	NULL
2	Duplicate value since primary key has been dropped	third column added
#
# Show that the system tables have this table in them correctly.
#
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980	test/t5980	97	6	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
test/t5980	TABLESPACE	InnoDB	NORMAL	innodb_file_per_table.##	MYSQL_TMP_DIR/alt_dir/test/t5980.ibd
#
# Drop the imported table and show that the system tables are updated.
#
DROP TABLE t5980;
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
### files in MYSQLD_DATADIR/test
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
#
# CREATE the table a third time.
#
CREATE TABLE t5980 (a int KEY, b text) DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir';
INSERT INTO t5980 VALUES (1, "Create the tablespace a third time");
SELECT * FROM t5980;
a	b
1	Create the tablespace a third time
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
#
# Restart the server
# This test makes sure that you can still execute the FLUSH TABLES command
# after restarting the server and the tablespace can still be found.
#
# restart
SET GLOBAL innodb_file_per_table=ON;
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
SELECT * FROM t5980;
a	b
1	Create the tablespace a third time
FLUSH TABLES t5980 FOR EXPORT;
SELECT * FROM t5980;
a	b
1	Create the tablespace a third time
UNLOCK TABLES;
#
# Restart the server again.  This test makes sure that you can
# still DISCARD a remote table after restarting the server.
#
# restart
SET GLOBAL innodb_file_per_table=ON;
SELECT * FROM t5980;
a	b
1	Create the tablespace a third time
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
ALTER TABLE t5980 DISCARD TABLESPACE;
SELECT * FROM t5980;
ERROR HY000: Tablespace has been discarded for table 't5980'
### files in MYSQLD_DATADIR/test
t5980.frm
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
#
# Restore the backup of *.ibd and *.cfg files
#
### files in MYSQLD_DATADIR/test
t5980.frm
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
#
# Import the tablespace and check it out.
#
ALTER TABLE t5980 IMPORT TABLESPACE;
SELECT * FROM t5980;
a	b
1	Create the tablespace
SHOW CREATE TABLE t5980;
Table	Create Table
t5980	CREATE TABLE `t5980` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
### files in MYSQLD_DATADIR/test
t5980.frm
t5980.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
#
# DISCARD the tablespace again
#
ALTER TABLE t5980 DISCARD TABLESPACE;
SELECT * FROM t5980;
ERROR HY000: Tablespace has been discarded for table 't5980'
### files in MYSQLD_DATADIR/test
t5980.frm
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
#
# Restart the engine while the tablespace is in the discarded state
#
# restart
SET GLOBAL innodb_file_per_table=ON;
SELECT * FROM t5980;
ERROR HY000: Tablespace has been discarded for table 't5980'
CHECK TABLE t5980;
Table	Op	Msg_type	Msg_text
test.t5980	check	Error	Tablespace has been discarded for table 't5980'
test.t5980	check	error	Corrupt
#
# Relocate this discarded file to the default directory
# instead of the remote directory it was discarded from.
# Put cfg and idb files into the default directory.
# Delete the isl file and the remote cfg file.
# Restart the engine again.
# The tablespace is still in the discarded state.
#
### files in MYSQLD_DATADIR/test
t5980.cfg
t5980.frm
t5980.ibd
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd.bak
t5980.ibd.bak2
# Restarting ...
# restart
SET GLOBAL innodb_file_per_table=ON;
SELECT * FROM t5980;
ERROR HY000: Tablespace has been discarded for table 't5980'
CHECK TABLE t5980;
Table	Op	Msg_type	Msg_text
test.t5980	check	Error	Tablespace has been discarded for table 't5980'
test.t5980	check	error	Corrupt
#
# Try to import the tablespace.  It can only be imported from
# the location it was discarded from.
# The error message for 1810 (IO_READ_ERROR) refers to a local path
# so do not display it.
#
ALTER TABLE t5980 IMPORT TABLESPACE;
SELECT * FROM t5980;
ERROR HY000: Tablespace has been discarded for table 't5980'
CHECK TABLE t5980;
Table	Op	Msg_type	Msg_text
test.t5980	check	Error	Tablespace has been discarded for table 't5980'
test.t5980	check	error	Corrupt
#
# Restore the ibd and cfg files to the remote directory.
# Delete the ibd and cfg files from the default directory.
# The isl file is missing, but is no longer needed since the
# remote location is in the data dictionary.
# Import the tablespace and check it out.
#
### files in MYSQLD_DATADIR/test
t5980.frm
### files in MYSQL_TMP_DIR/alt_dir/test
t5980.cfg
t5980.cfg.bak
t5980.cfg.bak2
t5980.ibd
t5980.ibd.bak
t5980.ibd.bak2
ALTER TABLE t5980 IMPORT TABLESPACE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980'
INSERT INTO t5980 VALUES (2, "Insert this record after IMPORT");
SELECT * FROM t5980;
a	b
1	Create the tablespace
2	Insert this record after IMPORT
SHOW CREATE TABLE t5980;
Table	Create Table
t5980	CREATE TABLE `t5980` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
#
# Show that the system tables have this table in them correctly.
#
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980	test/t5980	97	5	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
test/t5980	TABLESPACE	InnoDB	NORMAL	innodb_file_per_table.##	MYSQL_TMP_DIR/alt_dir/test/t5980.ibd
DROP TABLE t5980;
#
# Create a local and remote tablespaces, discard two and make
# the other two missing upon restart, and try some DDL and DML
# on these discarded and missing tablespaces.
#
SET GLOBAL innodb_file_per_table=ON;
CREATE TABLE t5980a (a int, b text) engine=InnoDB;
CREATE TABLE t5980b (a int, b text) engine=InnoDB DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir';
CREATE TABLE t5980c (a int, b text) engine=InnoDB;
CREATE TABLE t5980d (a int, b text) engine=InnoDB DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir';
INSERT INTO t5980a VALUES (1, "Default location, discarded.");
INSERT INTO t5980b VALUES (1, "Remote location, discarded");
INSERT INTO t5980c VALUES (1, "Default location, missing");
INSERT INTO t5980d VALUES (1, "Remote location, missing");
SELECT * FROM t5980a;
a	b
1	Default location, discarded.
SELECT * FROM t5980b;
a	b
1	Remote location, discarded
SELECT * FROM t5980c;
a	b
1	Default location, missing
SELECT * FROM t5980d;
a	b
1	Remote location, missing
SHOW CREATE TABLE t5980a;
Table	Create Table
t5980a	CREATE TABLE `t5980a` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t5980b;
Table	Create Table
t5980b	CREATE TABLE `t5980b` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
SHOW CREATE TABLE t5980c;
Table	Create Table
t5980c	CREATE TABLE `t5980c` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t5980d;
Table	Create Table
t5980d	CREATE TABLE `t5980d` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980a	test/t5980a	33	5	Dynamic	0	Single
test/t5980b	test/t5980b	97	5	Dynamic	0	Single
test/t5980c	test/t5980c	33	5	Dynamic	0	Single
test/t5980d	test/t5980d	97	5	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980a	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980a.ibd
test/t5980b	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980b.ibd
test/t5980c	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980c.ibd
test/t5980d	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980d.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
test/t5980a	TABLESPACE	InnoDB	NORMAL	innodb_file_per_table.##	MYSQLD_DATADIR/test/t5980a.ibd
test/t5980b	TABLESPACE	InnoDB	NORMAL	innodb_file_per_table.##	MYSQL_TMP_DIR/alt_dir/test/t5980b.ibd
test/t5980c	TABLESPACE	InnoDB	NORMAL	innodb_file_per_table.##	MYSQLD_DATADIR/test/t5980c.ibd
test/t5980d	TABLESPACE	InnoDB	NORMAL	innodb_file_per_table.##	MYSQL_TMP_DIR/alt_dir/test/t5980d.ibd
### files in MYSQLD_DATADIR/test
t5980a.frm
t5980a.ibd
t5980b.frm
t5980b.isl
t5980c.frm
t5980c.ibd
t5980d.frm
t5980d.isl
### files in MYSQL_TMP_DIR/alt_dir/test
t5980b.ibd
t5980d.ibd
#
# Shutdown the server, remove two tablespaces, restart server.
#
# restart
FLUSH TABLES t5980a, t5980b FOR EXPORT;
UNLOCK TABLES;
ALTER TABLE t5980a DISCARD TABLESPACE;
ALTER TABLE t5980b DISCARD TABLESPACE;
### files in MYSQLD_DATADIR/test
t5980a.frm
t5980b.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
SELECT * FROM t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
SELECT * FROM t5980b;
ERROR HY000: Tablespace has been discarded for table 't5980b'
SELECT * FROM t5980c;
ERROR HY000: Tablespace is missing for table `test`.`t5980c`.
SELECT * FROM t5980d;
ERROR HY000: Tablespace is missing for table `test`.`t5980d`.
SHOW CREATE TABLE t5980a;
Table	Create Table
t5980a	CREATE TABLE `t5980a` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t5980b;
Table	Create Table
t5980b	CREATE TABLE `t5980b` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
SHOW CREATE TABLE t5980c;
ERROR HY000: Tablespace is missing for table `test`.`t5980c`.
SHOW CREATE TABLE t5980d;
ERROR HY000: Tablespace is missing for table `test`.`t5980d`.
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980a	test/t5980a	33	5	Dynamic	0	Single
test/t5980b	test/t5980b	97	5	Dynamic	0	Single
test/t5980c	test/t5980c	33	5	Dynamic	0	Single
test/t5980d	test/t5980d	97	5	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980a	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980a.ibd
test/t5980b	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980b.ibd
test/t5980c	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980c.ibd
test/t5980d	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980d.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
### files in MYSQLD_DATADIR/test
t5980a.frm
t5980b.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
#
# Discarded and missing tablespaces cannot be TRUNCATED
#
TRUNCATE TABLE t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
TRUNCATE TABLE t5980b;
ERROR HY000: Tablespace has been discarded for table 't5980b'
TRUNCATE TABLE t5980c;
ERROR HY000: Tablespace is missing for table `test`.`t5980c`.
TRUNCATE TABLE t5980d;
ERROR HY000: Tablespace is missing for table `test`.`t5980d`.
#
# Discarded tablespaces can be RENAMED but they remain discarded
#
RENAME TABLE t5980a TO t5980aa;
RENAME TABLE t5980b TO t5980bb;
#
# Missing tablespaces cannot be RENAMED
#
RENAME TABLE t5980c TO t5980cc;
ERROR HY000: Error on rename of './test/t5980c' to './test/t5980cc' (errno: 155 - The table does not exist in engine)
RENAME TABLE t5980d TO t5980dd;
ERROR HY000: Error on rename of './test/t5980d' to './test/t5980dd' (errno: 155 - The table does not exist in engine)
SELECT * FROM t5980a;
ERROR 42S02: Table 'test.t5980a' doesn't exist
SELECT * FROM t5980b;
ERROR 42S02: Table 'test.t5980b' doesn't exist
SELECT * FROM t5980aa;
ERROR HY000: Tablespace has been discarded for table 't5980aa'
SELECT * FROM t5980bb;
ERROR HY000: Tablespace has been discarded for table 't5980bb'
SELECT * FROM t5980c;
ERROR HY000: Tablespace is missing for table `test`.`t5980c`.
SELECT * FROM t5980d;
ERROR HY000: Tablespace is missing for table `test`.`t5980d`.
SHOW CREATE TABLE t5980aa;
Table	Create Table
t5980aa	CREATE TABLE `t5980aa` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t5980bb;
Table	Create Table
t5980bb	CREATE TABLE `t5980bb` (
  `a` int(11) DEFAULT NULL,
  `b` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
SHOW CREATE TABLE t5980c;
ERROR HY000: Tablespace is missing for table `test`.`t5980c`.
SHOW CREATE TABLE t5980d;
ERROR HY000: Tablespace is missing for table `test`.`t5980d`.
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980aa	test/t5980a	33	5	Dynamic	0	Single
test/t5980bb	test/t5980b	97	5	Dynamic	0	Single
test/t5980c	test/t5980c	33	5	Dynamic	0	Single
test/t5980d	test/t5980d	97	5	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980a	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980a.ibd
test/t5980b	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980b.ibd
test/t5980c	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980c.ibd
test/t5980d	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980d.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
#
# Discarded tablespaces cannot be ALTERED with ALGORITHM=COPY.
#
ALTER TABLE t5980aa ADD PRIMARY KEY(a), ALGORITHM=COPY;
ERROR HY000: Tablespace has been discarded for table 't5980aa'
ALTER TABLE t5980bb ADD PRIMARY KEY(a), ALGORITHM=COPY;
ERROR HY000: Tablespace has been discarded for table 't5980bb'
#
# Discarded tablespaces can be ALTERED with ALGORITHM=INPLACE.
#
ALTER TABLE t5980aa ADD PRIMARY KEY(a), ALGORITHM=INPLACE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980aa'
ALTER TABLE t5980bb ADD PRIMARY KEY(a), ALGORITHM=INPLACE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980bb'
### files in MYSQLD_DATADIR/test
t5980aa.frm
t5980bb.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
#
# Missing tablespaces cannot be ALTERED.
#
ALTER TABLE t5980c ADD PRIMARY KEY(a);
ERROR HY000: Tablespace is missing for table `test`.`t5980c`.
ALTER TABLE t5980d ADD PRIMARY KEY(a);
ERROR HY000: Tablespace is missing for table `test`.`t5980d`.
SELECT * FROM t5980aa;
ERROR HY000: Tablespace has been discarded for table 't5980aa'
SELECT * FROM t5980bb;
ERROR HY000: Tablespace has been discarded for table 't5980bb'
SHOW CREATE TABLE t5980aa;
Table	Create Table
t5980aa	CREATE TABLE `t5980aa` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SHOW CREATE TABLE t5980bb;
Table	Create Table
t5980bb	CREATE TABLE `t5980bb` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980aa	test/t5980aa	33	5	Dynamic	0	Single
test/t5980bb	test/t5980bb	97	5	Dynamic	0	Single
test/t5980c	test/t5980c	33	5	Dynamic	0	Single
test/t5980d	test/t5980d	97	5	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980c	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980c.ibd
test/t5980d	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980d.ibd
test/t5980aa	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980aa.ibd
test/t5980bb	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980bb.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
### files in MYSQLD_DATADIR/test
t5980aa.frm
t5980bb.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
#
# Restart the server to check if the discarded flag is persistent
#
# restart
#
# Discarded tablespaces that were ALTERED IN_PLACE are still discarded.
#
INSERT INTO t5980aa VALUES (1, "Inserted into Discarded Local tablespace after ALTER ADD PRIMARY KEY, ALGORITHM=INPLACE");
ERROR HY000: Tablespace has been discarded for table 't5980aa'
INSERT INTO t5980bb VALUES (1, "Inserted into Discarded Local tablespace after ALTER ADD PRIMARY KEY, ALGORITHM=INPLACE");
ERROR HY000: Tablespace has been discarded for table 't5980bb'
SELECT * FROM t5980aa;
ERROR HY000: Tablespace has been discarded for table 't5980aa'
SELECT * FROM t5980bb;
ERROR HY000: Tablespace has been discarded for table 't5980bb'
RENAME TABLE t5980aa TO t5980a;
RENAME TABLE t5980bb TO t5980b;
SHOW CREATE TABLE t5980a;
Table	Create Table
t5980a	CREATE TABLE `t5980a` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980a'
SHOW CREATE TABLE t5980b;
Table	Create Table
t5980b	CREATE TABLE `t5980b` (
  `a` int(11) NOT NULL,
  `b` text,
  PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQL_TMP_DIR/alt_dir/'
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980b'
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
test/t5980a	test/t5980aa	33	5	Dynamic	0	Single
test/t5980b	test/t5980bb	97	5	Dynamic	0	Single
test/t5980c	test/t5980c	33	5	Dynamic	0	Single
test/t5980d	test/t5980d	97	5	Dynamic	0	Single
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
test/t5980c	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980c.ibd
test/t5980d	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980d.ibd
test/t5980aa	Single	DEFAULT	0	Dynamic	MYSQLD_DATADIR/test/t5980aa.ibd
test/t5980bb	Single	DEFAULT	0	Dynamic	MYSQL_TMP_DIR/alt_dir/test/t5980bb.ibd
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
### files in MYSQLD_DATADIR/test
t5980a.frm
t5980b.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
#
# Discard tablespaces again and try another ALTER TABLE ROW_FORMAT.
#
ALTER TABLE t5980a DISCARD TABLESPACE;
Warnings:
Warning	1812	InnoDB: Tablespace is missing for table test/t5980a.
ALTER TABLE t5980b DISCARD TABLESPACE;
Warnings:
Warning	1812	InnoDB: Tablespace is missing for table test/t5980b.
SELECT * FROM t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
SELECT * FROM t5980b;
ERROR HY000: Tablespace has been discarded for table 't5980b'
#
# ALTER TABLE ALGORITHM=COPY cannot use a discarded tablespace.
#
ALTER TABLE t5980a ROW_FORMAT=REDUNDANT, ALGORITHM=COPY;
ERROR HY000: Tablespace has been discarded for table 't5980a'
ALTER TABLE t5980b ROW_FORMAT=REDUNDANT, ALGORITHM=COPY;
ERROR HY000: Tablespace has been discarded for table 't5980b'
#
# ALTER TABLE ALGORITHM=INPLACE can use a discarded tablespace.
#
ALTER TABLE t5980a ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE, LOCK=NONE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980a'
ALTER TABLE t5980b ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE, LOCK=NONE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980b'
#
# Discarded tablespaces that were ALTERED IN_PLACE are still discarded.
#
INSERT INTO t5980a VALUES (1, "Inserted into discarded local tablespace after ALTER ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE");
ERROR HY000: Tablespace has been discarded for table 't5980a'
INSERT INTO t5980b VALUES (1, "Inserted into discarded local tablespace after ALTER ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE");
ERROR HY000: Tablespace has been discarded for table 't5980b'
SELECT * FROM t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
SELECT * FROM t5980b;
ERROR HY000: Tablespace has been discarded for table 't5980b'
### files in MYSQLD_DATADIR/test
t5980a.frm
t5980b.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
#
# Discard tablespaces again and try ALTER TABLE ADD COLUMN.
#
ALTER TABLE t5980a DISCARD TABLESPACE;
Warnings:
Warning	1812	InnoDB: Tablespace is missing for table test/t5980a.
ALTER TABLE t5980b DISCARD TABLESPACE;
Warnings:
Warning	1812	InnoDB: Tablespace is missing for table test/t5980b.
SELECT * FROM t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
SELECT * FROM t5980b;
ERROR HY000: Tablespace has been discarded for table 't5980b'
#
# ALTER TABLE ALGORITHM=COPY cannot use a discarded tablespace.
#
ALTER TABLE t5980a ADD COLUMN c CHAR(20), ALGORITHM=COPY;
ERROR HY000: Tablespace has been discarded for table 't5980a'
ALTER TABLE t5980b ADD COLUMN c CHAR(20), ALGORITHM=COPY;
ERROR HY000: Tablespace has been discarded for table 't5980b'
#
# ALTER TABLE ALGORITHM=INPLACE can use a discarded tablespace.
#
ALTER TABLE t5980a ADD COLUMN c CHAR(20), ALGORITHM=INPLACE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980a'
ALTER TABLE t5980b ADD COLUMN c CHAR(20), ALGORITHM=INPLACE;
Warnings:
Warning	1814	InnoDB: Tablespace has been discarded for table 't5980b'
#
# Discarded tablespaces that were ALTERED IN_PLACE are still discarded.
#
DELETE FROM t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
UPDATE t5980a SET c="Tablespace is DISCARDED";
ERROR HY000: Tablespace has been discarded for table 't5980a'
INSERT INTO t5980a VALUES (1, "Inserted into discarded local tablespace after ALTER ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE", "new column");
ERROR HY000: Tablespace has been discarded for table 't5980a'
INSERT INTO t5980b VALUES (1, "Inserted into discarded local tablespace after ALTER ROW_FORMAT=REDUNDANT, ALGORITHM=INPLACE", "new column");
ERROR HY000: Tablespace has been discarded for table 't5980b'
SELECT * FROM t5980a;
ERROR HY000: Tablespace has been discarded for table 't5980a'
SELECT * FROM t5980b;
ERROR HY000: Tablespace has been discarded for table 't5980b'
### files in MYSQLD_DATADIR/test
t5980a.frm
t5980b.frm
t5980c.frm
t5980d.frm
### files in MYSQL_TMP_DIR/alt_dir/test
DROP TABLE t5980a;
DROP TABLE t5980b;
DROP TABLE t5980c;
DROP TABLE t5980d;
=== information_schema.innodb_sys_tables  and innodb_sys_tablespaces ===
Table Name	Tablespace	Table Flags	Columns	Row Format	Zip Size	Space Type
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
Space_Name	Space_Type	Page_Size	Zip_Size	Formats_Permitted	Path
=== information_schema.files ===
Space_Name	File_Type	Engine	Status	Tablespace_Name	Path
### files in MYSQLD_DATADIR/test
### files in MYSQL_TMP_DIR/alt_dir/test
#
# Cleanup
#

Man Man