mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
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.
This commit is contained in:
@ -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
|
|
@ -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
|
|
@ -64,12 +64,9 @@
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
affected rows: 0
|
affected rows: 0
|
||||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
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);
|
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;
|
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||||
-affected rows: 1
|
-affected rows: 1
|
||||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||||
@ -99,3 +96,59 @@
|
|||||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||||
DROP TABLE t2, t1;
|
DROP TABLE t2, t1;
|
||||||
affected rows: 0
|
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
|
||||||
|
@ -55,12 +55,9 @@
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
affected rows: 0
|
affected rows: 0
|
||||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
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);
|
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;
|
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||||
-affected rows: 1
|
-affected rows: 1
|
||||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||||
@ -85,3 +82,59 @@
|
|||||||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||||
DROP TABLE t2, t1;
|
DROP TABLE t2, t1;
|
||||||
affected rows: 0
|
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
|
||||||
|
@ -55,12 +55,9 @@
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
affected rows: 0
|
affected rows: 0
|
||||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
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);
|
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;
|
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||||
-affected rows: 1
|
-affected rows: 1
|
||||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||||
@ -90,3 +87,59 @@
|
|||||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||||
DROP TABLE t2, t1;
|
DROP TABLE t2, t1;
|
||||||
affected rows: 0
|
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
|
||||||
|
@ -51,14 +51,11 @@ CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
|||||||
f3 INT AS (f2 * f2) VIRTUAL,
|
f3 INT AS (f2 * f2) VIRTUAL,
|
||||||
f4 INT NOT NULL UNIQUE,
|
f4 INT NOT NULL UNIQUE,
|
||||||
f5 INT NOT NULL,
|
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,
|
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||||
INDEX(f1),
|
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);
|
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;
|
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||||
affected rows: 1
|
affected rows: 1
|
||||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||||
@ -78,3 +75,50 @@ affected rows: 1
|
|||||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||||
DROP TABLE t2, t1;
|
DROP TABLE t2, t1;
|
||||||
affected rows: 0
|
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
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -10,7 +10,57 @@ if ($algorithm == "INSTANT") {
|
|||||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
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") {
|
if ($algorithm == "NOCOPY") {
|
||||||
let $error_code = 0;
|
let $error_code = 0;
|
||||||
@ -19,4 +69,77 @@ if ($algorithm == "NOCOPY") {
|
|||||||
if ($algorithm == "INSTANT") {
|
if ($algorithm == "INSTANT") {
|
||||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
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
|
||||||
|
@ -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
|
|
Reference in New Issue
Block a user