diff options
author | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2020-04-25 14:27:00 +0530 |
---|---|---|
committer | Thirunarayanan Balathandayuthapani <thiru@mariadb.com> | 2020-05-04 09:35:38 +0530 |
commit | ec9908b2577758ffb3cb0d1b06400f12ff47b81c (patch) | |
tree | a18426dce230626e84f752cf5d966d8e205f530b /mysql-test/suite/innodb | |
parent | f98017bb6df0110aa0a359ab4378cc97f6a95473 (diff) | |
download | mariadb-git-ec9908b2577758ffb3cb0d1b06400f12ff47b81c.tar.gz |
MDEV-16288 ALTER TABLE…ALGORITHM=DEFAULT does not override alter_algorithm
- ALTER_ALGORITHM should be substituted when there is no mention of
algorithm in alter statement.
- Introduced algorithm(thd) in Alter_info. It returns the
user requested algorithm. If user doesn't specify algorithm explicitly then
it returns alter_algorithm variable.
- changed algorithm() to get_algorithm(thd) to return algorithm name for
displaying the error.
- set_requested_algorithm(algo_value) to avoid direct assignment on
requested_algorithm variable.
- Avoid direct access of requested_algorithm to encapsulate
requested_algorithm variable
Diffstat (limited to 'mysql-test/suite/innodb')
7 files changed, 83 insertions, 22 deletions
diff --git a/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff b/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff index 805ccdb563c..a176a9af29e 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff +++ b/mysql-test/suite/innodb/r/alter_algorithm,INPLACE.rdiff @@ -1,6 +1,6 @@ ---- alter_algorithm.result -+++ alter_algorithm.reject -@@ -7,40 +7,40 @@ +--- alter_algorithm.result 2020-04-30 21:39:48.923115511 +0530 ++++ alter_algorithm.reject 2020-04-30 21:45:04.131642093 +0530 +@@ -7,43 +7,43 @@ INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); SELECT @@alter_algorithm; @@alter_algorithm @@ -55,10 +55,15 @@ -info: Records: 1 Duplicates: 0 Warnings: 0 +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 + ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, -@@ -53,22 +53,22 @@ +@@ -56,22 +56,22 @@ FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; @@ -91,7 +96,7 @@ DROP TABLE t2, t1; affected rows: 0 CREATE TABLE t1(f1 INT NOT NULL, -@@ -81,27 +81,27 @@ +@@ -84,28 +84,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'; @@ -119,7 +124,9 @@ +info: Records: 0 Duplicates: 0 Warnings: 0 # Rename table ALTER TABLE t1 RENAME t3; - affected rows: 0 +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 # Drop Virtual Column ALTER TABLE t3 DROP COLUMN vcol; -affected rows: 1 @@ -129,7 +136,7 @@ # Column length varies ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); affected rows: 0 -@@ -109,12 +109,12 @@ +@@ -113,12 +112,12 @@ SET foreign_key_checks = 0; affected rows: 0 ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); diff --git a/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff b/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff index 6d2ee160e46..414b7dc8b0c 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff +++ b/mysql-test/suite/innodb/r/alter_algorithm,INSTANT.rdiff @@ -1,6 +1,6 @@ ---- alter_algorithm.result -+++ alter_algorithm.reject -@@ -7,40 +7,32 @@ +--- alter_algorithm.result 2020-04-30 21:39:48.923115511 +0530 ++++ alter_algorithm.reject 2020-04-30 21:47:08.245465018 +0530 +@@ -7,43 +7,35 @@ INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); SELECT @@alter_algorithm; @@alter_algorithm @@ -47,10 +47,15 @@ -affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors + ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, -@@ -53,22 +45,17 @@ +@@ -56,22 +48,17 @@ FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; @@ -78,7 +83,7 @@ DROP TABLE t2, t1; affected rows: 0 CREATE TABLE t1(f1 INT NOT NULL, -@@ -81,27 +68,27 @@ +@@ -84,28 +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'; @@ -106,7 +111,9 @@ +info: Records: 0 Duplicates: 0 Warnings: 0 # Rename table ALTER TABLE t1 RENAME t3; - affected rows: 0 +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 # Drop Virtual Column ALTER TABLE t3 DROP COLUMN vcol; -affected rows: 1 @@ -116,7 +123,7 @@ # Column length varies ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); affected rows: 0 -@@ -109,12 +96,12 @@ +@@ -113,12 +99,12 @@ SET foreign_key_checks = 0; affected rows: 0 ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); diff --git a/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff b/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff index c6ce83b5d9f..2aa8c72265a 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff +++ b/mysql-test/suite/innodb/r/alter_algorithm,NOCOPY.rdiff @@ -1,6 +1,6 @@ ---- alter_algorithm.result -+++ alter_algorithm.reject -@@ -7,40 +7,32 @@ +--- alter_algorithm.result 2020-04-30 21:39:48.923115511 +0530 ++++ alter_algorithm.reject 2020-04-30 21:52:10.785967739 +0530 +@@ -7,43 +7,35 @@ INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); SELECT @@alter_algorithm; @@alter_algorithm @@ -47,10 +47,15 @@ -affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors + ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT; +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 ++info: Records: 0 Duplicates: 0 Warnings: 0 DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, -@@ -53,22 +45,22 @@ +@@ -56,22 +48,22 @@ FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB; INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1; @@ -83,7 +88,7 @@ DROP TABLE t2, t1; affected rows: 0 CREATE TABLE t1(f1 INT NOT NULL, -@@ -81,27 +73,27 @@ +@@ -84,28 +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'; @@ -111,7 +116,9 @@ +info: Records: 0 Duplicates: 0 Warnings: 0 # Rename table ALTER TABLE t1 RENAME t3; - affected rows: 0 +-affected rows: 1 +-info: Records: 1 Duplicates: 0 Warnings: 0 ++affected rows: 0 # Drop Virtual Column ALTER TABLE t3 DROP COLUMN vcol; -affected rows: 1 @@ -121,7 +128,7 @@ # Column length varies ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20); affected rows: 0 -@@ -109,12 +101,12 @@ +@@ -113,12 +104,12 @@ SET foreign_key_checks = 0; affected rows: 0 ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1); diff --git a/mysql-test/suite/innodb/r/alter_algorithm.result b/mysql-test/suite/innodb/r/alter_algorithm.result index bcfbe3355f9..717d31de6a0 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm.result +++ b/mysql-test/suite/innodb/r/alter_algorithm.result @@ -41,6 +41,9 @@ info: Records: 1 Duplicates: 0 Warnings: 0 ALTER TABLE t1 ENGINE=INNODB; affected rows: 1 info: Records: 1 Duplicates: 0 Warnings: 0 +ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT; +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 DROP TABLE t1; affected rows: 0 CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, @@ -97,7 +100,8 @@ affected rows: 1 info: Records: 1 Duplicates: 0 Warnings: 0 # Rename table ALTER TABLE t1 RENAME t3; -affected rows: 0 +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 0 # Drop Virtual Column ALTER TABLE t3 DROP COLUMN vcol; affected rows: 1 diff --git a/mysql-test/suite/innodb/r/alter_algorithm2.result b/mysql-test/suite/innodb/r/alter_algorithm2.result index 1cea3f4cd43..350c1c51482 100644 --- a/mysql-test/suite/innodb/r/alter_algorithm2.result +++ b/mysql-test/suite/innodb/r/alter_algorithm2.result @@ -54,3 +54,23 @@ DROP PROCEDURE p1; affected rows: 0 DROP PROCEDURE p2; affected rows: 0 +CREATE TABLE t1(id INT PRIMARY KEY, +col1 INT UNSIGNED NOT NULL UNIQUE)ENGINE=InnoDB; +affected rows: 0 +INSERT INTO t1 VALUES(1,1),(2,2),(3,3); +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +SET ALTER_ALGORITHM=INSTANT; +affected rows: 0 +ALTER TABLE t1 DROP COLUMN col1; +ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACE +ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=NOCOPY; +ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE +ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=DEFAULT; +affected rows: 0 +info: Records: 0 Duplicates: 0 Warnings: 0 +ALTER TABLE t1 DROP PRIMARY KEY, ALGORITHM=DEFAULT; +affected rows: 3 +info: Records: 3 Duplicates: 0 Warnings: 0 +DROP TABLE t1; +affected rows: 0 diff --git a/mysql-test/suite/innodb/t/alter_algorithm.test b/mysql-test/suite/innodb/t/alter_algorithm.test index d410a15154d..08c23b505f3 100644 --- a/mysql-test/suite/innodb/t/alter_algorithm.test +++ b/mysql-test/suite/innodb/t/alter_algorithm.test @@ -55,6 +55,10 @@ ALTER TABLE t1 ROW_FORMAT=COMPRESSED; --error $error_code ALTER TABLE t1 ENGINE=INNODB; +# Irrespective of alter_algorithm value, the following command +# should succeed because of explicitly mentioning ALGORTHM=DEFAULT +ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT; + DROP TABLE t1; --disable_info diff --git a/mysql-test/suite/innodb/t/alter_algorithm2.test b/mysql-test/suite/innodb/t/alter_algorithm2.test index 02b49c797bc..cf538e30196 100644 --- a/mysql-test/suite/innodb/t/alter_algorithm2.test +++ b/mysql-test/suite/innodb/t/alter_algorithm2.test @@ -44,4 +44,16 @@ call p1(); DROP TABLE t1; DROP PROCEDURE p1; DROP PROCEDURE p2; + +CREATE TABLE t1(id INT PRIMARY KEY, + col1 INT UNSIGNED NOT NULL UNIQUE)ENGINE=InnoDB; +INSERT INTO t1 VALUES(1,1),(2,2),(3,3); +SET ALTER_ALGORITHM=INSTANT; +--error ER_ALTER_OPERATION_NOT_SUPPORTED +ALTER TABLE t1 DROP COLUMN col1; +--error ER_ALTER_OPERATION_NOT_SUPPORTED +ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=NOCOPY; +ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=DEFAULT; +ALTER TABLE t1 DROP PRIMARY KEY, ALGORITHM=DEFAULT; +DROP TABLE t1; --disable_info |