238 lines
6.8 KiB
Plaintext
238 lines
6.8 KiB
Plaintext
# Tests for the SECONDARY_ENGINE table option.
|
|
|
|
--echo #
|
|
--echo # Attempt to load table into an undefined secondary engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT);
|
|
--error ER_SECONDARY_ENGINE
|
|
ALTER TABLE t1 SECONDARY_LOAD;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to load table into an unknown storage engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
|
ALTER TABLE t1 SECONDARY_LOAD;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to load table into an unsupported secondary storage engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE InnoDB;
|
|
--error ER_SECONDARY_ENGINE
|
|
ALTER TABLE t1 SECONDARY_LOAD;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Create a table with a secondary engine defined.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to redefine the secondary engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_SECONDARY_ENGINE
|
|
ALTER TABLE t1 SECONDARY_ENGINE ANOTHER_NONEXISTENT;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Define and undefine secondary engine (without loading in-between).
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
ALTER TABLE t1 SECONDARY_ENGINE NULL;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to create a temporary table with a secondary engine defined.
|
|
--echo #
|
|
--error ER_SECONDARY_ENGINE
|
|
CREATE TEMPORARY TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_SECONDARY_ENGINE
|
|
CREATE TEMPORARY TABLE t2 LIKE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to create a table with a primary engine that does not support
|
|
--echo # loading tables into a secondary engine.
|
|
--error ER_CHECK_NOT_IMPLEMENTED
|
|
CREATE TABLE t1 (a INT) ENGINE MYISAM SECONDARY_ENGINE NONEXISTENT;
|
|
|
|
--echo #
|
|
--echo # Attempt to change primary storage engine to an engine that does not
|
|
--echo # support loading into a secondary engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) ENGINE InnoDB SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 ENGINE MYISAM;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to use SECONDARY_LOAD when creating table.
|
|
--echo #
|
|
--error ER_PARSE_ERROR
|
|
CREATE TABLE t1 (a INT) SECONDARY_LOAD;
|
|
--error ER_PARSE_ERROR
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT, SECONDARY_LOAD;
|
|
|
|
--echo #
|
|
--echo # Attempt to alter a table after a secondary engine has been defined.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 COMMENT="Test";
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 COMMENT="Test", ALGORITHM=INPLACE;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 COMMENT="Test", ALGORITHM=COPY;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 ADD COLUMN (b INT);
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 ADD COLUMN (b INT), ALGORITHM=INPLACE;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 ADD COLUMN (b INT), ALGORITHM=COPY;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to truncate a table after a secondary engine has been defined.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
TRUNCATE TABLE t1;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to alter table after its secondary engine has been removed.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 SECONDARY_ENGINE NULL;
|
|
ALTER TABLE t1 COMMENT="Test";
|
|
ALTER TABLE t1 ADD COLUMN (b INT);
|
|
ALTER TABLE t1 SECONDARY_ENGINE NONEXISTENT;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to truncate table after its secondary engine is removed
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 SECONDARY_ENGINE NULL;
|
|
TRUNCATE TABLE t1;
|
|
ALTER TABLE t1 SECONDARY_ENGINE NONEXISTENT;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to rename a table with a secondary engine defined.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT) SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
RENAME TABLE t1 TO t2;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Attempt to use SECONDARY_LOAD in conjunction with another DDL.
|
|
--echo #
|
|
CREATE TABLE t1 (i INT);
|
|
--error ER_PARSE_ERROR
|
|
ALTER TABLE t1 SECONDARY_LOAD, ADD KEY idx(i);
|
|
ALTER TABLE t1 SECONDARY_ENGINE NONEXISTENT;
|
|
--error ER_PARSE_ERROR
|
|
ALTER TABLE t1 SECONDARY_LOAD, ADD KEY idx(i);
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Set NOT SECONDARY on columns when creating table.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT NOT SECONDARY, b INT NOT SECONDARY);
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 MODIFY a INT;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Set NOT SECONDARY after create table.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT, b INT);
|
|
ALTER TABLE t1 MODIFY a INT NOT SECONDARY;
|
|
ALTER TABLE t1 MODIFY b INT NOT SECONDARY;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # It should not be possible to set or remove NOT SECONDARY on a column
|
|
--echo # if the table is defined with a secondary engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT NOT SECONDARY, b INT NOT SECONDARY);
|
|
ALTER TABLE t1 MODIFY a INT;
|
|
ALTER TABLE t1 SECONDARY_ENGINE MOCK;
|
|
SHOW CREATE TABLE t1;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 MODIFY b INT;
|
|
--error ER_SECONDARY_ENGINE_DDL
|
|
ALTER TABLE t1 MODIFY a INT NOT SECONDARY;
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 SECONDARY_ENGINE NULL;
|
|
ALTER TABLE t1 MODIFY b INT;
|
|
ALTER TABLE t1 MODIFY a INT NOT SECONDARY;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Parts of the primary key can be excluded from the secondary engine.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT, b INT NOT SECONDARY, PRIMARY KEY(a, b));
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # Set and remove NOT SECONDARY in conjunction with other column options.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT, b INT);
|
|
ALTER TABLE t1 MODIFY a INT NOT NULL NOT SECONDARY;
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 MODIFY a INT NOT NULL;
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 MODIFY a INT NOT SECONDARY;
|
|
SHOW CREATE TABLE t1;
|
|
ALTER TABLE t1 MODIFY a INT NOT SECONDARY, SECONDARY_ENGINE MOCK;
|
|
SHOW CREATE TABLE t1;
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # NOT SECONDARY should be preserved with CREATE TABLE as SELECT FROM.
|
|
--echo #
|
|
CREATE TABLE t1 (a INT NOT SECONDARY, b INT, c INT NOT SECONDARY) SECONDARY_ENGINE MOCK;
|
|
CREATE TABLE t2 AS SELECT * FROM t1;
|
|
SHOW CREATE TABLE t1;
|
|
SHOW CREATE TABLE t2;
|
|
DROP TABLE t1, t2;
|
|
|
|
--echo #
|
|
--echo # CREATE TABLE LIKE with NOT SECONDARY columns
|
|
--echo #
|
|
CREATE TABLE t1 (a INT NOT SECONDARY, b INT, c INT NOT SECONDARY) SECONDARY_ENGINE MOCK;
|
|
CREATE TABLE t2 LIKE t1;
|
|
SHOW CREATE TABLE t1;
|
|
SHOW CREATE TABLE t2;
|
|
DROP TABLE t1, t2;
|
|
|
|
--echo #
|
|
--echo # CREATE TABLE AS SELECT FROM with NOT SECONDARY columns
|
|
--echo #
|
|
CREATE TABLE t1 (a INT NOT SECONDARY, b INT, c INT NOT SECONDARY) SECONDARY_ENGINE MOCK;
|
|
CREATE TABLE t2 AS SELECT * FROM t1;
|
|
SHOW CREATE TABLE t1;
|
|
SHOW CREATE TABLE t2;
|
|
DROP TABLE t1, t2;
|