mirror of
https://github.com/MariaDB/server.git
synced 2025-06-03 07:02:23 +03:00
When MariaDB 10.1.0 introduced table options for encryption and compression, it unnecessarily changed ha_innobase::check_if_supported_inplace_alter() so that ALGORITHM=COPY is forced when these parameters differ. A better solution is to move the check to innobase_need_rebuild(). In that way, the ALGORITHM=INPLACE interface (yes, the syntax is very misleading) can be used for rebuilding the table much more efficiently, with merge sort, with no undo logging, and allowing concurrent DML operations.
61 lines
2.0 KiB
Plaintext
61 lines
2.0 KiB
Plaintext
select @@innodb_encrypt_tables;
|
|
@@innodb_encrypt_tables
|
|
FORCE
|
|
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';
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
show create table t3;
|
|
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: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTED'
|
|
alter table t2 encrypted=yes;
|
|
alter table t3 encrypted=default;
|
|
alter table t4 encrypted=no;
|
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTED'
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes
|
|
show create table t2;
|
|
Table Create Table
|
|
t2 CREATE TABLE `t2` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes
|
|
show create table t3;
|
|
Table Create Table
|
|
t3 CREATE TABLE `t3` (
|
|
`a` int(11) DEFAULT NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
drop table t1;
|
|
drop table t2;
|
|
drop table t3;
|
|
drop table t4;
|