diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 18:07:14 +0000 |
commit | a175314c3e5827eb193872241446f2f8f5c9d33c (patch) | |
tree | cd3d60ca99ae00829c52a6ca79150a5b6e62528b /mysql-test/suite/innodb/t/alter_algorithm.test | |
parent | Initial commit. (diff) | |
download | mariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.tar.xz mariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.zip |
Adding upstream version 1:10.5.12.upstream/1%10.5.12upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/suite/innodb/t/alter_algorithm.test')
-rw-r--r-- | mysql-test/suite/innodb/t/alter_algorithm.test | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/alter_algorithm.test b/mysql-test/suite/innodb/t/alter_algorithm.test new file mode 100644 index 00000000..08c23b50 --- /dev/null +++ b/mysql-test/suite/innodb/t/alter_algorithm.test @@ -0,0 +1,145 @@ +--source include/have_innodb.inc +let $algorithm = `SELECT @@ALTER_ALGORITHM`; +let $error_code = 0; + +if ($algorithm == "NOCOPY") { + let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON; +} + +if ($algorithm == "INSTANT") { + let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON; +} + +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 # 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; + +# 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 + +if ($algorithm == "NOCOPY") { + let $error_code = 0; +} + +if ($algorithm == "INSTANT") { + let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON; +} + +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 |