From 6567a94c71b0bdb8b5c31011cec04972a353b05d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 7 Nov 2018 17:42:41 +0200 Subject: [PATCH] MDEV-13134: Merge tests to innodb.alter_algorithm Remove the separate test innodb.alter_instant, because it can be easily mistaken for innodb.instant_alter, which in turn is covering various instant ALTER TABLE operations. --- .../suite/innodb/include/alter_nocopy.inc | 33 ----- .../innodb/include/alter_nocopy_fail.inc | 51 ------- .../innodb/r/alter_algorithm,INPLACE.rdiff | 63 ++++++++- .../innodb/r/alter_algorithm,INSTANT.rdiff | 63 ++++++++- .../innodb/r/alter_algorithm,NOCOPY.rdiff | 63 ++++++++- .../suite/innodb/r/alter_algorithm.result | 54 +++++++- .../suite/innodb/r/alter_instant,COPY.rdiff | 61 --------- .../innodb/r/alter_instant,INPLACE.rdiff | 11 -- .../innodb/r/alter_instant,INSTANT.rdiff | 11 -- .../suite/innodb/r/alter_instant.result | 50 ------- .../suite/innodb/t/alter_algorithm.test | 127 +++++++++++++++++- mysql-test/suite/innodb/t/alter_instant.test | 45 ------- 12 files changed, 348 insertions(+), 284 deletions(-) delete mode 100644 mysql-test/suite/innodb/include/alter_nocopy.inc delete mode 100644 mysql-test/suite/innodb/include/alter_nocopy_fail.inc delete mode 100644 mysql-test/suite/innodb/r/alter_instant,COPY.rdiff delete mode 100644 mysql-test/suite/innodb/r/alter_instant,INPLACE.rdiff delete mode 100644 mysql-test/suite/innodb/r/alter_instant,INSTANT.rdiff delete mode 100644 mysql-test/suite/innodb/r/alter_instant.result delete mode 100644 mysql-test/suite/innodb/t/alter_instant.test diff --git a/mysql-test/suite/innodb/include/alter_nocopy.inc b/mysql-test/suite/innodb/include/alter_nocopy.inc deleted file mode 100644 index 00cab8c47e5..00000000000 --- a/mysql-test/suite/innodb/include/alter_nocopy.inc +++ /dev/null @@ -1,33 +0,0 @@ -CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, - f3 INT AS (f2 * f2) VIRTUAL, - f4 INT NOT NULL UNIQUE, - f5 INT NOT NULL, - INDEX`idx`(f2))ENGINE=INNODB; - -CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, - INDEX(f1), - FOREIGN KEY `fidx` (f1) REFERENCES t1(f1))ENGINE=INNODB; - -INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); - -SELECT @@alter_algorithm; - ---enable_info ---error $error_code ---eval ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1 - ---error $error_code ---eval ALTER TABLE t1 DROP INDEX idx, page_compression_level=5 - ---error $error_code ---eval ALTER TABLE t1 ADD UNIQUE INDEX u1(f2) - ---error $error_code ---eval ALTER TABLE t1 DROP INDEX f4, page_compression_level=9 - -SET foreign_key_checks = 0; ---error $error_code ---eval ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1) - -DROP TABLE t2, t1; ---disable_info diff --git a/mysql-test/suite/innodb/include/alter_nocopy_fail.inc b/mysql-test/suite/innodb/include/alter_nocopy_fail.inc deleted file mode 100644 index a075cf96e3c..00000000000 --- a/mysql-test/suite/innodb/include/alter_nocopy_fail.inc +++ /dev/null @@ -1,51 +0,0 @@ -CREATE TABLE t1(f1 INT NOT NULL, - f2 INT NOT NULL, - f3 INT NULL, - f4 INT as (f2) STORED, - f5 INT as (f3) STORED, - PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB; -INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); - -SELECT @@alter_algorithm; - ---enable_info ---echo # All the following cases needs table rebuild - ---echo # Add and Drop primary key ---error $error_code ---eval ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1) - ---echo # Make existing column NULLABLE ---error $error_code ---eval ALTER TABLE t1 MODIFY f2 INT - ---echo # Make existing column NON-NULLABLE ---error $error_code ---eval ALTER TABLE t1 MODIFY f3 INT NOT NULL - ---echo # Drop Stored Column ---error $error_code ---eval ALTER TABLE t1 DROP COLUMN f5 - ---echo # Add base non-generated column as a last column in the compressed table ---error $error_code ---eval ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL - ---echo # Add base non-generated column but not in the last position ---error $error_code ---eval ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3 - ---echo # Force the table to rebuild ---error $error_code ---eval ALTER TABLE t1 FORCE - ---echo # Row format changes ---error $error_code ---eval ALTER TABLE t1 ROW_FORMAT=COMPRESSED - ---echo # Engine table ---error $error_code ---eval ALTER TABLE t1 ENGINE=INNODB - -DROP TABLE t1; ---disable_info diff --git a/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff b/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff index 8178e9ea58e..a1fa20c2ba1 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff +++ b/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff @@ -64,12 +64,9 @@ DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, -@@ -58,23 +58,23 @@ +@@ -57,22 +57,22 @@ + FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); - SELECT @@alter_algorithm; - @@alter_algorithm --COPY -+INPLACE ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; -affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0 @@ -99,3 +96,59 @@ +info: Records: 0 Duplicates: 0 Warnings: 0 DROP TABLE t2, t1; affected rows: 0 + CREATE TABLE t1(f1 INT NOT NULL, +@@ -85,27 +85,27 @@ + INSERT INTO t1(f1, f2) VALUES(1, 1); + # Add column at the end of the table + ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL'; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Change virtual column expression + ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Add virtual column + ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Rename Column + ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Rename table + ALTER TABLE t1 RENAME t3; + affected rows: 0 + # Drop Virtual Column + ALTER TABLE t3 DROP COLUMN vcol; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Column length varies + ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); + affected rows: 0 +@@ -113,12 +113,12 @@ + SET foreign_key_checks = 0; + affected rows: 0 + ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + SET foreign_key_checks = 1; + affected rows: 0 + ALTER TABLE t3 DROP FOREIGN KEY fidx; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + DROP TABLE t3, t2; + affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff b/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff index ce2e240bb35..879bba43932 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff +++ b/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff @@ -55,12 +55,9 @@ DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, -@@ -58,23 +49,18 @@ +@@ -57,22 +48,17 @@ + FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); - SELECT @@alter_algorithm; - @@alter_algorithm --COPY -+INSTANT ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; -affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0 @@ -85,3 +82,59 @@ +ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY DROP TABLE t2, t1; affected rows: 0 + CREATE TABLE t1(f1 INT NOT NULL, +@@ -85,27 +71,27 @@ + INSERT INTO t1(f1, f2) VALUES(1, 1); + # Add column at the end of the table + ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL'; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Change virtual column expression + ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Add virtual column + ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Rename Column + ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Rename table + ALTER TABLE t1 RENAME t3; + affected rows: 0 + # Drop Virtual Column + ALTER TABLE t3 DROP COLUMN vcol; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Column length varies + ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); + affected rows: 0 +@@ -113,12 +99,12 @@ + SET foreign_key_checks = 0; + affected rows: 0 + ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + SET foreign_key_checks = 1; + affected rows: 0 + ALTER TABLE t3 DROP FOREIGN KEY fidx; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + DROP TABLE t3, t2; + affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff b/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff index 5d462e0012d..6db0f2af347 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff +++ b/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff @@ -55,12 +55,9 @@ DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, -@@ -58,23 +49,23 @@ +@@ -57,22 +48,22 @@ + FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); - SELECT @@alter_algorithm; - @@alter_algorithm --COPY -+NOCOPY ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; -affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0 @@ -90,3 +87,59 @@ +info: Records: 0 Duplicates: 0 Warnings: 0 DROP TABLE t2, t1; affected rows: 0 + CREATE TABLE t1(f1 INT NOT NULL, +@@ -85,27 +76,27 @@ + INSERT INTO t1(f1, f2) VALUES(1, 1); + # Add column at the end of the table + ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL'; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Change virtual column expression + ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Add virtual column + ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Rename Column + ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Rename table + ALTER TABLE t1 RENAME t3; + affected rows: 0 + # Drop Virtual Column + ALTER TABLE t3 DROP COLUMN vcol; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + # Column length varies + ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); + affected rows: 0 +@@ -113,12 +104,12 @@ + SET foreign_key_checks = 0; + affected rows: 0 + ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + SET foreign_key_checks = 1; + affected rows: 0 + ALTER TABLE t3 DROP FOREIGN KEY fidx; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 + DROP TABLE t3, t2; + affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_algorithm.result b/mysql-test/suite/innodb/r/alter_algorithm.result index cbefcad5986..3d3a7e85444 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm.result +++ b/mysql-test/suite/innodb/r/alter_algorithm.result @@ -51,14 +51,11 @@ CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, f3 INT AS (f2 * f2) VIRTUAL, f4 INT NOT NULL UNIQUE, f5 INT NOT NULL, -INDEX`idx`(f2))ENGINE=INNODB; +INDEX idx(f2))ENGINE=INNODB; CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, INDEX(f1), -FOREIGN KEY `fidx` (f1) REFERENCES t1(f1))ENGINE=INNODB; +FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); -SELECT @@alter_algorithm; -@@alter_algorithm -COPY ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; affected rows: 1 info: Records: 1 Duplicates: 0 Warnings: 0 @@ -78,3 +75,50 @@ affected rows: 1 info: Records: 1 Duplicates: 0 Warnings: 0 DROP TABLE t2, t1; affected rows: 0 +CREATE TABLE t1(f1 INT NOT NULL, +f2 INT NOT NULL, +f3 INT AS (f2 * f2) VIRTUAL, +INDEX idx (f2))engine=innodb; +CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, +f3 VARCHAR(10), +INDEX(f1))ENGINE=INNODB; +INSERT INTO t1(f1, f2) VALUES(1, 1); +# Add column at the end of the table +ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL'; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +# Change virtual column expression +ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +# Add virtual column +ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +# Rename Column +ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +# Rename table +ALTER TABLE t1 RENAME t3; +affected rows: 0 +# Drop Virtual Column +ALTER TABLE t3 DROP COLUMN vcol; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +# Column length varies +ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 +SET foreign_key_checks = 0; +affected rows: 0 +ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +SET foreign_key_checks = 1; +affected rows: 0 +ALTER TABLE t3 DROP FOREIGN KEY fidx; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 +DROP TABLE t3, t2; +affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_instant,COPY.rdiff b/mysql-test/suite/innodb/r/alter_instant,COPY.rdiff deleted file mode 100644 index cb4a72614b9..00000000000 --- a/mysql-test/suite/innodb/r/alter_instant,COPY.rdiff +++ /dev/null @@ -1,61 +0,0 @@ ---- alter_instant.result 2018-04-10 11:19:46.299868465 +0530 -+++ alter_instant.reject 2018-04-10 11:21:19.648918489 +0530 -@@ -8,30 +8,30 @@ - INSERT INTO t1(f1, f2) VALUES(1, 1); - select @@alter_algorithm; - @@alter_algorithm --NOCOPY -+COPY - # Add column at the end of the table - ALTER TABLE t1 ADD COLUMN f4 char(100) default "BIG WALL"; --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - # Change virtual column expression - ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - # Add virtual column - ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - # Rename Column - ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - # Rename table - ALTER TABLE t1 RENAME t3; - affected rows: 0 - # Drop Virtual Column - ALTER TABLE t3 DROP COLUMN vcol; --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - # Column length varies - ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); - affected rows: 0 -@@ -39,12 +39,12 @@ - SET foreign_key_checks = 0; - affected rows: 0 - ALTER TABLE t3 ADD FOREIGN KEY `fidx`(f2) REFERENCES t2(f1); --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - SET foreign_key_checks = 1; - affected rows: 0 - ALTER TABLE t3 DROP FOREIGN KEY `fidx`; --affected rows: 0 --info: Records: 0 Duplicates: 0 Warnings: 0 -+affected rows: 1 -+info: Records: 1 Duplicates: 0 Warnings: 0 - DROP TABLE t3, t2; - affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_instant,INPLACE.rdiff b/mysql-test/suite/innodb/r/alter_instant,INPLACE.rdiff deleted file mode 100644 index ec80e1d8ef0..00000000000 --- a/mysql-test/suite/innodb/r/alter_instant,INPLACE.rdiff +++ /dev/null @@ -1,11 +0,0 @@ ---- alter_instant.result 2018-04-10 11:19:46.299868465 +0530 -+++ alter_instant.reject 2018-04-10 11:22:19.433617807 +0530 -@@ -8,7 +8,7 @@ - INSERT INTO t1(f1, f2) VALUES(1, 1); - select @@alter_algorithm; - @@alter_algorithm --NOCOPY -+INPLACE - # Add column at the end of the table - ALTER TABLE t1 ADD COLUMN f4 char(100) default "BIG WALL"; - affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_instant,INSTANT.rdiff b/mysql-test/suite/innodb/r/alter_instant,INSTANT.rdiff deleted file mode 100644 index cf2f8a2d719..00000000000 --- a/mysql-test/suite/innodb/r/alter_instant,INSTANT.rdiff +++ /dev/null @@ -1,11 +0,0 @@ ---- alter_instant.result 2018-04-10 11:19:46.299868465 +0530 -+++ alter_instant.reject 2018-04-10 11:22:47.281949905 +0530 -@@ -8,7 +8,7 @@ - INSERT INTO t1(f1, f2) VALUES(1, 1); - select @@alter_algorithm; - @@alter_algorithm --NOCOPY -+INSTANT - # Add column at the end of the table - ALTER TABLE t1 ADD COLUMN f4 char(100) default "BIG WALL"; - affected rows: 0 diff --git a/mysql-test/suite/innodb/r/alter_instant.result b/mysql-test/suite/innodb/r/alter_instant.result deleted file mode 100644 index ec64e41cd01..00000000000 --- a/mysql-test/suite/innodb/r/alter_instant.result +++ /dev/null @@ -1,50 +0,0 @@ -CREATE TABLE t1(f1 INT NOT NULL, -f2 INT NOT NULL, -f3 INT AS (f2 * f2) VIRTUAL, -INDEX idx (f2))engine=innodb; -CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, -f3 VARCHAR(10), -INDEX(f1))ENGINE=INNODB; -INSERT INTO t1(f1, f2) VALUES(1, 1); -select @@alter_algorithm; -@@alter_algorithm -NOCOPY -# Add column at the end of the table -ALTER TABLE t1 ADD COLUMN f4 char(100) default "BIG WALL"; -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -# Change virtual column expression -ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -# Add virtual column -ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -# Rename Column -ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -# Rename table -ALTER TABLE t1 RENAME t3; -affected rows: 0 -# Drop Virtual Column -ALTER TABLE t3 DROP COLUMN vcol; -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -# Column length varies -ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -SET foreign_key_checks = 0; -affected rows: 0 -ALTER TABLE t3 ADD FOREIGN KEY `fidx`(f2) REFERENCES t2(f1); -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -SET foreign_key_checks = 1; -affected rows: 0 -ALTER TABLE t3 DROP FOREIGN KEY `fidx`; -affected rows: 0 -info: Records: 0 Duplicates: 0 Warnings: 0 -DROP TABLE t3, t2; -affected rows: 0 diff --git a/mysql-test/suite/innodb/t/alter_algorithm.test b/mysql-test/suite/innodb/t/alter_algorithm.test index 23cddd46225..7cb706e865a 100644 --- a/mysql-test/suite/innodb/t/alter_algorithm.test +++ b/mysql-test/suite/innodb/t/alter_algorithm.test @@ -10,7 +10,57 @@ if ($algorithm == "INSTANT") { let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON; } ---source include/alter_nocopy_fail.inc +CREATE TABLE t1(f1 INT NOT NULL, + f2 INT NOT NULL, + f3 INT NULL, + f4 INT as (f2) STORED, + f5 INT as (f3) STORED, + PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB; +INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); + +SELECT @@alter_algorithm; + +--enable_info +--echo # All the following cases needs table rebuild + +--echo # Add and Drop primary key +--error $error_code +ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1); + +--echo # Make existing column NULLABLE +--error $error_code +ALTER TABLE t1 MODIFY f2 INT; + +--echo # Make existing column NON-NULLABLE +--error $error_code +ALTER TABLE t1 MODIFY f3 INT NOT NULL; + +--echo # Drop Stored Column +--error $error_code +ALTER TABLE t1 DROP COLUMN f5; + +--echo # Add base non-generated column as a last column in the compressed table +--error $error_code +ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; + +--echo # Add base non-generated column but not in the last position +--error $error_code +ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3; + +--echo # Force the table to rebuild +--error $error_code +ALTER TABLE t1 FORCE; + +--echo # Row format changes +--error $error_code +ALTER TABLE t1 ROW_FORMAT=COMPRESSED; + +--echo # Engine table +--error $error_code +ALTER TABLE t1 ENGINE=INNODB; + +DROP TABLE t1; +--disable_info if ($algorithm == "NOCOPY") { let $error_code = 0; @@ -19,4 +69,77 @@ if ($algorithm == "NOCOPY") { if ($algorithm == "INSTANT") { let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON; } ---source include/alter_nocopy.inc + +CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, + f3 INT AS (f2 * f2) VIRTUAL, + f4 INT NOT NULL UNIQUE, + f5 INT NOT NULL, + INDEX idx(f2))ENGINE=INNODB; + +CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, + INDEX(f1), + FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; + +INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); + +--enable_info +--error $error_code +ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; + +--error $error_code +ALTER TABLE t1 DROP INDEX idx, page_compression_level=5; + +--error $error_code +ALTER TABLE t1 ADD UNIQUE INDEX u1(f2); + +--error $error_code +ALTER TABLE t1 DROP INDEX f4, page_compression_level=9; + +SET foreign_key_checks = 0; +--error $error_code +ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1); + +DROP TABLE t2, t1; +--disable_info + +CREATE TABLE t1(f1 INT NOT NULL, + f2 INT NOT NULL, + f3 INT AS (f2 * f2) VIRTUAL, + INDEX idx (f2))engine=innodb; + +CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, + f3 VARCHAR(10), + INDEX(f1))ENGINE=INNODB; + +INSERT INTO t1(f1, f2) VALUES(1, 1); + +--enable_info +--echo # Add column at the end of the table +ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL'; + +--echo # Change virtual column expression +ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL; + +--echo # Add virtual column +ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL; + +--echo # Rename Column +ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL; + +--echo # Rename table +ALTER TABLE t1 RENAME t3; + +--echo # Drop Virtual Column +ALTER TABLE t3 DROP COLUMN vcol; + +--echo # Column length varies +ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); + +SET foreign_key_checks = 0; +ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); + +SET foreign_key_checks = 1; +ALTER TABLE t3 DROP FOREIGN KEY fidx; + +DROP TABLE t3, t2; +--disable_info diff --git a/mysql-test/suite/innodb/t/alter_instant.test b/mysql-test/suite/innodb/t/alter_instant.test deleted file mode 100644 index dddb7b8ce27..00000000000 --- a/mysql-test/suite/innodb/t/alter_instant.test +++ /dev/null @@ -1,45 +0,0 @@ ---source alter_algorithm.inc - -CREATE TABLE t1(f1 INT NOT NULL, - f2 INT NOT NULL, - f3 INT AS (f2 * f2) VIRTUAL, - INDEX idx (f2))engine=innodb; - -CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL, - f3 VARCHAR(10), - INDEX(f1))ENGINE=INNODB; - -INSERT INTO t1(f1, f2) VALUES(1, 1); - -select @@alter_algorithm; - ---enable_info ---echo # Add column at the end of the table ---eval ALTER TABLE t1 ADD COLUMN f4 char(100) default "BIG WALL" - ---echo # Change virtual column expression ---eval ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL - ---echo # Add virtual column ---eval ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL - ---echo # Rename Column ---eval ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL - ---echo # Rename table ---eval ALTER TABLE t1 RENAME t3 - ---echo # Drop Virtual Column ---eval ALTER TABLE t3 DROP COLUMN vcol - ---echo # Column length varies ---eval ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20) - -SET foreign_key_checks = 0; ---eval ALTER TABLE t3 ADD FOREIGN KEY `fidx`(f2) REFERENCES t2(f1) - -SET foreign_key_checks = 1; ---eval ALTER TABLE t3 DROP FOREIGN KEY `fidx` - -DROP TABLE t3, t2; ---disable_info