diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2017-09-20 20:53:09 +0300 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2017-09-20 20:53:09 +0300 |
commit | 4fd87a9a204a86e2c22b337ee160cf093f9c9f69 (patch) | |
tree | 5d22e3c5ed50987854c4d6325d432972df535a5a | |
parent | 9b998c18283c8acd4ed3d8e6df503fe861af04f0 (diff) | |
download | mariadb-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.result | 445 | ||||
-rw-r--r-- | mysql-test/suite/encryption/t/innodb-alter-option.test | 136 | ||||
-rw-r--r-- | storage/innobase/handler/handler0alter.cc | 13 | ||||
-rw-r--r-- | storage/xtradb/handler/handler0alter.cc | 13 |
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); } } |