diff options
Diffstat (limited to 'mysql-test/suite/innodb/t/alter_missing_tablespace.test')
-rw-r--r-- | mysql-test/suite/innodb/t/alter_missing_tablespace.test | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/alter_missing_tablespace.test b/mysql-test/suite/innodb/t/alter_missing_tablespace.test new file mode 100644 index 00000000..9742adc3 --- /dev/null +++ b/mysql-test/suite/innodb/t/alter_missing_tablespace.test @@ -0,0 +1,76 @@ +--source include/not_embedded.inc +--source include/innodb_page_size.inc +--source include/no_valgrind_without_big.inc + +--echo # +--echo # Bug#13955083 ALLOW IN-PLACE DDL OPERATIONS ON MISSING +--echo # OR DISCARDED TABLESPACES +--echo # + +--disable_query_log +call mtr.add_suppression("InnoDB: Cannot open datafile for read-only: "); +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: Ignoring tablespace for test/\(t\|x@002e@002ed\) because it could not be opened"); +call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing"); +call mtr.add_suppression("Could not find a valid tablespace file for"); +call mtr.add_suppression("InnoDB: Failed to find tablespace for table `test`\.`\(t\|x\.\.d\)` in the cache"); +call mtr.add_suppression("InnoDB: Cannot delete tablespace [0-9]+.*not found"); +call mtr.add_suppression("Table .* in the InnoDB data dictionary has tablespace id .*, but tablespace with that id or name does not exist"); +call mtr.add_suppression("InnoDB: ALTER TABLE `test`.`t` DISCARD TABLESPACE failed to find tablespace"); +--enable_query_log + +let $MYSQLD_DATADIR=`select @@datadir`; +SET GLOBAL innodb_file_per_table=1; +CREATE TABLE t(a SERIAL)ENGINE=InnoDB; +CREATE TABLE `x..d` (a INT PRIMARY KEY, b INT) ENGINE=InnoDB; +CREATE TABLE t1(a SERIAL)ENGINE=InnoDB; +INSERT INTO t1 VALUES(1),(2),(3); + +--source include/shutdown_mysqld.inc + +# Remove the tablespace files. +--remove_file $MYSQLD_DATADIR/test/t.ibd +--remove_file $MYSQLD_DATADIR/test/x@002e@002ed.ibd + +--source include/start_mysqld.inc + +# The table does exist, only the tablespace does not exist. +--error ER_GET_ERRNO +SELECT * FROM t; + +--error ER_GET_ERRNO +ALTER TABLE t ADD INDEX (a), ALGORITHM=INPLACE; +SHOW WARNINGS; + +--error ER_GET_ERRNO +ALTER TABLE t ADD INDEX (a), ALGORITHM=COPY; +SHOW WARNINGS; + +--error ER_GET_ERRNO +ALTER TABLE t AUTO_INCREMENT=1, ALGORITHM=INPLACE; +--error ER_GET_ERRNO +ALTER TABLE t AUTO_INCREMENT=1, ALGORITHM=COPY; + +--error ER_PARSE_ERROR +ALTER TABLE t ALGORITHM=INPLACE, DISCARD TABLESPACE; +--error ER_PARSE_ERROR +ALTER TABLE t ALGORITHM=COPY, DISCARD TABLESPACE; +--error ER_PARSE_ERROR +ALTER TABLE t ALGORITHM=DEFAULT, DISCARD TABLESPACE; +ALTER TABLE t DISCARD TABLESPACE; +RENAME TABLE t TO u; +RENAME TABLE u TO v; +DROP TABLE v; +--error ER_GET_ERRNO +SELECT * FROM `x..d`; +DROP TABLE `x..d`; + +ALTER TABLE t1 DISCARD TABLESPACE; +--error ER_TABLESPACE_DISCARDED +ALTER TABLE t1 AUTO_INCREMENT=1, ALGORITHM=INPLACE; +--error ER_TABLESPACE_DISCARDED +ALTER TABLE t1 AUTO_INCREMENT=1, FORCE, ALGORITHM=INPLACE; +--error ER_TABLESPACE_DISCARDED +ALTER TABLE t1 AUTO_INCREMENT=1, ALGORITHM=COPY; +DROP TABLE t1; |