summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2017-09-20 20:53:09 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2017-09-20 20:53:09 +0300
commit4fd87a9a204a86e2c22b337ee160cf093f9c9f69 (patch)
tree5d22e3c5ed50987854c4d6325d432972df535a5a
parent9b998c18283c8acd4ed3d8e6df503fe861af04f0 (diff)
downloadmariadb-git-bb-10.1-MDEV-13856.tar.gz
MDEV-13856: Incorrect error message for ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=INPLACEbb-10.1-MDEV-13856
ha_innobase::check_if_supported_inplace_alter Do not use ER_ALTER_OPERATION_NOT_SUPPORTED_REASON as it expects other parameters. Use HA_ALTER_INPLACE_NOT_SUPPORTED instead.
-rw-r--r--mysql-test/suite/encryption/r/innodb-alter-option.result445
-rw-r--r--mysql-test/suite/encryption/t/innodb-alter-option.test136
-rw-r--r--storage/innobase/handler/handler0alter.cc13
-rw-r--r--storage/xtradb/handler/handler0alter.cc13
4 files changed, 587 insertions, 20 deletions
diff --git a/mysql-test/suite/encryption/r/innodb-alter-option.result b/mysql-test/suite/encryption/r/innodb-alter-option.result
new file mode 100644
index 00000000000..9d2a0e6bd47
--- /dev/null
+++ b/mysql-test/suite/encryption/r/innodb-alter-option.result
@@ -0,0 +1,445 @@
+SET GLOBAL innodb_file_format='Barracuda';
+CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
+c VARCHAR(256), coordinate POINT NOT NULL) ENCRYPTED=YES ENGINE=INNODB;
+ALTER TABLE t1 FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ADD INDEX b(coordinate), FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 DROP INDEX b;
+ALTER TABLE t1 ADD INDEX b(coordinate), FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 DROP INDEX b;
+ALTER TABLE t1 ADD INDEX b(coordinate), ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 DROP INDEX b;
+ALTER TABLE t1 ADD INDEX b(coordinate), ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTED=NO, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=NO
+ALTER TABLE t1 ENCRYPTED=YES, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTED=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=YES, FORCE, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=NO, FORCE, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTED=DEFAULT, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=NO, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=COPY;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=4
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=4
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES
+ALTER TABLE t1 ENCRYPTED=NO, ALGORITHM=COPY;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=COPY;
+Warnings:
+Warning 140 InnoDB: Ignored ENCRYPTION_KEY_ID 4 when encryption is disabled
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=COPY;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=INPLACE;
+ALTER TABLE t1 PAGE_COMPRESSED=1, ENCRYPTED=DEFAULT, ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSED=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 PAGE_COMPRESSED=1, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 PAGE_COMPRESSED=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 PAGE_COMPRESSED=1, FORCE, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 PAGE_COMPRESSED=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+ALTER TABLE t1 PAGE_COMPRESSED=1, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=9
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=9
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, FORCE, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, ALGORITHM=INPLACE;
+ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `pk` int(11) NOT NULL AUTO_INCREMENT,
+ `c` varchar(256) DEFAULT NULL,
+ `coordinate` point NOT NULL,
+ PRIMARY KEY (`pk`),
+ KEY `b` (`coordinate`(25))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1
+DROP TABLE t1;
+SET GLOBAL innodb_file_format=DEFAULT;
diff --git a/mysql-test/suite/encryption/t/innodb-alter-option.test b/mysql-test/suite/encryption/t/innodb-alter-option.test
new file mode 100644
index 00000000000..80bb185289f
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-alter-option.test
@@ -0,0 +1,136 @@
+--source include/have_innodb.inc
+--source include/have_file_key_management_plugin.inc
+
+--disable_warnings
+SET GLOBAL innodb_file_format='Barracuda';
+--enable_warnings
+
+CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
+c VARCHAR(256), coordinate POINT NOT NULL) ENCRYPTED=YES ENGINE=INNODB;
+ALTER TABLE t1 FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ADD INDEX b(coordinate), FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 DROP INDEX b;
+ALTER TABLE t1 ADD INDEX b(coordinate), FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 DROP INDEX b;
+ALTER TABLE t1 ADD INDEX b(coordinate), ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 DROP INDEX b;
+ALTER TABLE t1 ADD INDEX b(coordinate), ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+#
+# ENCRYPTED
+#
+ALTER TABLE t1 ENCRYPTED=NO, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=YES, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTED=YES, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTED=NO, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=DEFAULT, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTED=NO, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+#
+# ENCRYPTION_KEY_ID
+#
+ALTER TABLE t1 ENCRYPTED=YES, ALGORITHM=COPY;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 ENCRYPTED=NO, ALGORITHM=COPY;
+#
+# ENCRYPTION KEY ID ignored
+#
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=COPY;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=COPY;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 ENCRYPTION_KEY_ID=4, FORCE, ALGORITHM=INPLACE;
+ALTER TABLE t1 ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=INPLACE;
+#
+# PAGE_COMPRESSED
+#
+ALTER TABLE t1 PAGE_COMPRESSED=1, ENCRYPTED=DEFAULT, ENCRYPTION_KEY_ID=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSED=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 PAGE_COMPRESSED=1, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSED=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 PAGE_COMPRESSED=1, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSED=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+#
+# PAGE_COMPRESSION_LEVEL
+#
+ALTER TABLE t1 PAGE_COMPRESSED=1, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, FORCE, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, ALGORITHM=COPY;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, FORCE, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+--error ER_ALTER_OPERATION_NOT_SUPPORTED
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=9, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+ALTER TABLE t1 PAGE_COMPRESSION_LEVEL=DEFAULT, ALGORITHM=INPLACE;
+SHOW CREATE TABLE t1;
+
+DROP TABLE t1;
+
+--disable_result_log
+--disable_warnings
+SET GLOBAL innodb_file_format=DEFAULT;
+--enable_warnings
+--enable_result_log
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc
index 2a74ac489c9..760f8367f6f 100644
--- a/storage/innobase/handler/handler0alter.cc
+++ b/storage/innobase/handler/handler0alter.cc
@@ -320,16 +320,9 @@ ha_innobase::check_if_supported_inplace_alter(
if (new_options->page_compressed != old_options->page_compressed ||
new_options->page_compression_level != old_options->page_compression_level ||
- new_options->atomic_writes != old_options->atomic_writes) {
- ha_alter_info->unsupported_reason = innobase_get_err_msg(
- ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
- DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
- }
-
- if (new_options->encryption != old_options->encryption ||
- new_options->encryption_key_id != old_options->encryption_key_id) {
- ha_alter_info->unsupported_reason = innobase_get_err_msg(
- ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
+ new_options->atomic_writes != old_options->atomic_writes ||
+ new_options->encryption != old_options->encryption ||
+ new_options->encryption_key_id != old_options->encryption_key_id) {
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
}
}
diff --git a/storage/xtradb/handler/handler0alter.cc b/storage/xtradb/handler/handler0alter.cc
index ef2478bd239..bf7ffa9180a 100644
--- a/storage/xtradb/handler/handler0alter.cc
+++ b/storage/xtradb/handler/handler0alter.cc
@@ -324,16 +324,9 @@ ha_innobase::check_if_supported_inplace_alter(
if (new_options->page_compressed != old_options->page_compressed ||
new_options->page_compression_level != old_options->page_compression_level ||
- new_options->atomic_writes != old_options->atomic_writes) {
- ha_alter_info->unsupported_reason = innobase_get_err_msg(
- ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
- DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
- }
-
- if (new_options->encryption != old_options->encryption ||
- new_options->encryption_key_id != old_options->encryption_key_id) {
- ha_alter_info->unsupported_reason = innobase_get_err_msg(
- ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
+ new_options->atomic_writes != old_options->atomic_writes ||
+ new_options->encryption != old_options->encryption ||
+ new_options->encryption_key_id != old_options->encryption_key_id) {
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
}
}