summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2015-05-12 09:43:26 +0200
committerSergei Golubchik <serg@mariadb.org>2015-05-13 14:27:18 +0200
commit16b6ec2e377f8f3dcac76e8c172ed9daa797d311 (patch)
treeb51753a3f4c86a50c3406a3447eb8bad2d6a7476
parentdef48e623a858f9ca798cd872a7399ef37396066 (diff)
downloadmariadb-git-16b6ec2e377f8f3dcac76e8c172ed9daa797d311.tar.gz
MDEV-8130 Wrong error code/message while encrypting a partitioned InnoDB table
when checking for a flag, use & not ==
-rw-r--r--mysql-test/suite/encryption/r/encryption_force.result13
-rw-r--r--mysql-test/suite/encryption/t/encryption_force.test10
-rw-r--r--storage/innobase/handler/handler0alter.cc2
-rw-r--r--storage/xtradb/handler/handler0alter.cc2
4 files changed, 25 insertions, 2 deletions
diff --git a/mysql-test/suite/encryption/r/encryption_force.result b/mysql-test/suite/encryption/r/encryption_force.result
index 8e129899275..de5f7da60a8 100644
--- a/mysql-test/suite/encryption/r/encryption_force.result
+++ b/mysql-test/suite/encryption/r/encryption_force.result
@@ -5,6 +5,9 @@ create table t1 (a int) engine=innodb encrypted=yes;
create table t2 (a int) engine=innodb encrypted=default;
create table t3 (a int) engine=innodb encrypted=no;
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';
create table t3 (a int) engine=innodb encrypted=no;
set global innodb_encrypt_tables='FORCE';
@@ -23,10 +26,19 @@ Table Create Table
t3 CREATE TABLE `t3` (
`a` int(11) DEFAULT NULL
) 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;
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
alter table t2 encrypted=yes;
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;
Table Create Table
t1 CREATE TABLE `t1` (
@@ -45,3 +57,4 @@ t3 CREATE TABLE `t3` (
drop table t1;
drop table t2;
drop table t3;
+drop table t4;
diff --git a/mysql-test/suite/encryption/t/encryption_force.test b/mysql-test/suite/encryption/t/encryption_force.test
index 71ca23ff3cc..3e09dd91839 100644
--- a/mysql-test/suite/encryption/t/encryption_force.test
+++ b/mysql-test/suite/encryption/t/encryption_force.test
@@ -1,4 +1,5 @@
-- source include/have_innodb.inc
+-- source include/have_partition.inc
-- source include/have_example_key_management_plugin.inc
select @@innodb_encrypt_tables;
@@ -8,6 +9,10 @@ create table t2 (a int) engine=innodb encrypted=default;
--error ER_CANT_CREATE_TABLE
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';
create table t3 (a int) engine=innodb encrypted=no;
set global innodb_encrypt_tables='FORCE';
@@ -15,12 +20,16 @@ set global innodb_encrypt_tables='FORCE';
show create table t1;
show create table t2;
show create table t3;
+show create table t4;
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
--error ER_CANT_CREATE_TABLE
alter table t1 encrypted=no;
alter table t2 encrypted=yes;
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 t2;
@@ -29,3 +38,4 @@ show create table t3;
drop table t1;
drop table t2;
drop table t3;
+drop table t4;
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc
index f0f109f4872..4cb912cd023 100644
--- a/storage/innobase/handler/handler0alter.cc
+++ b/storage/innobase/handler/handler0alter.cc
@@ -267,7 +267,7 @@ ha_innobase::check_if_supported_inplace_alter(
/* Change on engine specific table options require rebuild of the
table */
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 *old_options= table->s->option_struct;
diff --git a/storage/xtradb/handler/handler0alter.cc b/storage/xtradb/handler/handler0alter.cc
index ccdba2a8dfb..32b1fcf4b79 100644
--- a/storage/xtradb/handler/handler0alter.cc
+++ b/storage/xtradb/handler/handler0alter.cc
@@ -271,7 +271,7 @@ ha_innobase::check_if_supported_inplace_alter(
/* Change on engine specific table options require rebuild of the
table */
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 *old_options= table->s->option_struct;