Commit 16b6ec2e authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-8130 Wrong error code/message while encrypting a partitioned InnoDB table

when checking for a flag, use & not ==
parent def48e62
...@@ -5,6 +5,9 @@ create table t1 (a int) engine=innodb encrypted=yes; ...@@ -5,6 +5,9 @@ create table t1 (a int) engine=innodb encrypted=yes;
create table t2 (a int) engine=innodb encrypted=default; create table t2 (a int) engine=innodb encrypted=default;
create table t3 (a int) engine=innodb encrypted=no; create table t3 (a int) engine=innodb encrypted=no;
ERROR HY000: Can't create table `test`.`t3` (errno: 140 "Wrong create options") ERROR HY000: Can't create table `test`.`t3` (errno: 140 "Wrong create options")
create table t4 (a int) engine=innodb encrypted=yes partition by hash(a) partitions 2;
create table t5 (a int) engine=innodb encrypted=no partition by hash(a) partitions 2;
ERROR HY000: Can't create table `test`.`t5` (errno: 140 "Wrong create options")
set global innodb_encrypt_tables='ON'; set global innodb_encrypt_tables='ON';
create table t3 (a int) engine=innodb encrypted=no; create table t3 (a int) engine=innodb encrypted=no;
set global innodb_encrypt_tables='FORCE'; set global innodb_encrypt_tables='FORCE';
...@@ -23,10 +26,19 @@ Table Create Table ...@@ -23,10 +26,19 @@ Table Create Table
t3 CREATE TABLE `t3` ( t3 CREATE TABLE `t3` (
`a` int(11) DEFAULT NULL `a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=no ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=no
show create table t4;
Table Create Table
t4 CREATE TABLE `t4` (
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes
/*!50100 PARTITION BY HASH (a)
PARTITIONS 2 */
alter table t1 encrypted=no; alter table t1 encrypted=no;
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options") ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
alter table t2 encrypted=yes; alter table t2 encrypted=yes;
alter table t3 encrypted=default; alter table t3 encrypted=default;
alter table t4 encrypted=no;
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
...@@ -45,3 +57,4 @@ t3 CREATE TABLE `t3` ( ...@@ -45,3 +57,4 @@ t3 CREATE TABLE `t3` (
drop table t1; drop table t1;
drop table t2; drop table t2;
drop table t3; drop table t3;
drop table t4;
-- source include/have_innodb.inc -- source include/have_innodb.inc
-- source include/have_partition.inc
-- source include/have_example_key_management_plugin.inc -- source include/have_example_key_management_plugin.inc
select @@innodb_encrypt_tables; select @@innodb_encrypt_tables;
...@@ -8,6 +9,10 @@ create table t2 (a int) engine=innodb encrypted=default; ...@@ -8,6 +9,10 @@ create table t2 (a int) engine=innodb encrypted=default;
--error ER_CANT_CREATE_TABLE --error ER_CANT_CREATE_TABLE
create table t3 (a int) engine=innodb encrypted=no; create table t3 (a int) engine=innodb encrypted=no;
create table t4 (a int) engine=innodb encrypted=yes partition by hash(a) partitions 2;
--error ER_CANT_CREATE_TABLE
create table t5 (a int) engine=innodb encrypted=no partition by hash(a) partitions 2;
set global innodb_encrypt_tables='ON'; set global innodb_encrypt_tables='ON';
create table t3 (a int) engine=innodb encrypted=no; create table t3 (a int) engine=innodb encrypted=no;
set global innodb_encrypt_tables='FORCE'; set global innodb_encrypt_tables='FORCE';
...@@ -15,12 +20,16 @@ set global innodb_encrypt_tables='FORCE'; ...@@ -15,12 +20,16 @@ set global innodb_encrypt_tables='FORCE';
show create table t1; show create table t1;
show create table t2; show create table t2;
show create table t3; show create table t3;
show create table t4;
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ --replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
--error ER_CANT_CREATE_TABLE --error ER_CANT_CREATE_TABLE
alter table t1 encrypted=no; alter table t1 encrypted=no;
alter table t2 encrypted=yes; alter table t2 encrypted=yes;
alter table t3 encrypted=default; alter table t3 encrypted=default;
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
--error ER_CANT_CREATE_TABLE
alter table t4 encrypted=no;
show create table t1; show create table t1;
show create table t2; show create table t2;
...@@ -29,3 +38,4 @@ show create table t3; ...@@ -29,3 +38,4 @@ show create table t3;
drop table t1; drop table t1;
drop table t2; drop table t2;
drop table t3; drop table t3;
drop table t4;
...@@ -267,7 +267,7 @@ ha_innobase::check_if_supported_inplace_alter( ...@@ -267,7 +267,7 @@ ha_innobase::check_if_supported_inplace_alter(
/* Change on engine specific table options require rebuild of the /* Change on engine specific table options require rebuild of the
table */ table */
if (ha_alter_info->handler_flags if (ha_alter_info->handler_flags
== Alter_inplace_info::CHANGE_CREATE_OPTION) { & Alter_inplace_info::CHANGE_CREATE_OPTION) {
ha_table_option_struct *new_options= ha_alter_info->create_info->option_struct; ha_table_option_struct *new_options= ha_alter_info->create_info->option_struct;
ha_table_option_struct *old_options= table->s->option_struct; ha_table_option_struct *old_options= table->s->option_struct;
......
...@@ -271,7 +271,7 @@ ha_innobase::check_if_supported_inplace_alter( ...@@ -271,7 +271,7 @@ ha_innobase::check_if_supported_inplace_alter(
/* Change on engine specific table options require rebuild of the /* Change on engine specific table options require rebuild of the
table */ table */
if (ha_alter_info->handler_flags if (ha_alter_info->handler_flags
== Alter_inplace_info::CHANGE_CREATE_OPTION) { & Alter_inplace_info::CHANGE_CREATE_OPTION) {
ha_table_option_struct *new_options= ha_alter_info->create_info->option_struct; ha_table_option_struct *new_options= ha_alter_info->create_info->option_struct;
ha_table_option_struct *old_options= table->s->option_struct; ha_table_option_struct *old_options= table->s->option_struct;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment