mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
c407ee0976
This is the MariaDB equivalent of fixing the MySQL 5.7 regression Bug #26935001 ALTER TABLE AUTO_INCREMENT TRIES TO READ INDEX FROM DISCARDED TABLESPACE Oracle did not publish a test case, but it is easy to guess based on the commit message. The MariaDB code is different due to MDEV-6076 implementing persistent AUTO_INCREMENT. commit_set_autoinc(): Report ER_TABLESPACE_DISCARDED if the tablespace is missing. prepare_inplace_alter_table_dict(): Avoid accessing a discarded tablespace. (This avoids generating warnings in fil_space_acquire().)
49 lines
2.3 KiB
Text
49 lines
2.3 KiB
Text
#
|
|
# Bug#13955083 ALLOW IN-PLACE DDL OPERATIONS ON MISSING
|
|
# OR DISCARDED TABLESPACES
|
|
#
|
|
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);
|
|
SELECT * FROM t;
|
|
ERROR 42S02: Table 'test.t' doesn't exist in engine
|
|
ALTER TABLE t ADD INDEX (a), ALGORITHM=INPLACE;
|
|
ERROR 42S02: Table 'test.t' doesn't exist in engine
|
|
SHOW WARNINGS;
|
|
Level Code Message
|
|
Warning 1812 Tablespace is missing for table 'test/t'
|
|
Error 1932 Table 'test.t' doesn't exist in engine
|
|
ALTER TABLE t ADD INDEX (a), ALGORITHM=COPY;
|
|
ERROR 42S02: Table 'test.t' doesn't exist in engine
|
|
SHOW WARNINGS;
|
|
Level Code Message
|
|
Warning 1812 Tablespace is missing for table 'test/t'
|
|
Error 1932 Table 'test.t' doesn't exist in engine
|
|
ALTER TABLE t AUTO_INCREMENT=1, ALGORITHM=INPLACE;
|
|
ERROR 42S02: Table 'test.t' doesn't exist in engine
|
|
ALTER TABLE t AUTO_INCREMENT=1, ALGORITHM=COPY;
|
|
ERROR 42S02: Table 'test.t' doesn't exist in engine
|
|
ALTER TABLE t ALGORITHM=INPLACE, DISCARD TABLESPACE;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DISCARD TABLESPACE' at line 1
|
|
ALTER TABLE t ALGORITHM=COPY, DISCARD TABLESPACE;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DISCARD TABLESPACE' at line 1
|
|
ALTER TABLE t ALGORITHM=DEFAULT, DISCARD TABLESPACE;
|
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DISCARD TABLESPACE' at line 1
|
|
ALTER TABLE t DISCARD TABLESPACE;
|
|
Warnings:
|
|
Warning 1812 Tablespace is missing for table 'test/t'
|
|
Warning 1812 Tablespace is missing for table 'test/t'
|
|
DROP TABLE t;
|
|
SELECT * FROM `x..d`;
|
|
ERROR 42S02: Table 'test.x..d' doesn't exist in engine
|
|
DROP TABLE `x..d`;
|
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
|
ALTER TABLE t1 AUTO_INCREMENT=1, ALGORITHM=INPLACE;
|
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
|
ALTER TABLE t1 AUTO_INCREMENT=1, FORCE, ALGORITHM=INPLACE;
|
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
|
ALTER TABLE t1 AUTO_INCREMENT=1, ALGORITHM=COPY;
|
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
|
DROP TABLE t1;
|