mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge 10.1 into 10.2
This only merges MDEV-12253, adapting it to MDEV-12602 which is already present in 10.2 but not yet in the 10.1 revision that is being merged. TODO: Error handling in crash recovery needs to be improved. If a page cannot be decrypted (or read), we should cleanly abort the startup. If innodb_force_recovery is specified, we should ignore the problematic page and apply redo log to other pages. Currently, the test encryption.innodb-redo-badkey randomly fails like this (the last messages are from cmake -DWITH_ASAN): 2017-05-05 10:19:40 140037071685504 [Note] InnoDB: Starting crash recovery from checkpoint LSN=1635994 2017-05-05 10:19:40 140037071685504 [ERROR] InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 1 2017-05-05 10:19:40 140037071685504 [ERROR] InnoDB: Plugin initialization aborted at srv0start.cc[2201] with error Data structure corruption 2017-05-05 10:19:41 140037071685504 [Note] InnoDB: Starting shutdown... i================================================================= ==5226==ERROR: AddressSanitizer: attempting free on address which was not malloc()-ed: 0x612000018588 in thread T0 #0 0x736750 in operator delete(void*) (/mariadb/server/build/sql/mysqld+0x736750) #1 0x1e4833f in LatchCounter::~LatchCounter() /mariadb/server/storage/innobase/include/sync0types.h:599:4 #2 0x1e480b8 in LatchMeta<LatchCounter>::~LatchMeta() /mariadb/server/storage/innobase/include/sync0types.h:786:17 #3 0x1e35509 in sync_latch_meta_destroy() /mariadb/server/storage/innobase/sync/sync0debug.cc:1622:3 #4 0x1e35314 in sync_check_close() /mariadb/server/storage/innobase/sync/sync0debug.cc:1839:2 #5 0x1dfdc18 in innodb_shutdown() /mariadb/server/storage/innobase/srv/srv0start.cc:2888:2 #6 0x197e5e6 in innobase_init(void*) /mariadb/server/storage/innobase/handler/ha_innodb.cc:4475:3
This commit is contained in:
@ -9,4 +9,4 @@
|
||||
|
||||
5;966050D7777350B6FD5CCB3E5F648DA45C63BEFB6DEDDFA13443F156B7D35C84
|
||||
6;B5EA210C8C09EF20DB95EC584714A89F # and yet another
|
||||
|
||||
10;770A8A65DA156D24EE2A093277530143
|
||||
|
@ -1,7 +1,8 @@
|
||||
1;593E580927F47AB530D3B1237CDEF6D6
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
2;352E42F1B9DB5CB915C3262FE745520A
|
||||
3;CFE065600F5EB57481075C65180C3F8A
|
||||
4;205379930183490D3BECA139BDF4DB5B
|
||||
5;E2D944D5D837A1DCB22FF7FD397892EE
|
||||
6;BAFE99B0BB87F2CD33A6AF26A11F6BD1
|
||||
19;678D6B0063824BACCE33224B385104B35F30FF5749F0EBC030A0955DBC7FAC34
|
||||
20;BAFE99B0BB87F2CD33A6AF26A11F6BD1
|
||||
|
@ -1,4 +1,4 @@
|
||||
1;593E580927F47AB530D3B1237CDEF6D6
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
2;E4B00A45BF775B4E07D634EC5CA5912B
|
||||
3;6E35ACB162B29D1FB9E178021DAF16ED
|
||||
4;971A664A88EE0022D408E40BFAB17E79
|
||||
|
@ -1,4 +1,3 @@
|
||||
call mtr.add_suppression("InnoDB: Error: trying to do an operation on a dropped tablespace.*");
|
||||
SET default_storage_engine = InnoDB;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, c VARCHAR(256));
|
||||
CREATE TABLE t2 AS SELECT * FROM t1;
|
||||
|
@ -1,10 +1,13 @@
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
|
||||
create table t2 (a varchar(255)) engine=innodb;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
create table t3 (a varchar(255)) engine=innodb encrypted=no;
|
||||
insert t1 values (repeat('foobar', 42));
|
||||
insert t2 values (repeat('temp', 42));
|
||||
insert t3 values (repeat('dummy', 42));
|
||||
insert t1 values (repeat('foobarsecret', 12));
|
||||
insert t2 values (repeat('tempsecret', 12));
|
||||
insert t3 values (repeat('dummysecret', 12));
|
||||
# Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
|
||||
NAME
|
||||
@ -17,15 +20,14 @@ test/t1
|
||||
test/t2
|
||||
innodb_system
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in t1.ibd
|
||||
NOT FOUND /foobarsecret/ in t1.ibd
|
||||
# t2 ... on expecting NOT FOUND
|
||||
NOT FOUND /temp/ in t2.ibd
|
||||
NOT FOUND /tempsecret/ in t2.ibd
|
||||
# t3 no on expecting FOUND
|
||||
FOUND 42 /dummy/ in t3.ibd
|
||||
FOUND 12 /dummysecret/ in t3.ibd
|
||||
# ibdata1 expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in ibdata1
|
||||
NOT FOUND /foobarsecret/ in ibdata1
|
||||
# Now turn off encryption and wait for threads to decrypt everything
|
||||
SET GLOBAL innodb_encryption_threads = 1;
|
||||
SET GLOBAL innodb_encrypt_tables = off;
|
||||
# Wait max 10 min for key encryption threads to decrypt all spaces
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
|
||||
@ -39,15 +41,14 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
|
||||
NAME
|
||||
test/t1
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in t1.ibd
|
||||
# t2 ... on expecting FOUND
|
||||
NOT FOUND /temp/ in t2.ibd
|
||||
NOT FOUND /foobarsecret/ in t1.ibd
|
||||
# t2 ... default expecting FOUND
|
||||
FOUND 12 /tempsecret/ in t2.ibd
|
||||
# t3 no on expecting FOUND
|
||||
FOUND 42 /dummy/ in t3.ibd
|
||||
FOUND 12 /dummysecret/ in t3.ibd
|
||||
# ibdata1 expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in ibdata1
|
||||
NOT FOUND /foobarsecret/ in ibdata1
|
||||
# Now turn on encryption and wait for threads to encrypt all spaces
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
SET GLOBAL innodb_encrypt_tables = on;
|
||||
# Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
|
||||
@ -61,11 +62,11 @@ test/t1
|
||||
test/t2
|
||||
innodb_system
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in t1.ibd
|
||||
NOT FOUND /foobarsecret/ in t1.ibd
|
||||
# t2 ... on expecting NOT FOUND
|
||||
NOT FOUND /temp/ in t2.ibd
|
||||
NOT FOUND /tempsecret/ in t2.ibd
|
||||
# t3 no on expecting FOUND
|
||||
FOUND 42 /dummy/ in t3.ibd
|
||||
FOUND 12 /dummysecret/ in t3.ibd
|
||||
# ibdata1 expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in ibdata1
|
||||
NOT FOUND /foobarsecret/ in ibdata1
|
||||
drop table t1, t2, t3;
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("System key id 1 is missing at");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /System key id 1 is missing at/ in mysqld.1.err
|
||||
FOUND /System key id 1 is missing at/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("Cannot decrypt .*filekeys-data.enc. Wrong key");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /Cannot decrypt .*filekeys-data.enc. Wrong key/ in mysqld.1.err
|
||||
FOUND /Cannot decrypt .*filekeys-data.enc. Wrong key/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("File 'bad' not found");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /File 'bad' not found/ in mysqld.1.err
|
||||
FOUND /File 'bad' not found/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("Cannot decrypt .*filekeys-data.enc. Wrong key");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /Cannot decrypt .*filekeys-data.enc. Wrong key/ in mysqld.1.err
|
||||
FOUND /Cannot decrypt .*filekeys-data.enc. Wrong key/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("file-key-management-filename is not set");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /file-key-management-filename is not set/ in mysqld.1.err
|
||||
FOUND /file-key-management-filename is not set/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("File '.*keys.txt' not found");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /File '.*keys.txt' not found/ in mysqld.1.err
|
||||
FOUND /File '.*keys.txt' not found/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -12,7 +12,7 @@ ERROR HY000: Invalid key id at MYSQL_TMP_DIR/keys.txt line 2, column 2
|
||||
call mtr.add_suppression("File '.*keys.txt' not found");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /File '.*keys.txt' not found/ in mysqld.1.err
|
||||
FOUND /File '.*keys.txt' not found/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -21,7 +21,7 @@ plugin_status
|
||||
call mtr.add_suppression("Invalid key id");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /Invalid key id/ in mysqld.1.err
|
||||
FOUND /Invalid key id/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -32,7 +32,7 @@ ERROR HY000: Invalid key id at MYSQL_TMP_DIR/keys.txt line 2, column 11
|
||||
call mtr.add_suppression("Invalid key id");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 2 /Invalid key id/ in mysqld.1.err
|
||||
FOUND /Invalid key id/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -41,7 +41,7 @@ plugin_status
|
||||
call mtr.add_suppression("Invalid key id");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 2 /Invalid key id/ in mysqld.1.err
|
||||
FOUND /Invalid key id/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -52,7 +52,7 @@ ERROR HY000: Invalid key at MYSQL_TMP_DIR/keys.txt line 2, column 47
|
||||
call mtr.add_suppression("Invalid key id");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 2 /Invalid key id/ in mysqld.1.err
|
||||
FOUND /Invalid key id/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -61,7 +61,7 @@ plugin_status
|
||||
call mtr.add_suppression("Invalid key");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 3 /Invalid key/ in mysqld.1.err
|
||||
FOUND /Invalid key/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -72,7 +72,7 @@ ERROR HY000: Invalid key at MYSQL_TMP_DIR/keys.txt line 2, column 33
|
||||
call mtr.add_suppression("Invalid key");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 4 /Invalid key/ in mysqld.1.err
|
||||
FOUND /Invalid key/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -81,7 +81,7 @@ plugin_status
|
||||
call mtr.add_suppression("Invalid key");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 4 /Invalid key/ in mysqld.1.err
|
||||
FOUND /Invalid key/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -92,7 +92,7 @@ ERROR HY000: Syntax error at MYSQL_TMP_DIR/keys.txt line 2, column 2
|
||||
call mtr.add_suppression("Invalid key");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 4 /Invalid key/ in mysqld.1.err
|
||||
FOUND /Invalid key/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -101,7 +101,7 @@ plugin_status
|
||||
call mtr.add_suppression("Syntax error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /Syntax error/ in mysqld.1.err
|
||||
FOUND /Syntax error/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -112,7 +112,7 @@ ERROR HY000: Syntax error at MYSQL_TMP_DIR/keys.txt line 2, column 1
|
||||
call mtr.add_suppression("Syntax error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 2 /Syntax error/ in mysqld.1.err
|
||||
FOUND /Syntax error/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -121,7 +121,7 @@ plugin_status
|
||||
call mtr.add_suppression("Syntax error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 2 /Syntax error/ in mysqld.1.err
|
||||
FOUND /Syntax error/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -132,7 +132,7 @@ ERROR HY000: System key id 1 is missing at MYSQL_TMP_DIR/keys.txt line 1, column
|
||||
call mtr.add_suppression("Syntax error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 2 /Syntax error/ in mysqld.1.err
|
||||
FOUND /Syntax error/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
@ -141,7 +141,7 @@ plugin_status
|
||||
call mtr.add_suppression("System key id 1");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /System key id 1/ in mysqld.1.err
|
||||
FOUND /System key id 1/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("Cannot decrypt .*tooshort.enc. Not encrypted");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /Cannot decrypt .*tooshort.enc. Not encrypted/ in mysqld.1.err
|
||||
FOUND /Cannot decrypt .*tooshort.enc. Not encrypted/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,7 +1,7 @@
|
||||
call mtr.add_suppression("Cannot decrypt .*keys.txt. Not encrypted");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
FOUND 1 /Cannot decrypt .*keys.txt. Not encrypted/ in mysqld.1.err
|
||||
FOUND /Cannot decrypt .*keys.txt. Not encrypted/ in mysqld.1.err
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||
select plugin_status from information_schema.plugins
|
||||
|
@ -1,3 +1,7 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
# Create and populate a tables
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
@ -19,3 +23,5 @@ CREATE TABLE t5 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB PAGE_CO
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
# Cleanup
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,9 +1,8 @@
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/.* cannot be decrypted");
|
||||
call mtr.add_suppression("mysqld: File .* not found");
|
||||
|
||||
call mtr.add_suppression("Plugin 'file_key_management'");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\.");
|
||||
call mtr.add_suppression("File '.*mysql-test.std_data.keysbad3\\.txt' not found");
|
||||
# Start server with keys2.txt
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=2;
|
||||
INSERT INTO t1 VALUES ('foobar');
|
||||
ALTER TABLE t1 ADD COLUMN c2 INT;
|
||||
@ -29,15 +28,13 @@ ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 192 Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id 2 is not available. Can't continue reading table.
|
||||
Warning 192 Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DROP TABLE t1;
|
||||
Warnings:
|
||||
Warning 192 Table in tablespace encrypted.However key management plugin or used key_id 1 is not found or used encryption algorithm or method does not match. Can't continue opening the table.
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 192 Table in tablespace encrypted.However key management plugin or used key_id 1 is not found or used encryption algorithm or method does not match. Can't continue opening the table.
|
||||
# Start server with keys.txt
|
||||
# Start server with keys3.txt
|
||||
SET GLOBAL innodb_default_encryption_key_id=5;
|
||||
CREATE TABLE t2 (c VARCHAR(8), id int not null primary key, b int, key(b)) ENGINE=InnoDB ENCRYPTED=YES;
|
||||
INSERT INTO t2 VALUES ('foobar',1,2);
|
||||
|
||||
@ -47,69 +44,60 @@ ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 192 Table test/t2 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SELECT * FROM t2 where id = 1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SELECT * FROM t2 where b = 1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
INSERT INTO t2 VALUES ('tmp',3,3);
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DELETE FROM t2 where b = 3;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DELETE FROM t2 where id = 3;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
UPDATE t2 set b = b +1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
OPTIMIZE TABLE t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 optimize Warning Tablespace is missing for table 'test/t2'
|
||||
test.t2 optimize Warning Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t2 optimize Warning Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t2 optimize Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t2 optimize error Corrupt
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
ALTER TABLE t2 ADD COLUMN c INT;
|
||||
ALTER TABLE t2 ADD COLUMN d INT;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
ANALYZE TABLE t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 analyze Warning Tablespace is missing for table 'test/t2'
|
||||
test.t2 analyze Warning Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t2 analyze Warning Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t2 analyze Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t2 analyze error Corrupt
|
||||
SHOW WARNINGS;
|
||||
@ -118,16 +106,8 @@ TRUNCATE TABLE t2;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1812 Tablespace is missing for table 'test/t2'
|
||||
Warning 192 Table test/t2 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t2 in file ./test/t2.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DROP TABLE t2;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
|
||||
# Restart server with keys.txt
|
||||
DROP TABLE t2;
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
# Start server with keys2.txt
|
||||
|
@ -1,23 +1,57 @@
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1(new)?\\.ibd' cannot be decrypted\\.");
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTION_KEY_ID=4;
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table \`test\`.\`t1\` is set as discarded.");
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
select * from t1;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
show warnings;
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 192 Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
alter table t1 discard tablespace;
|
||||
ALTER TABLE t1 engine=InnoDB;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
show warnings;
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 192 Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
alter table t1 engine=InnoDB;
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t1 optimize Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t1 optimize error Corrupt
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t1 check Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t1 check error Corrupt
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
Warnings:
|
||||
Warning 192 Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Warning 1812 Tablespace is missing for table 'test/t1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
Warnings:
|
||||
Warning 1814 Tablespace has been discarded for table `t1`
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`pk` int(11) NOT NULL,
|
||||
`f` varchar(8) DEFAULT NULL,
|
||||
PRIMARY KEY (`pk`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=4
|
||||
RENAME TABLE t1 TO t1new;
|
||||
ALTER TABLE t1new RENAME TO t2new;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1new;
|
||||
DROP TABLE t1, t1new;
|
||||
ERROR 42S02: Unknown table 'test.t1,test.t1new'
|
||||
|
@ -1,5 +1,6 @@
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table \`test\`.\`t1\` is set as discarded.");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
SHOW WARNINGS;
|
||||
@ -13,14 +14,12 @@ t1 CREATE TABLE `t1` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `ENCRYPTED`=YES `ENCRYPTION_KEY_ID`=4
|
||||
INSERT INTO t1 VALUES (1,'foobar'),(2,'barfoo');
|
||||
FLUSH TABLE t1 FOR EXPORT;
|
||||
# List before copying files
|
||||
t1.cfg
|
||||
t1.frm
|
||||
t1.ibd
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
restore: t1 .ibd and .cfg files
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW CREATE TABLE t1;
|
||||
|
@ -1,11 +1,20 @@
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1\\.ibd' cannot be decrypted\\.");
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTION_KEY_ID=4;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Warning Table test/t1 in tablespace is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t1 optimize Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t1 optimize Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t1 optimize error Corrupt
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Warning Table test/t1 in tablespace # is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t1 check Warning Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue checking table.
|
||||
test.t1 check Warning Table t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
test.t1 check Error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t1 check error Corrupt
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
|
@ -1,20 +0,0 @@
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize Warning Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue checking table.
|
||||
test.t1 optimize Warning InnoDB: Cannot defragment table test/t1: returned error code 192
|
||||
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize error Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
test.t1 optimize status Operation failed
|
||||
Warnings:
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 192 Table test/t1 is encrypted but encryption service or used key_id is not available. Can't continue reading table.
|
||||
Error 1296 Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
DROP TABLE t1;
|
@ -1,16 +0,0 @@
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
#
|
||||
# Restart the server with key 4 in the key file
|
||||
#
|
||||
CREATE TABLE t1 (i INT, KEY(i)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
#
|
||||
# Restart the server with a different value for key 4 in the key file
|
||||
#
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SELECT * FROM t1;
|
||||
i
|
||||
1
|
||||
DROP TABLE t1;
|
20
mysql-test/suite/encryption/r/innodb-compressed-blob.result
Normal file
20
mysql-test/suite/encryption/r/innodb-compressed-blob.result
Normal file
@ -0,0 +1,20 @@
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
|
||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set GLOBAL innodb_default_encryption_key_id=4;
|
||||
create table t1(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed;
|
||||
create table t2(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes;
|
||||
create table t3(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed encrypted=no;
|
||||
insert into t1 values (1, repeat('secret',6000));
|
||||
insert into t2 values (1, repeat('secret',6000));
|
||||
insert into t3 values (1, repeat('secret',6000));
|
||||
# Restart mysqld --file-key-management-filename=keys3.txt
|
||||
select count(*) from t1 FORCE INDEX (b) where b like 'secret%';
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
select count(*) from t2 FORCE INDEX (b) where b like 'secret%';
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
select count(*) from t3 FORCE INDEX (b) where b like 'secret%';
|
||||
count(*)
|
||||
1
|
||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||
drop table t1,t2,t3;
|
@ -1,4 +1,6 @@
|
||||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_compression_algorithm = 1;
|
||||
create table t1(c1 bigint not null primary key auto_increment, b char(200)) engine=innodb encrypted=yes encryption_key_id=4;
|
||||
create table t2(c1 bigint not null primary key auto_increment, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
|
@ -1,5 +1,7 @@
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_compression_algorithm = 1;
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=4;
|
||||
show warnings;
|
||||
|
@ -1,3 +1,7 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_encrypt_tables = ON;
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=4;
|
||||
@ -49,3 +53,5 @@ Error 1005 Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create
|
||||
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
||||
set innodb_default_encryption_key_id = 1;
|
||||
drop table t1,t2;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,4 +1,4 @@
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t[15] cannot be decrypted");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\.");
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
create table t5 (
|
||||
`intcol1` int(32) DEFAULT NULL,
|
||||
@ -16,20 +16,8 @@ CREATE TABLE `t1` (
|
||||
`charcol3` varchar(128) DEFAULT NULL
|
||||
) ENGINE=InnoDB;
|
||||
insert into t1 values (1,2,'maria','db','encryption');
|
||||
select * from t1;
|
||||
intcol1 intcol2 charcol1 charcol2 charcol3
|
||||
1 2 maria db encryption
|
||||
select * from t5;
|
||||
intcol1 intcol2 charcol1 charcol2 charcol3
|
||||
1 2 maria db encryption
|
||||
alter table t1 encrypted='yes' `encryption_key_id`=1;
|
||||
select * from t1;
|
||||
intcol1 intcol2 charcol1 charcol2 charcol3
|
||||
1 2 maria db encryption
|
||||
select * from t5;
|
||||
intcol1 intcol2 charcol1 charcol2 charcol3
|
||||
1 2 maria db encryption
|
||||
select * from t1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
select * from t5;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
|
23
mysql-test/suite/encryption/r/innodb-force-corrupt.result
Normal file
23
mysql-test/suite/encryption/r/innodb-force-corrupt.result
Normal file
@ -0,0 +1,23 @@
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
# Create and populate tables to be corrupted
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT,c char(200)) ENGINE=InnoDB encrypted=yes;
|
||||
CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT,c char(200)) ENGINE=InnoDB row_format=compressed encrypted=yes;
|
||||
CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes encrypted=yes;
|
||||
BEGIN;
|
||||
INSERT INTO t1 (b,c) VALUES ('corrupt me','secret');
|
||||
INSERT INTO t1 (b,c) VALUES ('corrupt me','moresecretmoresecret');
|
||||
INSERT INTO t2 select * from t1;
|
||||
INSERT INTO t3 select * from t1;
|
||||
COMMIT;
|
||||
# Backup tables before corrupting
|
||||
# Corrupt tables
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SELECT * FROM t2;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
SELECT * FROM t3;
|
||||
ERROR HY000: Got error 192 'Table encrypted but decryption failed. This could be because correct encryption management plugin is not loaded, used encryption key is not available or encryption method does not match.' from InnoDB
|
||||
# Restore the original tables
|
||||
DROP TABLE t1,t2,t3;
|
@ -0,0 +1,19 @@
|
||||
call mtr.add_suppression("InnoDB: New log files created, LSN=.*");
|
||||
call mtr.add_suppression("InnoDB: Creating foreign key constraint system tables.");
|
||||
call mtr.add_suppression("InnoDB: Error: Table .*");
|
||||
CREATE TABLE t1 (
|
||||
pk bigint auto_increment,
|
||||
col_int int,
|
||||
col_int_key int,
|
||||
col_char char(12),
|
||||
col_char_key char(12),
|
||||
primary key (pk),
|
||||
key (`col_int_key` ),
|
||||
key (`col_char_key` )
|
||||
) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
INSERT INTO t1 VALUES (NULL,1,1,'foo','foo'),(NULL,2,2,'bar','bar'),(NULL,3,3,'baz','baz'),(NULL,4,4,'qux','qux');
|
||||
INSERT INTO t2
|
||||
SELECT NULL, a1.col_int, a1.col_int_key, a1.col_char, a1.col_char_key
|
||||
FROM t1 a1, t1 a2, t1 a3, t1 a4, t1 a5, t1 a6, t1 a7, t1 a8, t1 a9, t1 a10;
|
||||
DROP TABLE t1, t2;
|
57
mysql-test/suite/encryption/r/innodb-log-encrypt.result
Normal file
57
mysql-test/suite/encryption/r/innodb-log-encrypt.result
Normal file
@ -0,0 +1,57 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table t1(c1 bigint not null, b char(200), c varchar(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
create procedure innodb_insert_proc (repeat_count int)
|
||||
begin
|
||||
declare current_num int;
|
||||
set current_num = 0;
|
||||
while current_num < repeat_count do
|
||||
insert into t1 values(current_num, substring(MD5(RAND()), -64), REPEAT('privatejanprivate',10));
|
||||
set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
commit;
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
commit;
|
||||
update t1 set c1 = c1 +1;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
2000
|
||||
# Kill the server
|
||||
# ibdata1 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in ibdata1
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in t1.ibd
|
||||
# log0 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in ib_logfile0
|
||||
# log1 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in ib_logfile1
|
||||
# Restart mysqld --innodb_encrypt_log=0
|
||||
insert into t1 values(5000, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5001, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5002, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5003, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5004, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
# ibdata1 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in ibdata1
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in t1.ibd
|
||||
# log0 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in ib_logfile0
|
||||
# log1 yes on expecting NOT FOUND
|
||||
NOT FOUND /privatejanprivate/ in ib_logfile1
|
||||
# ibdata1 yes on expecting NOT FOUND
|
||||
NOT FOUND /publicmessage/ in ibdata1
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /publicmessage/ in t1.ibd
|
||||
# log0 no on expecting FOUND/NOTFOUND depending where insert goes
|
||||
FOUND 48 /publicmessage/ in ib_logfile0
|
||||
# log1 no on expecting FOUND/NOTFOUND depending where insert goes
|
||||
NOT FOUND /publicmessage/ in ib_logfile1
|
||||
drop procedure innodb_insert_proc;
|
||||
drop table t1;
|
@ -1,5 +1,4 @@
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t. cannot be decrypted");
|
||||
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
|
||||
# Start server with keys2.txt
|
||||
CREATE TABLE t1(a int not null primary key auto_increment, b varchar(128)) engine=innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=19;
|
||||
CREATE TABLE t2(a int not null primary key auto_increment, b varchar(128)) engine=innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
|
||||
|
@ -1,13 +1,9 @@
|
||||
call mtr.add_suppression("InnoDB: Warning: innodb_page_size has been changed from default value *");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact encrypted=yes encryption_key_id=1;
|
||||
create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic encrypted=yes encryption_key_id=3;
|
||||
ERROR HY000: Can't create table `test`.`innodb_dynamic` (errno: 140 "Wrong create options")
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Warning 140 InnoDB: ENCRYPTION_KEY_ID 3 not available
|
||||
Error 1005 Can't create table `test`.`innodb_dynamic` (errno: 140 "Wrong create options")
|
||||
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
||||
create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic encrypted=yes encryption_key_id=33;
|
||||
create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant encrypted=yes encryption_key_id=4;
|
||||
show create table innodb_compact;
|
||||
Table Create Table
|
||||
@ -20,7 +16,7 @@ Table Create Table
|
||||
innodb_dynamic CREATE TABLE `innodb_dynamic` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `encrypted`=yes `encryption_key_id`=33
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `encrypted`=yes `encryption_key_id`=3
|
||||
show create table innodb_redundant;
|
||||
Table Create Table
|
||||
innodb_redundant CREATE TABLE `innodb_redundant` (
|
||||
@ -76,6 +72,9 @@ innodb_compact CREATE TABLE `innodb_compact` (
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
alter table innodb_dynamic engine=innodb encrypted=DEFAULT encryption_key_id=DEFAULT;
|
||||
Warnings:
|
||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||
Warning 1478 InnoDB: assuming ROW_FORMAT=COMPACT.
|
||||
show create table innodb_dynamic;
|
||||
Table Create Table
|
||||
innodb_dynamic CREATE TABLE `innodb_dynamic` (
|
||||
|
@ -1,3 +1,7 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
@ -118,6 +122,10 @@ variable_value >= 0
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
@ -193,6 +201,10 @@ innodb_redundant CREATE TABLE `innodb_redundant` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
show create table innodb_compact;
|
||||
Table Create Table
|
||||
innodb_compact CREATE TABLE `innodb_compact` (
|
||||
@ -269,3 +281,5 @@ drop table innodb_compressed;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
drop table innodb_defkey;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,3 +1,5 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb page_compressed=1;
|
||||
show warnings;
|
||||
@ -36,73 +38,14 @@ set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
commit;
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(5000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
insert into innodb_compact select * from innodb_normal;
|
||||
insert into innodb_dynamic select * from innodb_normal;
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
select count(*) from innodb_normal;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
5000
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_compressed';
|
||||
variable_value >= 0
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decompressed';
|
||||
variable_value >= 0
|
||||
commit;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
select count(*) from innodb_normal;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
5000
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_compressed';
|
||||
variable_value >= 0
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decompressed';
|
||||
variable_value >= 0
|
||||
alter table innodb_normal engine=innodb page_compressed=DEFAULT;
|
||||
show create table innodb_normal;
|
||||
Table Create Table
|
||||
@ -124,55 +67,9 @@ innodb_dynamic CREATE TABLE `innodb_dynamic` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
show create table innodb_normal;
|
||||
Table Create Table
|
||||
innodb_normal CREATE TABLE `innodb_normal` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
show create table innodb_compact;
|
||||
Table Create Table
|
||||
innodb_compact CREATE TABLE `innodb_compact` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
show create table innodb_dynamic;
|
||||
Table Create Table
|
||||
innodb_dynamic CREATE TABLE `innodb_dynamic` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
select count(*) from innodb_normal;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
5000
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value = 0
|
||||
1
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value = 0
|
||||
1
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_compressed';
|
||||
variable_value = 0
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decompressed';
|
||||
variable_value = 0
|
||||
drop procedure innodb_insert_proc;
|
||||
drop table innodb_normal;
|
||||
drop table innodb_compact;
|
||||
drop table innodb_dynamic;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,6 +1,5 @@
|
||||
call mtr.add_suppression("KeyID 0 not found or with error. Check the key and the log*");
|
||||
call mtr.add_suppression("Disabling redo log encryp*");
|
||||
call mtr.add_suppression("InnoDB: Redo log crypto: Can't initialize to key version*");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
@ -50,92 +49,33 @@ set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
commit;
|
||||
set autocommit=0;
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
insert into innodb_compact select * from innodb_normal;
|
||||
insert into innodb_compressed select * from innodb_normal;
|
||||
insert into innodb_dynamic select * from innodb_normal;
|
||||
insert into innodb_redundant select * from innodb_normal;
|
||||
commit;
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value > 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
update innodb_redundant set c1 = c1 + 1;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compressed where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_redundant where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compressed t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_redundant t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value > 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
update innodb_redundant set c1 = c1 + 1;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compressed where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_redundant where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compressed t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_redundant t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value > 0
|
||||
1
|
||||
SET GLOBAL innodb_encrypt_tables=OFF;
|
||||
alter table innodb_compact engine=innodb encrypted=DEFAULT encryption_key_id=DEFAULT;
|
||||
show create table innodb_compact;
|
||||
Table Create Table
|
||||
@ -164,63 +104,6 @@ innodb_redundant CREATE TABLE `innodb_redundant` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
show create table innodb_compact;
|
||||
Table Create Table
|
||||
innodb_compact CREATE TABLE `innodb_compact` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
||||
show create table innodb_compressed;
|
||||
Table Create Table
|
||||
innodb_compressed CREATE TABLE `innodb_compressed` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
show create table innodb_dynamic;
|
||||
Table Create Table
|
||||
innodb_dynamic CREATE TABLE `innodb_dynamic` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
||||
show create table innodb_redundant;
|
||||
Table Create Table
|
||||
innodb_redundant CREATE TABLE `innodb_redundant` (
|
||||
`c1` bigint(20) NOT NULL,
|
||||
`b` char(200) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
update innodb_redundant set c1 = c1 + 1;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compressed where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_redundant where c1 < 1500000;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_compressed t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
select count(*) from innodb_redundant t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
count(*)
|
||||
2000
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
@ -233,6 +116,10 @@ drop table innodb_compact;
|
||||
drop table innodb_compressed;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB ENCRYPTION_KEY_ID=2 ENCRYPTED=YES;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
# Restarting server...
|
||||
|
45
mysql-test/suite/encryption/r/innodb-redo-badkey.result
Normal file
45
mysql-test/suite/encryption/r/innodb-redo-badkey.result
Normal file
@ -0,0 +1,45 @@
|
||||
call mtr.add_suppression("InnoDB: Block in space_id .* in file .* encrypted.");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' .*");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
|
||||
call mtr.add_suppression("InnoDB: Read operation failed for tablespace .*");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed.*");
|
||||
call mtr.add_suppression("InnoDB: Recovery read page .*");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t4 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE .*");
|
||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted .*");
|
||||
call mtr.add_suppression("InnoDB: ############### CORRUPT LOG RECORD FOUND ##################");
|
||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||
# Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table t1(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4;
|
||||
create table t2(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed;
|
||||
create table t3(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=4;
|
||||
create table t4(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb;
|
||||
begin;
|
||||
insert into t2 select * from t1;
|
||||
insert into t3 select * from t1;
|
||||
insert into t4 select * from t1;
|
||||
commit;
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
begin;
|
||||
update t1 set c = repeat('secret3', 20);
|
||||
update t2 set c = repeat('secret4', 20);
|
||||
update t3 set c = repeat('secret4', 20);
|
||||
update t4 set c = repeat('secret4', 20);
|
||||
insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
|
||||
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
|
||||
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
|
||||
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
|
||||
COMMIT;
|
||||
# Kill the server
|
||||
# restart
|
||||
# Kill the server
|
||||
# Restart mysqld --innodb-force-recovery=1
|
||||
# Kill the server
|
||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||
drop table t1, t2,t3,t4;
|
37
mysql-test/suite/encryption/r/innodb-redo-nokeys.result
Normal file
37
mysql-test/suite/encryption/r/innodb-redo-nokeys.result
Normal file
@ -0,0 +1,37 @@
|
||||
call mtr.add_suppression("InnoDB: Block in space_id .*");
|
||||
call mtr.add_suppression("mysqld: File .*");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' .*");
|
||||
call mtr.add_suppression("InnoDB: cannot enable encryption, encryption plugin is not available");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t4 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
|
||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table t1(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=20;
|
||||
create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed;
|
||||
create table t3(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=20;
|
||||
create table t4(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb;
|
||||
begin;
|
||||
insert into t2 select * from t1;
|
||||
insert into t3 select * from t1;
|
||||
insert into t4 select * from t1;
|
||||
commit;
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
begin;
|
||||
update t1 set c = repeat('secret3', 20);
|
||||
update t2 set c = repeat('secret4', 20);
|
||||
update t3 set c = repeat('secret4', 20);
|
||||
update t4 set c = repeat('secret4', 20);
|
||||
insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
|
||||
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
|
||||
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
|
||||
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
|
||||
COMMIT;
|
||||
# Kill the server
|
||||
# restart
|
||||
# Restart mysqld --file-key-management-filename=keys2.txt
|
||||
drop table t1, t2,t3,t4;
|
@ -1,3 +1,5 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
SET GLOBAL innodb_encrypt_tables = on;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
@ -95,13 +97,8 @@ set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
commit;
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(5000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
select count(*) from innodb_normal;
|
||||
count(*)
|
||||
5000
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
insert into innodb_page_compressed1 select * from innodb_normal;
|
||||
insert into innodb_page_compressed2 select * from innodb_normal;
|
||||
insert into innodb_page_compressed3 select * from innodb_normal;
|
||||
@ -114,120 +111,45 @@ insert into innodb_page_compressed9 select * from innodb_normal;
|
||||
commit;
|
||||
select count(*) from innodb_page_compressed1 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed2 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed3 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed4 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed5 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed6 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed7 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed8 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
2000
|
||||
select count(*) from innodb_page_compressed9 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
2000
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value > 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
variable_value >= 0
|
||||
1
|
||||
select count(*) from innodb_page_compressed1 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed2 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed3 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed4 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed5 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed6 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed7 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed8 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed9 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
update innodb_page_compressed1 set c1 = c1 + 1;
|
||||
update innodb_page_compressed2 set c1 = c1 + 1;
|
||||
update innodb_page_compressed3 set c1 = c1 + 1;
|
||||
update innodb_page_compressed4 set c1 = c1 + 1;
|
||||
update innodb_page_compressed5 set c1 = c1 + 1;
|
||||
update innodb_page_compressed6 set c1 = c1 + 1;
|
||||
update innodb_page_compressed7 set c1 = c1 + 1;
|
||||
update innodb_page_compressed8 set c1 = c1 + 1;
|
||||
update innodb_page_compressed9 set c1 = c1 + 1;
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
variable_value >= 0
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
variable_value > 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
variable_value >= 0
|
||||
1
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
SET GLOBAL innodb_encrypt_tables = off;
|
||||
select count(*) from innodb_page_compressed1 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed2 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed3 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed4 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed5 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed6 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed7 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed8 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
select count(*) from innodb_page_compressed9 where c1 < 500000;
|
||||
count(*)
|
||||
5000
|
||||
update innodb_page_compressed1 set c1 = c1 + 1;
|
||||
update innodb_page_compressed2 set c1 = c1 + 1;
|
||||
update innodb_page_compressed3 set c1 = c1 + 1;
|
||||
@ -240,11 +162,11 @@ update innodb_page_compressed9 set c1 = c1 + 1;
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value > 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
variable_value >= 0
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
variable_value > 0
|
||||
1
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
variable_value >= 0
|
||||
|
@ -1,5 +1,6 @@
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded.");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
||||
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
|
||||
CREATE TABLE t3 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB row_format=compressed encrypted=yes;
|
||||
|
@ -1,4 +1,8 @@
|
||||
call mtr.add_suppression("trying to do an operation on a dropped tablespace .*");
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_encrypt_tables = OFF;
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB;
|
||||
@ -61,5 +65,7 @@ COUNT(1)
|
||||
SELECT COUNT(1) FROM t5;
|
||||
COUNT(1)
|
||||
400
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
drop table t1,t2,t3,t4, t5;
|
||||
set GLOBAL innodb_default_encryption_key_id=1;
|
||||
|
@ -1,3 +1,7 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
|
||||
CREATE TABLE t2 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=2;
|
||||
INSERT INTO t1 VALUES ('foobar');
|
||||
@ -10,3 +14,5 @@ NAME ENCRYPTION_SCHEME MIN_KEY_VERSION CURRENT_KEY_VERSION CURRENT_KEY_ID
|
||||
test/t1 1 1 1 1
|
||||
test/t2 1 1 1 2
|
||||
DROP TABLE t1, t2;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,3 +1,7 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table innodb_compressed1(c1 bigint not null primary key, d int, a varchar(20), b char(200)) engine=innodb row_format=compressed encrypted=yes;
|
||||
create table innodb_compressed2(c1 bigint not null primary key, d int, a varchar(20), b char(200)) engine=innodb row_format=compressed key_block_size=1 encrypted=yes;
|
||||
create table innodb_compressed3(c1 bigint not null primary key, d int, a varchar(20), b char(200)) engine=innodb row_format=compressed key_block_size=2 encrypted=yes;
|
||||
@ -23,6 +27,10 @@ NOT FOUND /private/ in innodb_compressed2.ibd
|
||||
NOT FOUND /private/ in innodb_compressed3.ibd
|
||||
# t4 yes on expecting NOT FOUND
|
||||
NOT FOUND /private/ in innodb_compressed4.ibd
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
select * from innodb_compressed1 where d = 20;
|
||||
c1 d a b
|
||||
1 20 private evenmoreprivate
|
||||
@ -147,3 +155,5 @@ drop table innodb_compressed1;
|
||||
drop table innodb_compressed2;
|
||||
drop table innodb_compressed3;
|
||||
drop table innodb_compressed4;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,3 +1,7 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact;
|
||||
create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic;
|
||||
@ -101,6 +105,10 @@ variable_value >= 0
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
variable_value >= 0
|
||||
1
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
@ -155,3 +163,5 @@ drop table innodb_compact;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_compressed;
|
||||
drop table innodb_redundant;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,2 +1,5 @@
|
||||
call mtr.add_suppression("InnoDB: New log files created, LSN");
|
||||
call mtr.add_suppression("InnoDB: Creating foreign key constraint system tables");
|
||||
shutdown;
|
||||
create table t1 (a int);
|
||||
drop table t1;
|
||||
|
@ -1,4 +1,5 @@
|
||||
SET GLOBAL innodb_fast_shutdown=0;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SHOW VARIABLES LIKE 'innodb_encrypt%';
|
||||
Variable_name Value
|
||||
innodb_encrypt_log OFF
|
||||
|
@ -1,3 +1,5 @@
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
||||
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
|
||||
CREATE TABLE t3 (id INT, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
||||
@ -10,8 +12,8 @@ begin
|
||||
declare current_num int;
|
||||
set current_num = 0;
|
||||
while current_num < repeat_count do
|
||||
insert into t1 values (current_num,repeat('foobar',42));
|
||||
insert into t2 values (current_num,repeat('temp', 42));
|
||||
insert into t1 values (current_num,repeat('foobar',12));
|
||||
insert into t2 values (current_num,repeat('tempsecret', 12));
|
||||
insert into t3 values (current_num,repeat('barfoo',42));
|
||||
insert into t4 values (current_num,repeat('repeat',42));
|
||||
insert into t5 values (current_num,substring('A BC DEF GHIJ KLM NOPQRS TUV WXYZ 012 3456789', rand()*36+1, 100), repeat('author new',22));
|
||||
@ -29,7 +31,7 @@ set autocommit=1;
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in t1.ibd
|
||||
# t2 ... on expecting NOT FOUND
|
||||
NOT FOUND /temp/ in t2.ibd
|
||||
NOT FOUND /tempsecret/ in t2.ibd
|
||||
# t3 ... on expecting NOT FOUND
|
||||
NOT FOUND /barfoo/ in t3.ibd
|
||||
# t4 ... on expecting NOT FOUND
|
||||
@ -124,7 +126,7 @@ t7 CREATE TABLE `t7` (
|
||||
# t1 yes on expecting NOT FOUND
|
||||
NOT FOUND /foobar/ in t1.ibd
|
||||
# t2 ... on expecting NOT FOUND
|
||||
NOT FOUND /temp/ in t2.ibd
|
||||
NOT FOUND /tempsecret/ in t2.ibd
|
||||
# t3 ... on expecting NOT FOUND
|
||||
NOT FOUND /barfoo/ in t3.ibd
|
||||
# t4 ... on expecting NOT FOUND
|
||||
|
@ -1,4 +1,8 @@
|
||||
# Restart mysqld --loose-file-key-management-filename=keys2.txt
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
show warnings;
|
||||
Level Code Message
|
||||
@ -102,6 +106,10 @@ variable_value >= 0
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
variable_value >= 0
|
||||
1
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
alter table innodb_compact engine=innodb encryption_key_id = 2;
|
||||
alter table innodb_compressed engine=innodb encryption_key_id = 3;
|
||||
alter table innodb_dynamic engine=innodb encryption_key_id = 4;
|
||||
@ -147,3 +155,5 @@ drop table innodb_compact;
|
||||
drop table innodb_compressed;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
Warnings:
|
||||
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
|
||||
|
@ -1,6 +1,6 @@
|
||||
create table snapshot_status engine = myisam
|
||||
select * from information_schema.global_status
|
||||
where variable_name like 'innodb_scrub_background%';
|
||||
where variable_name like 'innodb_scrub%';
|
||||
# MDEV-8139 Fix scrubbing tests
|
||||
# FIXME: Add index(b) to each table; ensure that undo logs are scrubbed.
|
||||
create table delete_3 (
|
||||
|
@ -26,7 +26,6 @@ i 10
|
||||
j 10
|
||||
drop table t1;
|
||||
set global binlog_cache_size=8192;
|
||||
connect con1, localhost, root;
|
||||
create table t1 (a text) engine=innodb;
|
||||
start transaction;
|
||||
insert t1 select repeat(seq, 1000) from seq_1_to_15;
|
||||
@ -35,8 +34,6 @@ start transaction;
|
||||
insert t1 select repeat(seq, 1000) from seq_1_to_8;
|
||||
commit;
|
||||
drop table t1;
|
||||
disconnect con1;
|
||||
connect con2, localhost, root;
|
||||
create table t1 (a text) engine=innodb;
|
||||
start transaction;
|
||||
insert t1 select repeat(seq, 1000) from seq_1_to_15;
|
||||
@ -46,6 +43,4 @@ rollback to savepoint foo;
|
||||
insert t1 select repeat(seq, 1000) from seq_31_to_40;
|
||||
commit;
|
||||
drop table t1;
|
||||
disconnect con2;
|
||||
connection default;
|
||||
set global binlog_cache_size=default;
|
||||
|
@ -7,9 +7,6 @@
|
||||
#
|
||||
# MDEV-8164: Server crashes in pfs_mutex_enter_func after fil_crypt_is_closing or alike
|
||||
#
|
||||
|
||||
call mtr.add_suppression("InnoDB: Error: trying to do an operation on a dropped tablespace.*");
|
||||
|
||||
SET default_storage_engine = InnoDB;
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, c VARCHAR(256));
|
||||
|
@ -1,7 +1,7 @@
|
||||
--innodb-encrypt-tables=ON
|
||||
--innodb-encrypt-log=ON
|
||||
--innodb-encryption-rotate-key-age=15
|
||||
--innodb-encryption-threads=1
|
||||
--innodb-encryption-threads=4
|
||||
--innodb-tablespaces-encryption
|
||||
|
||||
|
||||
|
@ -14,15 +14,19 @@
|
||||
--let t3_IBD = $MYSQLD_DATADIR/test/t3.ibd
|
||||
--let SEARCH_RANGE = 10000000
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a varchar(255)) engine=innodb encrypted=yes;
|
||||
create table t2 (a varchar(255)) engine=innodb;
|
||||
show warnings;
|
||||
create table t3 (a varchar(255)) engine=innodb encrypted=no;
|
||||
|
||||
insert t1 values (repeat('foobar', 42));
|
||||
insert t2 values (repeat('temp', 42));
|
||||
insert t3 values (repeat('dummy', 42));
|
||||
insert t1 values (repeat('foobarsecret', 12));
|
||||
insert t2 values (repeat('tempsecret', 12));
|
||||
insert t3 values (repeat('dummysecret', 12));
|
||||
|
||||
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
--let $wait_timeout= 600
|
||||
@ -34,19 +38,19 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--let SEARCH_PATTERN=foobarsecret
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=temp
|
||||
--let SEARCH_PATTERN=tempsecret
|
||||
--echo # t2 ... on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t2_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=dummy
|
||||
--let SEARCH_PATTERN=dummysecret
|
||||
--echo # t3 no on expecting FOUND
|
||||
-- let SEARCH_FILE=$t3_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--let SEARCH_PATTERN=foobarsecret
|
||||
--echo # ibdata1 expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$ib1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
@ -54,12 +58,12 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
|
||||
-- source include/start_mysqld.inc
|
||||
|
||||
--echo # Now turn off encryption and wait for threads to decrypt everything
|
||||
SET GLOBAL innodb_encryption_threads = 1;
|
||||
|
||||
SET GLOBAL innodb_encrypt_tables = off;
|
||||
|
||||
--echo # Wait max 10 min for key encryption threads to decrypt all spaces
|
||||
--let $wait_timeout= 600
|
||||
--let $wait_condition=SELECT COUNT(*) = 5 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND KEY_ROTATION_PAGE_NUMBER IS NULL;
|
||||
--let $wait_condition=SELECT COUNT(*) = 5 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND CURRENT_KEY_VERSION = 0;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
|
||||
@ -67,27 +71,27 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--let SEARCH_PATTERN=foobarsecret
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=temp
|
||||
--echo # t2 ... on expecting FOUND
|
||||
--let SEARCH_PATTERN=tempsecret
|
||||
--echo # t2 ... default expecting FOUND
|
||||
-- let SEARCH_FILE=$t2_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=dummy
|
||||
--let SEARCH_PATTERN=dummysecret
|
||||
--echo # t3 no on expecting FOUND
|
||||
-- let SEARCH_FILE=$t3_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--let SEARCH_PATTERN=foobarsecret
|
||||
--echo # ibdata1 expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$ib1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
|
||||
-- source include/start_mysqld.inc
|
||||
|
||||
--echo # Now turn on encryption and wait for threads to encrypt all spaces
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
SET GLOBAL innodb_encrypt_tables = on;
|
||||
|
||||
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
@ -100,19 +104,19 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--let SEARCH_PATTERN=foobarsecret
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=temp
|
||||
--let SEARCH_PATTERN=tempsecret
|
||||
--echo # t2 ... on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t2_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=dummy
|
||||
--let SEARCH_PATTERN=dummysecret
|
||||
--echo # t3 no on expecting FOUND
|
||||
-- let SEARCH_FILE=$t3_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--let SEARCH_PATTERN=foobarsecret
|
||||
--echo # ibdata1 expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$ib1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
@ -1,5 +1,5 @@
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_xtradb.inc
|
||||
-- source filekeys_plugin.inc
|
||||
|
||||
--eval call mtr.add_suppression("$SEARCH_PATTERN")
|
||||
@ -7,6 +7,7 @@ call mtr.add_suppression("Plugin 'file_key_management' init function returned er
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
|
||||
--let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err
|
||||
--let SEARCH_RANGE= -10000
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
|
@ -1,4 +1,4 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_xtradb.inc
|
||||
-- source filekeys_plugin.inc
|
||||
|
||||
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
|
@ -15,9 +15,12 @@ if (!$INNOCHECKSUM) {
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
|
||||
let MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
# zlib
|
||||
set global innodb_compression_algorithm = 1;
|
||||
|
||||
@ -93,4 +96,6 @@ DROP TABLE t1, t2, t3, t4, t5;
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -2,26 +2,22 @@
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/not_valgrind.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
-- source include/not_crashrep.inc
|
||||
-- source include/not_windows.inc
|
||||
|
||||
#
|
||||
# MDEV-8588: Assertion failure in file ha_innodb.cc line 21140 if at least one encrypted
|
||||
# table exists and encryption service is not available.
|
||||
#
|
||||
|
||||
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/.* cannot be decrypted");
|
||||
call mtr.add_suppression("mysqld: File .* not found");
|
||||
call mtr.add_suppression("Plugin 'file_key_management'");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\.");
|
||||
call mtr.add_suppression("File '.*mysql-test.std_data.keysbad3\\.txt' not found");
|
||||
|
||||
--echo
|
||||
--echo # Start server with keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
CREATE TABLE t1 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=2;
|
||||
INSERT INTO t1 VALUES ('foobar');
|
||||
ALTER TABLE t1 ADD COLUMN c2 INT;
|
||||
@ -41,14 +37,15 @@ SELECT * FROM t1;
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keysbad3.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace /
|
||||
DROP TABLE t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
#
|
||||
@ -56,10 +53,11 @@ SHOW WARNINGS;
|
||||
# line 2856 on querying a table using wrong default encryption key
|
||||
#
|
||||
|
||||
--echo # Start server with keys.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys.txt
|
||||
--echo # Start server with keys3.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_default_encryption_key_id=5;
|
||||
CREATE TABLE t2 (c VARCHAR(8), id int not null primary key, b int, key(b)) ENGINE=InnoDB ENCRYPTED=YES;
|
||||
INSERT INTO t2 VALUES ('foobar',1,2);
|
||||
|
||||
@ -70,58 +68,51 @@ INSERT INTO t2 VALUES ('foobar',1,2);
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t2;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t2 where id = 1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t2 where b = 1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace /
|
||||
--error ER_GET_ERRMSG
|
||||
INSERT INTO t2 VALUES ('tmp',3,3);
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
DELETE FROM t2 where b = 3;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
DELETE FROM t2 where id = 3;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
UPDATE t2 set b = b +1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
OPTIMIZE TABLE t2;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE t2 ADD COLUMN c INT;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
ALTER TABLE t2 ADD COLUMN d INT;
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
ANALYZE TABLE t2;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
TRUNCATE TABLE t2;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
--replace_regex /tablespace [1-9][0-9]*/tablespace / /key_id [1-9][0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--replace_regex /.*tablespace [0-9]*//
|
||||
--error ER_GET_ERRMSG
|
||||
|
||||
DROP TABLE t2;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
SHOW WARNINGS;
|
||||
|
||||
--echo
|
||||
--echo # Restart server with keys.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys.txt
|
||||
--echo # Start server with keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
--replace_regex /.*tablespace [0-9]*//
|
||||
DROP TABLE t2;
|
||||
--replace_regex /tablespace [0-9]*/tablespace /
|
||||
SHOW WARNINGS;
|
||||
|
@ -1,49 +1,98 @@
|
||||
--source include/have_innodb.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/not_valgrind.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
-- source include/not_crashrep.inc
|
||||
-- source filekeys_plugin_exists.inc
|
||||
#
|
||||
# MDEV-8750: Server crashes in page_cur_is_after_last on altering table using a wrong encryption key
|
||||
# MDEV-8769: Server crash at file btr0btr.ic line 122 when defragmenting encrypted table using incorrect keys
|
||||
# MDEV-8768: Server crash at file btr0btr.ic line 122 when checking encrypted table using incorrect keys
|
||||
# MDEV-8727: Server/InnoDB hangs on shutdown after trying to read an encrypted table with a wrong key
|
||||
#
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1(new)?\\.ibd' cannot be decrypted\\.");
|
||||
# Suppression for builds where file_key_management plugin is linked statically
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table \`test\`.\`t1\` is set as discarded.");
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;770A8A65DA156D24EE2A093277530143
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTION_KEY_ID=4;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;770A8A65DA156D24EE2A093277530144
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE t1 engine=InnoDB;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
OPTIMIZE TABLE t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
CHECK TABLE t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||
let MYSQLD_TMPDIR = `SELECT @@tmpdir`;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
EOF
|
||||
UNLOCK TABLES;
|
||||
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
# Discard should pass even with incorrect keys
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys2.txt
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
select * from t1;
|
||||
show warnings;
|
||||
--error ER_GET_ERRMSG
|
||||
alter table t1 discard tablespace;
|
||||
show warnings;
|
||||
--error ER_GET_ERRMSG
|
||||
alter table t1 engine=InnoDB;
|
||||
show warnings;
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
# Rename table should pass even with incorrect keys
|
||||
RENAME TABLE t1 TO t1new;
|
||||
|
||||
# Alter table rename is not allowed with incorrect keys
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE t1new RENAME TO t2new;
|
||||
|
||||
# Drop should pass even with incorrect keys
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
DROP TABLE t1new;
|
||||
|
||||
#
|
||||
# Reset environment
|
||||
#
|
||||
--let $restart_parameters=
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
DROP TABLE t1, t1new;
|
||||
|
@ -9,8 +9,12 @@
|
||||
# MDEV-8772: Assertion failure in file ha_innodb.cc line 20027 when importing page compressed and encrypted tablespace using incorrect keys
|
||||
#
|
||||
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table \`test\`.\`t1\` is set as discarded.");
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
--let $MYSQLD_TMPDIR = `SELECT @@tmpdir`
|
||||
--let $MYSQLD_DATADIR = `SELECT @@datadir`
|
||||
@ -29,7 +33,11 @@ EOF
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(255)) ENGINE=InnoDB PAGE_COMPRESSED=1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
SHOW WARNINGS;
|
||||
@ -37,8 +45,6 @@ SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (1,'foobar'),(2,'barfoo');
|
||||
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||
FLUSH TABLE t1 FOR EXPORT;
|
||||
--echo # List before copying files
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
@ -67,6 +73,11 @@ EOF
|
||||
--source include/wait_until_connected_again.inc
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
SHOW CREATE TABLE t1;
|
||||
@ -95,6 +106,12 @@ EOF
|
||||
DROP TABLE t1;
|
||||
|
||||
# reset system
|
||||
--disable_warnings
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
--enable_warnings
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
|
@ -1,43 +1,38 @@
|
||||
--source include/have_innodb.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/not_valgrind.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
-- source include/not_crashrep.inc
|
||||
-- source filekeys_plugin_exists.inc
|
||||
#
|
||||
# MDEV-8769: Server crash at file btr0btr.ic line 122 when defragmenting encrypted table using incorrect keys
|
||||
# MDEV-8768: Server crash at file btr0btr.ic line 122 when checking encrypted table using incorrect keys
|
||||
#
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t1\\.ibd' cannot be decrypted\\.");
|
||||
# Suppression for builds where file_key_management plugin is linked statically
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;770A8A65DA156D24EE2A093277530143
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTION_KEY_ID=4;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;770A8A65DA156D24EE2A093277530144
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys2.txt
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--replace_regex /tablespace [0-9]*/tablespace #/
|
||||
CHECK TABLE t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
OPTIMIZE TABLE t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
CHECK TABLE t1;
|
||||
--replace_regex /tablespace [0-9]*/tablespace / /key_id [0-9]*/key_id /
|
||||
SHOW WARNINGS;
|
||||
|
||||
--let $restart_parameters=--plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
|
@ -1,42 +0,0 @@
|
||||
--source include/have_innodb.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/not_valgrind.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
-- source include/not_crashrep.inc
|
||||
-- source filekeys_plugin_exists.inc
|
||||
#
|
||||
# MDEV-8769: Server crash at file btr0btr.ic line 122 when defragmenting encrypted table using incorrect keys
|
||||
#
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
# Suppression for builds where file_key_management plugin is linked statically
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;770A8A65DA156D24EE2A093277530143
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-defragment=1 --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, f VARCHAR(8)) ENGINE=InnoDB ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;770A8A65DA156D24EE2A093277530144
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-defragment=1 --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
OPTIMIZE TABLE t1;
|
||||
SHOW WARNINGS;
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --innodb-defragment=1 --innodb-stats-persistent --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
DROP TABLE t1;
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/keys2.txt
|
@ -1,52 +0,0 @@
|
||||
#
|
||||
# MDEV-8727: Server/InnoDB hangs on shutdown after trying to read an encrypted table with a wrong key
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t1 cannot be decrypted");
|
||||
# Suppression for builds where file_key_management plugin is linked statically
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
|
||||
--echo #
|
||||
--echo # Restart the server with key 4 in the key file
|
||||
--echo #
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;18420B5CBA31CCDFFE9716E91EB61374D05914F3ADE23E03
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
CREATE TABLE t1 (i INT, KEY(i)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=4;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
--echo #
|
||||
--echo # Restart the server with a different value for key 4 in the key file
|
||||
--echo #
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
4;22222222222222222222222222222222
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t1;
|
||||
|
||||
--let $restart_parameters= --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--let $restart_parameters=
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/keys2.txt
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
4
mysql-test/suite/encryption/t/innodb-compressed-blob.opt
Normal file
4
mysql-test/suite/encryption/t/innodb-compressed-blob.opt
Normal file
@ -0,0 +1,4 @@
|
||||
--innodb-tablespaces-encryption
|
||||
--innodb-encrypt-tables=on
|
||||
--innodb-encryption-threads=2
|
||||
--max_allowed_packet=64K
|
38
mysql-test/suite/encryption/t/innodb-compressed-blob.test
Normal file
38
mysql-test/suite/encryption/t/innodb-compressed-blob.test
Normal file
@ -0,0 +1,38 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
|
||||
|
||||
--echo # Restart mysqld --file-key-management-filename=keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
set GLOBAL innodb_default_encryption_key_id=4;
|
||||
create table t1(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed;
|
||||
create table t2(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes;
|
||||
create table t3(a int not null primary key, b blob, index(b(10))) engine=innodb row_format=compressed encrypted=no;
|
||||
|
||||
insert into t1 values (1, repeat('secret',6000));
|
||||
insert into t2 values (1, repeat('secret',6000));
|
||||
insert into t3 values (1, repeat('secret',6000));
|
||||
|
||||
--echo # Restart mysqld --file-key-management-filename=keys3.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys3.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
select count(*) from t1 FORCE INDEX (b) where b like 'secret%';
|
||||
--error ER_GET_ERRMSG
|
||||
select count(*) from t2 FORCE INDEX (b) where b like 'secret%';
|
||||
select count(*) from t3 FORCE INDEX (b) where b like 'secret%';
|
||||
|
||||
--echo # Restart mysqld --file-key-management-filename=keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
drop table t1,t2,t3;
|
@ -6,9 +6,17 @@
|
||||
|
||||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded");
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
let $innodb_compression_algo = `SELECT @@innodb_compression_algorithm`;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_compression_algorithm = 1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1(c1 bigint not null primary key auto_increment, b char(200)) engine=innodb encrypted=yes encryption_key_id=4;
|
||||
create table t2(c1 bigint not null primary key auto_increment, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
@ -113,6 +121,11 @@ SELECT COUNT(*) FROM t5;
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||
|
||||
# reset system
|
||||
--disable_warnings
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algo;
|
||||
--enable_query_log
|
||||
--enable_warnings
|
||||
|
||||
|
@ -13,8 +13,17 @@
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
let $innodb_compression_algo = `SELECT @@innodb_compression_algorithm`;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_compression_algorithm = 1;
|
||||
--enable_warnings
|
||||
|
||||
--let $MYSQLD_TMPDIR = `SELECT @@tmpdir`
|
||||
--let $MYSQLD_DATADIR = `SELECT @@datadir`
|
||||
@ -117,6 +126,10 @@ DROP PROCEDURE innodb_insert_proc;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
|
||||
# reset system
|
||||
--disable_warnings
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algo;
|
||||
--enable_query_log
|
||||
--enable_warnings
|
||||
|
@ -5,9 +5,15 @@
|
||||
# MDEV-8817: Failing assertion: new_state->key_version != ENCRYPTION_KEY_VERSION_INVALID
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
let $encrypt_tables = `SELECT @@innodb_encrypt_tables`;
|
||||
let $threads = `SELECT @@innodb_encryption_threads`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_encrypt_tables = ON;
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
|
||||
@ -85,6 +91,8 @@ drop table t1,t2;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
EVAL SET GLOBAL innodb_encrypt_tables = $encrypt_tables;
|
||||
EVAL SET GLOBAL innodb_encryption_threads = $threads;
|
||||
--enable_query_log
|
||||
|
@ -1,22 +1,18 @@
|
||||
-- source include/have_innodb.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/not_valgrind.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
-- source include/not_crashrep.inc
|
||||
-- source filekeys_plugin_exists.inc
|
||||
|
||||
#
|
||||
# MDEV-9559: Server without encryption configs crashes if selecting from an implicitly encrypted table
|
||||
#
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t[15] cannot be decrypted");
|
||||
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\.");
|
||||
|
||||
# Suppression for builds where file_key_management plugin is linked statically
|
||||
call mtr.add_suppression("Couldn't load plugins from 'file_key_management");
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
1;770A8A65DA156D24EE2A093277530142
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--let $restart_parameters=--innodb-encrypt-tables=ON --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
create table t5 (
|
||||
@ -38,15 +34,8 @@ CREATE TABLE `t1` (
|
||||
) ENGINE=InnoDB;
|
||||
|
||||
insert into t1 values (1,2,'maria','db','encryption');
|
||||
|
||||
select * from t1;
|
||||
select * from t5;
|
||||
|
||||
alter table t1 encrypted='yes' `encryption_key_id`=1;
|
||||
|
||||
select * from t1;
|
||||
select * from t5;
|
||||
|
||||
--let $restart_parameters=--innodb-encrypt-tables=OFF
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
@ -55,10 +44,8 @@ select * from t1;
|
||||
--error ER_GET_ERRMSG
|
||||
select * from t5;
|
||||
|
||||
--let $restart_parameters= --innodb-encrypt-tables --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQLTEST_VARDIR/keys1.txt
|
||||
--let $restart_parameters=--innodb-encrypt-tables=ON --plugin-load-add=file_key_management.so --file-key-management --file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
drop table t1;
|
||||
drop table t5;
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/keys1.txt
|
||||
|
84
mysql-test/suite/encryption/t/innodb-force-corrupt.test
Normal file
84
mysql-test/suite/encryption/t/innodb-force-corrupt.test
Normal file
@ -0,0 +1,84 @@
|
||||
#
|
||||
# MDEV-11759: Encryption code in MariaDB 10.1/10.2 causes compatibility problems
|
||||
#
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
# Don't test under embedded
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
|
||||
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
set global innodb_compression_algorithm = 1;
|
||||
|
||||
--echo # Create and populate tables to be corrupted
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT,c char(200)) ENGINE=InnoDB encrypted=yes;
|
||||
CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT,c char(200)) ENGINE=InnoDB row_format=compressed encrypted=yes;
|
||||
CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes encrypted=yes;
|
||||
|
||||
BEGIN;
|
||||
INSERT INTO t1 (b,c) VALUES ('corrupt me','secret');
|
||||
--disable_query_log
|
||||
--let $i = 100
|
||||
while ($i)
|
||||
{
|
||||
INSERT INTO t1 (b,c) VALUES (REPEAT('abcabcabc', 100),'secretsecret');
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
INSERT INTO t1 (b,c) VALUES ('corrupt me','moresecretmoresecret');
|
||||
INSERT INTO t2 select * from t1;
|
||||
INSERT INTO t3 select * from t1;
|
||||
COMMIT;
|
||||
|
||||
let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
|
||||
let MYSQLD_DATADIR=`select @@datadir`;
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--echo # Backup tables before corrupting
|
||||
--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t1.ibd.backup
|
||||
--copy_file $MYSQLD_DATADIR/test/t2.ibd $MYSQLD_DATADIR/test/t2.ibd.backup
|
||||
--copy_file $MYSQLD_DATADIR/test/t3.ibd $MYSQLD_DATADIR/test/t3.ibd.backup
|
||||
|
||||
--echo # Corrupt tables
|
||||
|
||||
perl;
|
||||
open(FILE, "+<", "$ENV{MYSQLD_DATADIR}/test/t1.ibd") or die "open";
|
||||
binmode FILE;
|
||||
seek(FILE, $ENV{'INNODB_PAGE_SIZE'} * 3 + 26, SEEK_SET) or die "seek";
|
||||
print FILE pack("H*", "c00lcafedeadb017");
|
||||
close FILE or die "close";
|
||||
open(FILE, "+<", "$ENV{MYSQLD_DATADIR}/test/t2.ibd") or die "open";
|
||||
binmode FILE;
|
||||
seek(FILE, $ENV{'INNODB_PAGE_SIZE'} * 3 + 26, SEEK_SET) or die "seek";
|
||||
print FILE pack("H*", "c00lcafedeadb017");
|
||||
close FILE or die "close";
|
||||
open(FILE, "+<", "$ENV{MYSQLD_DATADIR}/test/t3.ibd") or die "open";
|
||||
binmode FILE;
|
||||
seek(FILE, $ENV{'INNODB_PAGE_SIZE'} * 3 + 26, SEEK_SET) or die "seek";
|
||||
print FILE pack("H*", "c00lcafedeadb017");
|
||||
close FILE or die "close";
|
||||
EOF
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t1;
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t2;
|
||||
--error ER_GET_ERRMSG
|
||||
SELECT * FROM t3;
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
|
||||
--echo # Restore the original tables
|
||||
--move_file $MYSQLD_DATADIR/test/t1.ibd.backup $MYSQLD_DATADIR/test/t1.ibd
|
||||
--move_file $MYSQLD_DATADIR/test/t2.ibd.backup $MYSQLD_DATADIR/test/t2.ibd
|
||||
--move_file $MYSQLD_DATADIR/test/t3.ibd.backup $MYSQLD_DATADIR/test/t3.ibd
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
@ -0,0 +1,6 @@
|
||||
--innodb-encrypt-log=ON
|
||||
--plugin-load-add=$FILE_KEY_MANAGEMENT_SO
|
||||
--loose-file-key-management
|
||||
--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt
|
||||
--file-key-management-encryption-algorithm=aes_cbc
|
||||
--innodb-buffer-pool-size=128M
|
41
mysql-test/suite/encryption/t/innodb-log-encrypt-crash.test
Normal file
41
mysql-test/suite/encryption/t/innodb-log-encrypt-crash.test
Normal file
@ -0,0 +1,41 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/not_embedded.inc
|
||||
# test takes very long time on debug build
|
||||
-- source include/not_debug.inc
|
||||
-- source include/big_test.inc
|
||||
-- source filekeys_plugin.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: New log files created, LSN=.*");
|
||||
call mtr.add_suppression("InnoDB: Creating foreign key constraint system tables.");
|
||||
call mtr.add_suppression("InnoDB: Error: Table .*");
|
||||
|
||||
#
|
||||
# MDEV-9422: Checksum errors on restart when killing busy instance that uses encrypted XtraDB tables
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
pk bigint auto_increment,
|
||||
col_int int,
|
||||
col_int_key int,
|
||||
col_char char(12),
|
||||
col_char_key char(12),
|
||||
primary key (pk),
|
||||
key (`col_int_key` ),
|
||||
key (`col_char_key` )
|
||||
) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
|
||||
INSERT INTO t1 VALUES (NULL,1,1,'foo','foo'),(NULL,2,2,'bar','bar'),(NULL,3,3,'baz','baz'),(NULL,4,4,'qux','qux');
|
||||
INSERT INTO t2
|
||||
SELECT NULL, a1.col_int, a1.col_int_key, a1.col_char, a1.col_char_key
|
||||
FROM t1 a1, t1 a2, t1 a3, t1 a4, t1 a5, t1 a6, t1 a7, t1 a8, t1 a9, t1 a10;
|
||||
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server 0
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
DROP TABLE t1, t2;
|
6
mysql-test/suite/encryption/t/innodb-log-encrypt.opt
Normal file
6
mysql-test/suite/encryption/t/innodb-log-encrypt.opt
Normal file
@ -0,0 +1,6 @@
|
||||
--innodb-encrypt-log=ON
|
||||
--innodb-encrypt-tables=FORCE
|
||||
--plugin-load-add=$FILE_KEY_MANAGEMENT_SO
|
||||
--loose-file-key-management
|
||||
--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt
|
||||
--file-key-management-encryption-algorithm=aes_cbc
|
97
mysql-test/suite/encryption/t/innodb-log-encrypt.test
Normal file
97
mysql-test/suite/encryption/t/innodb-log-encrypt.test
Normal file
@ -0,0 +1,97 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/not_embedded.inc
|
||||
-- source filekeys_plugin.inc
|
||||
|
||||
#
|
||||
# MDEV-9011: Redo log encryption does not work
|
||||
#
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
create table t1(c1 bigint not null, b char(200), c varchar(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||
show warnings;
|
||||
|
||||
delimiter //;
|
||||
create procedure innodb_insert_proc (repeat_count int)
|
||||
begin
|
||||
declare current_num int;
|
||||
set current_num = 0;
|
||||
while current_num < repeat_count do
|
||||
insert into t1 values(current_num, substring(MD5(RAND()), -64), REPEAT('privatejanprivate',10));
|
||||
set current_num = current_num + 1;
|
||||
end while;
|
||||
end//
|
||||
delimiter ;//
|
||||
commit;
|
||||
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
commit;
|
||||
|
||||
update t1 set c1 = c1 +1;
|
||||
select count(*) from t1;
|
||||
|
||||
--let $MYSQLD_DATADIR=`select @@datadir`
|
||||
--let ib1_IBD = $MYSQLD_DATADIR/ibdata1
|
||||
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
|
||||
--let log0 = $MYSQLD_DATADIR/ib_logfile0
|
||||
--let log1 = $MYSQLD_DATADIR/ib_logfile1
|
||||
--let SEARCH_RANGE = 10000000
|
||||
--let SEARCH_PATTERN=privatejanprivate
|
||||
|
||||
-- source include/kill_mysqld.inc
|
||||
|
||||
--echo # ibdata1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$ib1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # log0 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$log0
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # log1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$log1
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
--echo # Restart mysqld --innodb_encrypt_log=0
|
||||
-- let $restart_parameters=--innodb_encrypt_log=0
|
||||
-- source include/start_mysqld.inc
|
||||
|
||||
insert into t1 values(5000, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5001, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5002, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5003, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
insert into t1 values(5004, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
|
||||
|
||||
--let SEARCH_PATTERN=privatejanprivate
|
||||
--echo # ibdata1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$ib1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # log0 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$log0
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # log1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$log1
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
--let SEARCH_PATTERN=publicmessage
|
||||
--echo # ibdata1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$ib1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$t1_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # log0 no on expecting FOUND/NOTFOUND depending where insert goes
|
||||
-- let SEARCH_FILE=$log0
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--echo # log1 no on expecting FOUND/NOTFOUND depending where insert goes
|
||||
-- let SEARCH_FILE=$log1
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
drop procedure innodb_insert_proc;
|
||||
drop table t1;
|
@ -6,9 +6,9 @@
|
||||
#
|
||||
# MDEV-11004: Unable to start (Segfault or os error 2) when encryption key missing
|
||||
#
|
||||
call mtr.add_suppression("InnoDB: The page .* in file test/t. cannot be decrypted");
|
||||
|
||||
--echo
|
||||
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
|
||||
|
||||
--echo # Start server with keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
@ -5,12 +5,20 @@
|
||||
--source include/have_innodb_32k.inc
|
||||
--source include/have_file_key_management_plugin.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Warning: innodb_page_size has been changed from default value *");
|
||||
|
||||
--disable_query_log
|
||||
# These values can change during the test
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact encrypted=yes encryption_key_id=1;
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic encrypted=yes encryption_key_id=3;
|
||||
show warnings;
|
||||
create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic encrypted=yes encryption_key_id=33;
|
||||
create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant encrypted=yes encryption_key_id=4;
|
||||
|
||||
show create table innodb_compact;
|
||||
@ -80,3 +88,9 @@ drop table innodb_normal;
|
||||
drop table innodb_compact;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -1,6 +1,14 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
show warnings;
|
||||
create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact encrypted=yes encryption_key_id=1;
|
||||
@ -77,6 +85,9 @@ SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
@ -113,6 +124,9 @@ show create table innodb_redundant;
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
show create table innodb_compact;
|
||||
show create table innodb_compressed;
|
||||
show create table innodb_dynamic;
|
||||
@ -147,3 +161,9 @@ drop table innodb_compressed;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
drop table innodb_defkey;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -1,15 +1,19 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
-- source include/big_test.inc
|
||||
# Test heavy not tested on valgrind
|
||||
-- source include/not_valgrind.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
|
||||
let $encryption = `SELECT @@innodb_encrypt_tables`;
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
# zlib
|
||||
set global innodb_compression_algorithm = 1;
|
||||
--enable_warnings
|
||||
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb page_compressed=1;
|
||||
show warnings;
|
||||
@ -35,50 +39,24 @@ end//
|
||||
delimiter ;//
|
||||
commit;
|
||||
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(5000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
insert into innodb_compact select * from innodb_normal;
|
||||
insert into innodb_dynamic select * from innodb_normal;
|
||||
commit;
|
||||
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
select count(*) from innodb_normal;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_compressed';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decompressed';
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_PAGE_COMPRESSED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--let $restart_parameters=--innodb-encrypt-tables=OFF
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
# zlib
|
||||
set global innodb_compression_algorithm = 1;
|
||||
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
select count(*) from innodb_normal;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_compressed';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decompressed';
|
||||
--enable_warnings
|
||||
|
||||
alter table innodb_normal engine=innodb page_compressed=DEFAULT;
|
||||
show create table innodb_normal;
|
||||
@ -87,27 +65,8 @@ show create table innodb_compact;
|
||||
alter table innodb_dynamic engine=innodb encrypted=DEFAULT encryption_key_id=DEFAULT page_compressed=DEFAULT;
|
||||
show create table innodb_dynamic;
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
show create table innodb_normal;
|
||||
show create table innodb_compact;
|
||||
show create table innodb_dynamic;
|
||||
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
select count(*) from innodb_normal;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_compressed';
|
||||
SELECT variable_value = 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decompressed';
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_PAGE_DECOMPRESSED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
drop procedure innodb_insert_proc;
|
||||
drop table innodb_normal;
|
||||
@ -117,5 +76,6 @@ drop table innodb_dynamic;
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
|
||||
EVAL SET GLOBAL innodb_encrypt_tables = $encryption;
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -2,9 +2,14 @@
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
|
||||
call mtr.add_suppression("KeyID 0 not found or with error. Check the key and the log*");
|
||||
call mtr.add_suppression("Disabling redo log encryp*");
|
||||
call mtr.add_suppression("InnoDB: Redo log crypto: Can't initialize to key version*");
|
||||
#call mtr.add_suppression("KeyID 0 not found or with error. Check the key and the log.*");
|
||||
#call mtr.add_suppression("Disabling redo log encryp.*");
|
||||
#call mtr.add_suppression("InnoDB: Redo log crypto: Can't initialize to key version.*");
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
show warnings;
|
||||
@ -35,61 +40,41 @@ end//
|
||||
delimiter ;//
|
||||
commit;
|
||||
|
||||
set autocommit=0;
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
|
||||
insert into innodb_compact select * from innodb_normal;
|
||||
insert into innodb_compressed select * from innodb_normal;
|
||||
insert into innodb_dynamic select * from innodb_normal;
|
||||
insert into innodb_redundant select * from innodb_normal;
|
||||
commit;
|
||||
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
update innodb_redundant set c1 = c1 + 1;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
select count(*) from innodb_compressed where c1 < 1500000;
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
select count(*) from innodb_redundant where c1 < 1500000;
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_compressed t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_redundant t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_ENCRYPTED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# Note there that these variables are updated only when real I/O is done, thus they are not reliable
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
update innodb_redundant set c1 = c1 + 1;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
select count(*) from innodb_compressed where c1 < 1500000;
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
select count(*) from innodb_redundant where c1 < 1500000;
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_compressed t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_redundant t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_ENCRYPTED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
|
||||
SET GLOBAL innodb_encrypt_tables=OFF;
|
||||
alter table innodb_compact engine=innodb encrypted=DEFAULT encryption_key_id=DEFAULT;
|
||||
show create table innodb_compact;
|
||||
alter table innodb_compressed engine=innodb encrypted=DEFAULT encryption_key_id=DEFAULT;
|
||||
@ -99,30 +84,8 @@ show create table innodb_dynamic;
|
||||
alter table innodb_redundant engine=innodb encrypted=DEFAULT encryption_key_id=DEFAULT;
|
||||
show create table innodb_redundant;
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
show create table innodb_compact;
|
||||
show create table innodb_compressed;
|
||||
show create table innodb_dynamic;
|
||||
show create table innodb_redundant;
|
||||
|
||||
update innodb_normal set c1 = c1 +1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_compressed set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
update innodb_redundant set c1 = c1 + 1;
|
||||
select count(*) from innodb_compact where c1 < 1500000;
|
||||
select count(*) from innodb_compressed where c1 < 1500000;
|
||||
select count(*) from innodb_dynamic where c1 < 1500000;
|
||||
select count(*) from innodb_redundant where c1 < 1500000;
|
||||
select count(*) from innodb_compact t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_dynamic t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_compressed t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
select count(*) from innodb_redundant t1, innodb_normal t2 where
|
||||
t1.c1 = t2.c1 and t1.b = t2.b;
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_DECRYPTED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
@ -133,10 +96,12 @@ drop table innodb_compact;
|
||||
drop table innodb_compressed;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
|
||||
#
|
||||
# MDEV-8143: InnoDB: Database page corruption on disk or a failed file read
|
||||
#
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY) ENGINE=InnoDB ENCRYPTION_KEY_ID=2 ENCRYPTED=YES;
|
||||
INSERT INTO t1 VALUES (1),(2);
|
||||
|
||||
|
5
mysql-test/suite/encryption/t/innodb-redo-badkey.opt
Normal file
5
mysql-test/suite/encryption/t/innodb-redo-badkey.opt
Normal file
@ -0,0 +1,5 @@
|
||||
--innodb-change-buffering=all
|
||||
--innodb-encrypt-tables=on
|
||||
--innodb-tablespaces-encryption
|
||||
--innodb-encryption-threads=2
|
||||
--innodb-default-encryption-key-id=4
|
100
mysql-test/suite/encryption/t/innodb-redo-badkey.test
Normal file
100
mysql-test/suite/encryption/t/innodb-redo-badkey.test
Normal file
@ -0,0 +1,100 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Block in space_id .* in file .* encrypted.");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' .*");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
|
||||
call mtr.add_suppression("InnoDB: Read operation failed for tablespace .*");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed.*");
|
||||
call mtr.add_suppression("InnoDB: Recovery read page .*");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t4 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE .*");
|
||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted .*");
|
||||
call mtr.add_suppression("InnoDB: ############### CORRUPT LOG RECORD FOUND ##################");
|
||||
|
||||
--echo # Restart mysqld --file-key-management-filename=keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
|
||||
--let $wait_timeout= 600
|
||||
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
create table t1(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4;
|
||||
create table t2(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed;
|
||||
create table t3(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=4;
|
||||
create table t4(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb;
|
||||
|
||||
begin;
|
||||
--disable_query_log
|
||||
--let $i = 20
|
||||
begin;
|
||||
while ($i)
|
||||
{
|
||||
insert into t1(c,b) values (repeat('secret1',20), repeat('secret2',6000));
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
insert into t2 select * from t1;
|
||||
insert into t3 select * from t1;
|
||||
insert into t4 select * from t1;
|
||||
commit;
|
||||
|
||||
--source ../../suite/innodb/include/no_checkpoint_start.inc
|
||||
|
||||
#
|
||||
# We test redo log page read at recv_read_page using
|
||||
# incorrect keys from std_data/keys.txt. If checkpoint
|
||||
# happens we will skip this test. If no checkpoint
|
||||
# happens, InnoDB refuses to start as used
|
||||
# encryption key is incorrect.
|
||||
#
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
begin;
|
||||
update t1 set c = repeat('secret3', 20);
|
||||
update t2 set c = repeat('secret4', 20);
|
||||
update t3 set c = repeat('secret4', 20);
|
||||
update t4 set c = repeat('secret4', 20);
|
||||
insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
|
||||
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
|
||||
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
|
||||
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
|
||||
COMMIT;
|
||||
let $cleanup= drop table t1,t2,t3,t4;
|
||||
--let CLEANUP_IF_CHECKPOINT= $cleanup;
|
||||
--source ../../suite/innodb/include/no_checkpoint_end.inc
|
||||
|
||||
--echo # restart
|
||||
--error 1
|
||||
-- source include/start_mysqld.inc
|
||||
--source include/kill_mysqld.inc
|
||||
|
||||
#
|
||||
# Now test with innodb-force-recovery=1 i.e. ignore corrupt pages
|
||||
#
|
||||
|
||||
--echo # Restart mysqld --innodb-force-recovery=1
|
||||
-- let $restart_parameters=--innodb-force-recovery=1
|
||||
--error 1
|
||||
-- source include/start_mysqld.inc
|
||||
|
||||
--source include/kill_mysqld.inc
|
||||
|
||||
--echo # Restart mysqld --file-key-management-filename=keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/start_mysqld.inc
|
||||
|
||||
drop table t1, t2,t3,t4;
|
3
mysql-test/suite/encryption/t/innodb-redo-nokeys.opt
Normal file
3
mysql-test/suite/encryption/t/innodb-redo-nokeys.opt
Normal file
@ -0,0 +1,3 @@
|
||||
--innodb-change-buffering=none
|
||||
--innodb-encrypt-tables=on
|
||||
--innodb-default-encryption-key-id=20
|
80
mysql-test/suite/encryption/t/innodb-redo-nokeys.test
Normal file
80
mysql-test/suite/encryption/t/innodb-redo-nokeys.test
Normal file
@ -0,0 +1,80 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Block in space_id .*");
|
||||
call mtr.add_suppression("mysqld: File .*");
|
||||
call mtr.add_suppression("Plugin 'file_key_management' .*");
|
||||
call mtr.add_suppression("InnoDB: cannot enable encryption, encryption plugin is not available");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t2 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t3 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t4 cannot be decrypted.");
|
||||
call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1 cannot be decrypted.");
|
||||
|
||||
--echo # Restart mysqld --file-key-management-filename=keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
create table t1(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=20;
|
||||
create table t2(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb row_format=compressed;
|
||||
create table t3(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=20;
|
||||
create table t4(a int not null primary key auto_increment, c char(200), b blob, index(b(10))) engine=innodb;
|
||||
|
||||
begin;
|
||||
--disable_query_log
|
||||
--let $i = 20
|
||||
begin;
|
||||
while ($i)
|
||||
{
|
||||
insert into t1(c,b) values (repeat('secret1',20), repeat('secret2',6000));
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
insert into t2 select * from t1;
|
||||
insert into t3 select * from t1;
|
||||
insert into t4 select * from t1;
|
||||
commit;
|
||||
|
||||
--source ../../suite/innodb/include/no_checkpoint_start.inc
|
||||
#
|
||||
# We test redo log page read at recv_read_page using
|
||||
# keys that are not in std_data/keys.txt. If checkpoint
|
||||
# happens we will skip this test. If no checkpoint
|
||||
# happens, InnoDB refuses to start as used
|
||||
# encryption key is not found.
|
||||
#
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
begin;
|
||||
update t1 set c = repeat('secret3', 20);
|
||||
update t2 set c = repeat('secret4', 20);
|
||||
update t3 set c = repeat('secret4', 20);
|
||||
update t4 set c = repeat('secret4', 20);
|
||||
insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
|
||||
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
|
||||
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
|
||||
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
|
||||
COMMIT;
|
||||
let $cleanup= drop table t1,t2,t3,t4;
|
||||
--let CLEANUP_IF_CHECKPOINT= $cleanup;
|
||||
--source ../../suite/innodb/include/no_checkpoint_end.inc
|
||||
|
||||
--echo # restart
|
||||
-- source include/start_mysqld.inc
|
||||
#
|
||||
# In above server does start but InnoDB refuses to start
|
||||
# thus we need to restart server with correct key file
|
||||
#
|
||||
--echo # Restart mysqld --file-key-management-filename=keys2.txt
|
||||
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
drop table t1, t2,t3,t4;
|
@ -1,15 +1,20 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_example_key_management_plugin.inc
|
||||
|
||||
# embedded does not support restart
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
let $innodb_encrypt_tables_orig = `SELECT @@innodb_encrypt_tables`;
|
||||
let $innodb_encryption_threads_orig = `SELECT @@innodb_encryption_threads`;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
SET GLOBAL innodb_encrypt_tables = on;
|
||||
--enable_warnings
|
||||
|
||||
# zlib
|
||||
set global innodb_compression_algorithm = 1;
|
||||
@ -56,11 +61,8 @@ end//
|
||||
delimiter ;//
|
||||
commit;
|
||||
|
||||
set autocommit=0;
|
||||
call innodb_insert_proc(5000);
|
||||
commit;
|
||||
set autocommit=1;
|
||||
select count(*) from innodb_normal;
|
||||
begin;
|
||||
call innodb_insert_proc(2000);
|
||||
insert into innodb_page_compressed1 select * from innodb_normal;
|
||||
insert into innodb_page_compressed2 select * from innodb_normal;
|
||||
insert into innodb_page_compressed3 select * from innodb_normal;
|
||||
@ -71,23 +73,6 @@ insert into innodb_page_compressed7 select * from innodb_normal;
|
||||
insert into innodb_page_compressed8 select * from innodb_normal;
|
||||
insert into innodb_page_compressed9 select * from innodb_normal;
|
||||
commit;
|
||||
select count(*) from innodb_page_compressed1 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed2 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed3 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed4 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed5 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed6 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed7 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed8 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed9 where c1 < 500000;
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
select count(*) from innodb_page_compressed1 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed2 where c1 < 500000;
|
||||
@ -98,33 +83,18 @@ select count(*) from innodb_page_compressed6 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed7 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed8 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed9 where c1 < 500000;
|
||||
update innodb_page_compressed1 set c1 = c1 + 1;
|
||||
update innodb_page_compressed2 set c1 = c1 + 1;
|
||||
update innodb_page_compressed3 set c1 = c1 + 1;
|
||||
update innodb_page_compressed4 set c1 = c1 + 1;
|
||||
update innodb_page_compressed5 set c1 = c1 + 1;
|
||||
update innodb_page_compressed6 set c1 = c1 + 1;
|
||||
update innodb_page_compressed7 set c1 = c1 + 1;
|
||||
update innodb_page_compressed8 set c1 = c1 + 1;
|
||||
update innodb_page_compressed9 set c1 = c1 + 1;
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_PAGE_COMPRESSED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
SET GLOBAL innodb_encrypt_tables = off;
|
||||
|
||||
select count(*) from innodb_page_compressed1 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed2 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed3 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed4 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed5 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed6 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed7 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed8 where c1 < 500000;
|
||||
select count(*) from innodb_page_compressed9 where c1 < 500000;
|
||||
update innodb_page_compressed1 set c1 = c1 + 1;
|
||||
update innodb_page_compressed2 set c1 = c1 + 1;
|
||||
update innodb_page_compressed3 set c1 = c1 + 1;
|
||||
@ -135,9 +105,12 @@ update innodb_page_compressed7 set c1 = c1 + 1;
|
||||
update innodb_page_compressed8 set c1 = c1 + 1;
|
||||
update innodb_page_compressed9 set c1 = c1 + 1;
|
||||
|
||||
let $wait_condition= select variable_value > 0 from information_schema.global_status where variable_name = 'INNODB_NUM_PAGES_DECRYPTED';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
SELECT variable_value > 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_compressed';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_page_decompressed';
|
||||
|
||||
drop procedure innodb_insert_proc;
|
||||
@ -155,6 +128,9 @@ drop table innodb_page_compressed9;
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
EVAL SET GLOBAL innodb_encrypt_tables = $innodb_encrypt_tables_orig;
|
||||
EVAL SET GLOBAL innodb_encryption_threads = $innodb_encryption_threads_orig;
|
||||
--enable_query_log
|
||||
|
||||
|
@ -3,8 +3,7 @@
|
||||
-- source include/not_valgrind.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
|
||||
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Table .* tablespace is set as discarded.");
|
||||
|
||||
let $MYSQLD_TMPDIR = `SELECT @@tmpdir`;
|
||||
let $MYSQLD_DATADIR = `SELECT @@datadir`;
|
||||
@ -15,6 +14,16 @@ let $MYSQLD_DATADIR = `SELECT @@datadir`;
|
||||
--let t2_IBD = $MYSQLD_DATADIR/test/t2.ibd
|
||||
--let t3_IBD = $MYSQLD_DATADIR/test/t3.ibd
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
||||
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
|
||||
CREATE TABLE t3 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB row_format=compressed encrypted=yes;
|
||||
@ -144,3 +153,11 @@ SELECT COUNT(1) FROM t3;
|
||||
|
||||
DROP PROCEDURE innodb_insert_proc;
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
# reset system
|
||||
--disable_warnings
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
--enable_warnings
|
||||
|
@ -5,9 +5,15 @@
|
||||
|
||||
call mtr.add_suppression("trying to do an operation on a dropped tablespace .*");
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
let $encrypt_tables = `SELECT @@innodb_encrypt_tables`;
|
||||
let $threads = `SELECT @@innodb_encryption_threads`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
SET GLOBAL innodb_encrypt_tables = OFF;
|
||||
SET GLOBAL innodb_encryption_threads = 4;
|
||||
|
||||
@ -127,6 +133,8 @@ SELECT COUNT(1) FROM t5;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
EVAL SET GLOBAL innodb_encrypt_tables = $encrypt_tables;
|
||||
EVAL SET GLOBAL innodb_encryption_threads = $threads;
|
||||
--enable_query_log
|
||||
@ -134,3 +142,4 @@ EVAL SET GLOBAL innodb_encryption_threads = $threads;
|
||||
drop table t1,t2,t3,t4, t5;
|
||||
|
||||
set GLOBAL innodb_default_encryption_key_id=1;
|
||||
|
||||
|
@ -1,6 +1,14 @@
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
CREATE TABLE t1 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=1;
|
||||
CREATE TABLE t2 (c VARCHAR(8)) ENGINE=InnoDB ENCRYPTED=YES ENCRYPTION_KEY_ID=2;
|
||||
INSERT INTO t1 VALUES ('foobar');
|
||||
@ -15,3 +23,9 @@ FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION
|
||||
WHERE NAME LIKE '%t1' OR NAME LIKE '%t2';
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -2,6 +2,14 @@
|
||||
-- source include/have_file_key_management_plugin.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
create table innodb_compressed1(c1 bigint not null primary key, d int, a varchar(20), b char(200)) engine=innodb row_format=compressed encrypted=yes;
|
||||
create table innodb_compressed2(c1 bigint not null primary key, d int, a varchar(20), b char(200)) engine=innodb row_format=compressed key_block_size=1 encrypted=yes;
|
||||
create table innodb_compressed3(c1 bigint not null primary key, d int, a varchar(20), b char(200)) engine=innodb row_format=compressed key_block_size=2 encrypted=yes;
|
||||
@ -44,6 +52,9 @@ insert into innodb_compressed4 select * from innodb_compressed1;
|
||||
-- let SEARCH_FILE=$t4_IBD
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
select * from innodb_compressed1 where d = 20;
|
||||
select * from innodb_compressed1 where d = 30;
|
||||
select * from innodb_compressed2 where d = 20;
|
||||
@ -106,3 +117,9 @@ drop table innodb_compressed1;
|
||||
drop table innodb_compressed2;
|
||||
drop table innodb_compressed3;
|
||||
drop table innodb_compressed4;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -2,6 +2,14 @@
|
||||
-- source include/have_example_key_management_plugin.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact;
|
||||
create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic;
|
||||
@ -65,6 +73,9 @@ SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
update innodb_normal set c1 = c1 + 1;
|
||||
update innodb_compact set c1 = c1 + 1;
|
||||
update innodb_dynamic set c1 = c1 + 1;
|
||||
@ -95,3 +106,9 @@ drop table innodb_compact;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_compressed;
|
||||
drop table innodb_redundant;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -5,14 +5,25 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_file_key_management_plugin.inc
|
||||
|
||||
let $datadir=`select @@datadir`;
|
||||
--source include/shutdown_mysqld.inc
|
||||
call mtr.add_suppression("InnoDB: New log files created, LSN");
|
||||
call mtr.add_suppression("InnoDB: Creating foreign key constraint system tables");
|
||||
|
||||
let datadir=`select @@datadir`;
|
||||
|
||||
--exec echo wait > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
shutdown;
|
||||
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--remove_file $datadir/ib_logfile0
|
||||
--remove_file $datadir/ib_logfile1
|
||||
--remove_file $datadir/ibdata1
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
--exec echo restart > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
create table t1 (a int);
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
let $innodb_encryption_threads_orig = `SELECT @@global.innodb_encryption_threads`;
|
||||
--enable_query_log
|
||||
|
||||
@ -13,6 +14,8 @@ let $innodb_encryption_threads_orig = `SELECT @@global.innodb_encryption_threads
|
||||
SET GLOBAL innodb_fast_shutdown=0;
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
SHOW VARIABLES LIKE 'innodb_encrypt%';
|
||||
|
||||
#
|
||||
@ -270,5 +273,6 @@ drop database innodb_encrypted_2;
|
||||
drop database innodb_encrypted_3;
|
||||
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_encryption_threads = $innodb_encryption_threads_orig;
|
||||
--enable_query_log
|
||||
|
@ -3,6 +3,3 @@
|
||||
--innodb-encryption-rotate-key-age=15
|
||||
--innodb-encryption-threads=4
|
||||
--innodb-tablespaces-encryption
|
||||
--innodb-max-dirty-pages-pct=0.001
|
||||
|
||||
|
||||
|
@ -3,6 +3,11 @@
|
||||
# test uses restart
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
||||
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
|
||||
CREATE TABLE t3 (id INT, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
|
||||
@ -17,8 +22,8 @@ begin
|
||||
declare current_num int;
|
||||
set current_num = 0;
|
||||
while current_num < repeat_count do
|
||||
insert into t1 values (current_num,repeat('foobar',42));
|
||||
insert into t2 values (current_num,repeat('temp', 42));
|
||||
insert into t1 values (current_num,repeat('foobar',12));
|
||||
insert into t2 values (current_num,repeat('tempsecret', 12));
|
||||
insert into t3 values (current_num,repeat('barfoo',42));
|
||||
insert into t4 values (current_num,repeat('repeat',42));
|
||||
insert into t5 values (current_num,substring('A BC DEF GHIJ KLM NOPQRS TUV WXYZ 012 3456789', rand()*36+1, 100), repeat('author new',22));
|
||||
@ -42,14 +47,13 @@ set autocommit=1;
|
||||
--let $MYSQLD_DATADIR=`select @@datadir`
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--let SEARCH_RANGE = 10000000
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$MYSQLD_DATADIR/test/t1.ibd
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=temp
|
||||
--let SEARCH_PATTERN=tempsecret
|
||||
--echo # t2 ... on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$MYSQLD_DATADIR/test/t2.ibd
|
||||
-- source include/search_pattern_in_file.inc
|
||||
@ -103,13 +107,12 @@ SHOW CREATE TABLE t6;
|
||||
SHOW CREATE TABLE t7;
|
||||
|
||||
--source include/shutdown_mysqld.inc
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--let SEARCH_PATTERN=foobar
|
||||
--echo # t1 yes on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$MYSQLD_DATADIR/test/t1.ibd
|
||||
-- source include/search_pattern_in_file.inc
|
||||
--let SEARCH_PATTERN=temp
|
||||
--let SEARCH_PATTERN=tempsecret
|
||||
--echo # t2 ... on expecting NOT FOUND
|
||||
-- let SEARCH_FILE=$MYSQLD_DATADIR/test/t2.ibd
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
@ -7,6 +7,14 @@
|
||||
-- let $restart_parameters=--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
|
||||
-- source include/restart_mysqld.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
|
||||
show warnings;
|
||||
create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact encrypted=yes encryption_key_id=2;
|
||||
@ -57,6 +65,9 @@ select * from innodb_redundant;
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_encrypted';
|
||||
SELECT variable_value >= 0 FROM information_schema.global_status WHERE variable_name = 'innodb_num_pages_decrypted';
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
alter table innodb_compact engine=innodb encryption_key_id = 2;
|
||||
alter table innodb_compressed engine=innodb encryption_key_id = 3;
|
||||
alter table innodb_dynamic engine=innodb encryption_key_id = 4;
|
||||
@ -77,3 +88,9 @@ drop table innodb_compact;
|
||||
drop table innodb_compressed;
|
||||
drop table innodb_dynamic;
|
||||
drop table innodb_redundant;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
||||
|
@ -2,6 +2,8 @@
|
||||
--innodb-background-scrub-data-uncompressed=OFF
|
||||
--innodb-encrypt-tables=OFF
|
||||
--innodb-encryption-threads=0
|
||||
--innodb-file-format=Barracuda
|
||||
--innodb-file-per-table=1
|
||||
--innodb-immediate-scrub-data-uncompressed=ON
|
||||
--loose-innodb-debug-force-scrubbing=ON
|
||||
--innodb-tablespaces-scrubbing
|
||||
|
@ -7,7 +7,7 @@ let INNODB_PAGE_SIZE= `select @@innodb_page_size`;
|
||||
|
||||
create table snapshot_status engine = myisam
|
||||
select * from information_schema.global_status
|
||||
where variable_name like 'innodb_scrub_background%';
|
||||
where variable_name like 'innodb_scrub%';
|
||||
|
||||
let $rowcount=500;
|
||||
let $maxformatno= 4;
|
||||
|
@ -1,3 +1,5 @@
|
||||
--innodb-file-per-table=1
|
||||
--innodb-file-format=Barracuda
|
||||
--innodb-immediate-scrub-data-uncompressed=OFF
|
||||
--innodb-background-scrub-data-uncompressed=ON
|
||||
--innodb-background-scrub-data-compressed=ON
|
||||
|
@ -7,7 +7,9 @@ source include/have_sequence.inc;
|
||||
# Row binlog format to fill binlog cache faster
|
||||
source include/have_binlog_format_row.inc;
|
||||
|
||||
source include/have_innodb.inc;
|
||||
# Nothing XtraDB specific in this test, it just needs *some* transactional
|
||||
# engine. But there's no need to run it twice for InnoDB and XtraDB.
|
||||
source include/have_xtradb.inc;
|
||||
|
||||
#
|
||||
# MyISAM messing around with IO_CACHE::file
|
||||
|
@ -11,4 +11,3 @@
|
||||
##############################################################################
|
||||
|
||||
innodb_defragment_fill_factor : MDEV-10771
|
||||
innodb_bug14147491 : MDEV-12253 ut_ad(buf_pool->n_pend_reads > 0)
|
||||
|
@ -1,17 +1,23 @@
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=InnoDB;
|
||||
# Create and populate the table to be corrupted
|
||||
set global innodb_file_per_table=ON;
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
# Backup the t1.ibd before corrupting
|
||||
# Corrupt the table
|
||||
Munged a string.
|
||||
Munged a string.
|
||||
SET DEBUG_DBUG = '+d,innodb_page_corruption_retries';
|
||||
# Write file to make mysql-test-run.pl expect the "crash", but don't
|
||||
# start it until it's told to
|
||||
# The below SELECT query will crash the server because some pages
|
||||
# on the disk are corrupted
|
||||
# The below SELECT query will return that table is not
|
||||
# in engine because table is corrupted
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# Restore the original t1.ibd
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist in engine
|
||||
INSERT INTO t1(b) VALUES('abcdef');
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist in engine
|
||||
UPDATE t1 set b = 'deadbeef' where a = 1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist in engine
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check Error Table 'test.t1' doesn't exist in engine
|
||||
test.t1 check status Operation failed
|
||||
# Cleanup
|
||||
DROP TABLE t1;
|
||||
|
@ -1,28 +1,23 @@
|
||||
#
|
||||
# Test opening a corrupted table.
|
||||
#
|
||||
# Valgrind can hang or return spurious messages on DBUG_SUICIDE
|
||||
source include/not_valgrind.inc;
|
||||
# Avoid CrashReporter popup on Mac
|
||||
source include/not_crashrep.inc;
|
||||
# Restarting is not supported under embedded
|
||||
source include/not_embedded.inc;
|
||||
-- source include/not_embedded.inc
|
||||
# Require InnoDB
|
||||
source include/have_innodb.inc;
|
||||
# Require Debug for SET DEBUG
|
||||
source include/have_debug.inc;
|
||||
# Not encrypted tables
|
||||
source include/not_encrypted.inc;
|
||||
# Test could open crash reporter on Windows
|
||||
# if compiler set up
|
||||
source include/not_windows.inc;
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/not_encrypted.inc
|
||||
|
||||
--disable_query_log
|
||||
CALL mtr.add_suppression("\\[ERROR\\] \\[FATAL\\] InnoDB: Unable to read page \\[page id: space=.*, page number=.*\\] into the buffer pool after 100 attempts");
|
||||
CALL mtr.add_suppression("\\[ERROR\\] InnoDB: Database page corruption on disk or a failed");
|
||||
call mtr.add_suppression("InnoDB: Table `test`.`t1` is corrupted. Please drop the table and recreate.");
|
||||
call mtr.add_suppression("InnoDB: Cannot open table test/t1 from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t1 page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup.");
|
||||
--enable_query_log
|
||||
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ROW_FORMAT=COMPACT ENGINE=InnoDB;
|
||||
--echo # Create and populate the table to be corrupted
|
||||
|
||||
set global innodb_file_per_table=ON;
|
||||
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
--disable_query_log
|
||||
--let $i = 10
|
||||
@ -71,27 +66,18 @@ EOF
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
SET DEBUG_DBUG = '+d,innodb_page_corruption_retries';
|
||||
|
||||
--echo # Write file to make mysql-test-run.pl expect the "crash", but don't
|
||||
--echo # start it until it's told to
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--echo # The below SELECT query will crash the server because some pages
|
||||
--echo # on the disk are corrupted
|
||||
--error 2013
|
||||
--echo # The below SELECT query will return that table is not
|
||||
--echo # in engine because table is corrupted
|
||||
--error ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
SELECT * FROM t1;
|
||||
|
||||
# The below mtr command --remove_file fails randomly on windows with
|
||||
# error number 13 which is permission denied on nix systems. We sleep
|
||||
# 1 second hoping that any process holding lock on t1.ibd is released.
|
||||
SLEEP 1;
|
||||
--error ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
INSERT INTO t1(b) VALUES('abcdef');
|
||||
|
||||
--echo # Restore the original t1.ibd
|
||||
--remove_file $MYSQLD_DATADIR/test/t1.ibd
|
||||
--move_file $MYSQLD_DATADIR/test/t1.ibd.backup $MYSQLD_DATADIR/test/t1.ibd
|
||||
--error ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
UPDATE t1 set b = 'deadbeef' where a = 1;
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
CHECK TABLE t1;
|
||||
|
||||
--echo # Cleanup
|
||||
DROP TABLE t1;
|
||||
|
@ -170,6 +170,7 @@ call mtr.add_suppression("InnoDB: Ignoring tablespace for `test`.`u[1-3]` becaus
|
||||
call mtr.add_suppression("InnoDB: Failed to find tablespace for table .* in the cache. Attempting to load the tablespace with space id");
|
||||
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' \(init function returned error\|registration as a STORAGE ENGINE failed\)");
|
||||
call mtr.add_suppression("InnoDB: Table test/u[123] in the InnoDB data dictionary has tablespace id [1-9][0-9]*, but tablespace with that id or name does not exist\\. Have you deleted or moved \\.ibd files\\?");
|
||||
FLUSH TABLES;
|
||||
--enable_query_log
|
||||
|
||||
@ -265,7 +266,6 @@ let SEARCH_PATTERN= \[Warning\] InnoDB: Tablespace \d+ was not found at .*u[1-5]
|
||||
|
||||
DROP TABLE u1,u2,u3,u6;
|
||||
|
||||
--remove_file $MYSQLD_DATADIR/test/u1.ibd
|
||||
--echo # List of files:
|
||||
--list_files $MYSQLD_DATADIR/test
|
||||
|
||||
|
@ -169,8 +169,7 @@ btr_root_block_get(
|
||||
|
||||
if (!block) {
|
||||
if (index && index->table) {
|
||||
index->table->is_encrypted = TRUE;
|
||||
index->table->corrupted = FALSE;
|
||||
index->table->file_unreadable = true;
|
||||
|
||||
ib_push_warning(index->table->thd, DB_DECRYPTION_FAILED,
|
||||
"Table %s in tablespace %lu is encrypted but encryption service or"
|
||||
@ -183,6 +182,7 @@ btr_root_block_get(
|
||||
}
|
||||
|
||||
btr_assert_not_corrupted(block, index);
|
||||
|
||||
#ifdef UNIV_BTR_DEBUG
|
||||
if (!dict_index_is_ibuf(index)) {
|
||||
const page_t* root = buf_block_get_frame(block);
|
||||
@ -5418,7 +5418,7 @@ btr_validate_index(
|
||||
|
||||
page_t* root = btr_root_get(index, &mtr);
|
||||
|
||||
if (root == NULL && index->table->is_encrypted) {
|
||||
if (root == NULL && index->table->file_unreadable) {
|
||||
err = DB_DECRYPTION_FAILED;
|
||||
mtr_commit(&mtr);
|
||||
return err;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user