summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/innodb/t/alter_algorithm.test
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:07:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:07:14 +0000
commita175314c3e5827eb193872241446f2f8f5c9d33c (patch)
treecd3d60ca99ae00829c52a6ca79150a5b6e62528b /mysql-test/suite/innodb/t/alter_algorithm.test
parentInitial commit. (diff)
downloadmariadb-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.test145
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