mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +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:
@ -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
|
||||
|
Reference in New Issue
Block a user