summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extra/mariabackup/xtrabackup.cc4
-rw-r--r--mysql-test/suite/encryption/r/innodb-first-page-read.result61
-rw-r--r--mysql-test/suite/encryption/r/innodb-key-rotation-disable.result3
-rw-r--r--mysql-test/suite/encryption/r/innodb_encryption.result58
-rw-r--r--mysql-test/suite/encryption/r/innodb_lotoftables.result1182
-rw-r--r--mysql-test/suite/encryption/t/innodb-first-page-read.test32
-rw-r--r--mysql-test/suite/encryption/t/innodb_encryption.test167
-rw-r--r--mysql-test/suite/encryption/t/innodb_lotoftables.test91
-rw-r--r--storage/innobase/fil/fil0crypt.cc15
-rw-r--r--storage/innobase/fil/fil0fil.cc26
-rw-r--r--storage/innobase/fsp/fsp0file.cc7
-rw-r--r--storage/innobase/fsp/fsp0fsp.cc8
-rw-r--r--storage/innobase/fsp/fsp0space.cc2
-rw-r--r--storage/innobase/fsp/fsp0sysspace.cc13
-rw-r--r--storage/innobase/handler/i_s.cc7
-rw-r--r--storage/innobase/include/fsp0file.h24
-rw-r--r--storage/innobase/include/fsp0sysspace.h6
-rw-r--r--storage/xtradb/fil/fil0crypt.cc17
-rw-r--r--storage/xtradb/fil/fil0fil.cc6
-rw-r--r--storage/xtradb/fsp/fsp0fsp.cc6
-rw-r--r--storage/xtradb/handler/i_s.cc7
-rw-r--r--storage/xtradb/srv/srv0start.cc5
22 files changed, 1357 insertions, 390 deletions
diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc
index cb42a359896..702ac088557 100644
--- a/extra/mariabackup/xtrabackup.cc
+++ b/extra/mariabackup/xtrabackup.cc
@@ -2598,10 +2598,6 @@ xb_load_single_table_tablespace(
ut_free(name);
- if (fil_space_crypt_t* crypt_info = file->get_crypt_info()) {
- fil_space_destroy_crypt_data(&crypt_info);
- }
-
delete file;
if (err != DB_SUCCESS && err != DB_CORRUPTION && xtrabackup_backup) {
diff --git a/mysql-test/suite/encryption/r/innodb-first-page-read.result b/mysql-test/suite/encryption/r/innodb-first-page-read.result
index 9b57b9de5f9..6df80e8223d 100644
--- a/mysql-test/suite/encryption/r/innodb-first-page-read.result
+++ b/mysql-test/suite/encryption/r/innodb-first-page-read.result
@@ -1,5 +1,6 @@
SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
+FLUSH STATUS;
create database innodb_test;
use innodb_test;
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
@@ -50,40 +51,48 @@ insert into innodb_datadir1 select * from innodb_normal;
insert into innodb_datadir2 select * from innodb_normal;
insert into innodb_datadir3 select * from innodb_normal;
commit;
+FLUSH STATUS;
# Restart server and see how many page 0's are read
-# result should be less than actual number of tables
-# i.e. < 23 + 3 = 26
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+# result should actual number of tables except remote tables could be read twice
+# i.e. < 23 + 3*2 = 29
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
use innodb_test;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
use test;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
set global innodb_encrypt_tables=OFF;
# wait until tables are decrypted
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+# result should be actual number of tables except remote tables could be read twice
+# i.e. < 23 + 3*2 = 29
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
use innodb_test;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
use test;
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
+FLUSH STATUS;
# restart and see number read page 0
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
use innodb_test;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
use test;
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+VARIABLE_VALUE <= 29
+1
drop database innodb_test;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 26
+FLUSH STATUS;
diff --git a/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result b/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result
index a642ad20183..680db692c17 100644
--- a/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result
+++ b/mysql-test/suite/encryption/r/innodb-key-rotation-disable.result
@@ -2,9 +2,6 @@ SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_
NAME
SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
NAME
-mysql/innodb_table_stats
-mysql/innodb_index_stats
-innodb_system
create database enctests;
use enctests;
create table t1(a int not null primary key, b char(200)) engine=innodb;
diff --git a/mysql-test/suite/encryption/r/innodb_encryption.result b/mysql-test/suite/encryption/r/innodb_encryption.result
index ce494098d44..c49cf3813c9 100644
--- a/mysql-test/suite/encryption/r/innodb_encryption.result
+++ b/mysql-test/suite/encryption/r/innodb_encryption.result
@@ -8,25 +8,22 @@ innodb_encrypt_tables ON
innodb_encryption_rotate_key_age 15
innodb_encryption_rotation_iops 100
innodb_encryption_threads 4
-DESCRIBE INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
-Field Type Null Key Default Extra
-SPACE int(11) unsigned NO 0
-NAME varchar(655) YES NULL
-ENCRYPTION_SCHEME int(11) unsigned NO 0
-KEYSERVER_REQUESTS int(11) unsigned NO 0
-MIN_KEY_VERSION int(11) unsigned NO 0
-CURRENT_KEY_VERSION int(11) unsigned NO 0
-KEY_ROTATION_PAGE_NUMBER bigint(21) unsigned YES NULL
-KEY_ROTATION_MAX_PAGE_NUMBER bigint(21) unsigned YES NULL
-CURRENT_KEY_ID int(11) unsigned NO 0
-ROTATING_OR_FLUSHING int(1) unsigned NO 0
-# Wait max 5 min for key encryption threads to encrypt one space
-# Success!
-# Wait max 10 min for key encryption threads to encrypt all space
+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;
+NAME
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+NAME
+innodb_system
# Success!
# Now turn off encryption and wait for threads to decrypt everything
SET GLOBAL innodb_encrypt_tables = off;
-# Wait max 10 min for key encryption threads to decrypt all space
+# 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
+innodb_system
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+NAME
# Success!
# Shutdown innodb_encryption_threads
SET GLOBAL innodb_encryption_threads=0;
@@ -34,16 +31,20 @@ SET GLOBAL innodb_encryption_threads=0;
# since threads are off tables should remain unencrypted
SET GLOBAL innodb_encrypt_tables = on;
# Wait 15s to check that nothing gets encrypted
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
+NAME
+innodb_system
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+NAME
# Success!
# Startup innodb_encryption_threads
SET GLOBAL innodb_encryption_threads=@start_global_value;
-# Wait 1 min to check that it start encrypting again
-# Success!
-#
-# Check that restart with encryption turned off works
-# even if spaces are encrypted
-#
-# First wait max 10 min for key encryption threads to encrypt all spaces
+# 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
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+NAME
+innodb_system
# Success!
# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
SHOW VARIABLES LIKE 'innodb_encrypt%';
@@ -53,9 +54,8 @@ innodb_encrypt_tables OFF
innodb_encryption_rotate_key_age 15
innodb_encryption_rotation_iops 100
innodb_encryption_threads 0
-SELECT COUNT(*) > 0 as should_be_1
-FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION
-WHERE MIN_KEY_VERSION <> 0;
-should_be_1
-1
-# Restart mysqld again...with default options
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+NAME
+innodb_system
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
+NAME
diff --git a/mysql-test/suite/encryption/r/innodb_lotoftables.result b/mysql-test/suite/encryption/r/innodb_lotoftables.result
index cf5724b527a..da07a52f8c3 100644
--- a/mysql-test/suite/encryption/r/innodb_lotoftables.result
+++ b/mysql-test/suite/encryption/r/innodb_lotoftables.result
@@ -17,10 +17,9 @@ commit work;
show status like 'innodb_pages0_read%';
Variable_name Value
Innodb_pages0_read 3
-# should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
+# should be empty
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
+NAME
create database innodb_encrypted_2;
use innodb_encrypted_2;
show status like 'innodb_pages0_read%';
@@ -32,14 +31,112 @@ set autocommit=1;
show status like 'innodb_pages0_read%';
Variable_name Value
Innodb_pages0_read 3
-# should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
-# should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
+# should contain 100 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_2/t_1
+innodb_encrypted_2/t_10
+innodb_encrypted_2/t_100
+innodb_encrypted_2/t_11
+innodb_encrypted_2/t_12
+innodb_encrypted_2/t_13
+innodb_encrypted_2/t_14
+innodb_encrypted_2/t_15
+innodb_encrypted_2/t_16
+innodb_encrypted_2/t_17
+innodb_encrypted_2/t_18
+innodb_encrypted_2/t_19
+innodb_encrypted_2/t_2
+innodb_encrypted_2/t_20
+innodb_encrypted_2/t_21
+innodb_encrypted_2/t_22
+innodb_encrypted_2/t_23
+innodb_encrypted_2/t_24
+innodb_encrypted_2/t_25
+innodb_encrypted_2/t_26
+innodb_encrypted_2/t_27
+innodb_encrypted_2/t_28
+innodb_encrypted_2/t_29
+innodb_encrypted_2/t_3
+innodb_encrypted_2/t_30
+innodb_encrypted_2/t_31
+innodb_encrypted_2/t_32
+innodb_encrypted_2/t_33
+innodb_encrypted_2/t_34
+innodb_encrypted_2/t_35
+innodb_encrypted_2/t_36
+innodb_encrypted_2/t_37
+innodb_encrypted_2/t_38
+innodb_encrypted_2/t_39
+innodb_encrypted_2/t_4
+innodb_encrypted_2/t_40
+innodb_encrypted_2/t_41
+innodb_encrypted_2/t_42
+innodb_encrypted_2/t_43
+innodb_encrypted_2/t_44
+innodb_encrypted_2/t_45
+innodb_encrypted_2/t_46
+innodb_encrypted_2/t_47
+innodb_encrypted_2/t_48
+innodb_encrypted_2/t_49
+innodb_encrypted_2/t_5
+innodb_encrypted_2/t_50
+innodb_encrypted_2/t_51
+innodb_encrypted_2/t_52
+innodb_encrypted_2/t_53
+innodb_encrypted_2/t_54
+innodb_encrypted_2/t_55
+innodb_encrypted_2/t_56
+innodb_encrypted_2/t_57
+innodb_encrypted_2/t_58
+innodb_encrypted_2/t_59
+innodb_encrypted_2/t_6
+innodb_encrypted_2/t_60
+innodb_encrypted_2/t_61
+innodb_encrypted_2/t_62
+innodb_encrypted_2/t_63
+innodb_encrypted_2/t_64
+innodb_encrypted_2/t_65
+innodb_encrypted_2/t_66
+innodb_encrypted_2/t_67
+innodb_encrypted_2/t_68
+innodb_encrypted_2/t_69
+innodb_encrypted_2/t_7
+innodb_encrypted_2/t_70
+innodb_encrypted_2/t_71
+innodb_encrypted_2/t_72
+innodb_encrypted_2/t_73
+innodb_encrypted_2/t_74
+innodb_encrypted_2/t_75
+innodb_encrypted_2/t_76
+innodb_encrypted_2/t_77
+innodb_encrypted_2/t_78
+innodb_encrypted_2/t_79
+innodb_encrypted_2/t_8
+innodb_encrypted_2/t_80
+innodb_encrypted_2/t_81
+innodb_encrypted_2/t_82
+innodb_encrypted_2/t_83
+innodb_encrypted_2/t_84
+innodb_encrypted_2/t_85
+innodb_encrypted_2/t_86
+innodb_encrypted_2/t_87
+innodb_encrypted_2/t_88
+innodb_encrypted_2/t_89
+innodb_encrypted_2/t_9
+innodb_encrypted_2/t_90
+innodb_encrypted_2/t_91
+innodb_encrypted_2/t_92
+innodb_encrypted_2/t_93
+innodb_encrypted_2/t_94
+innodb_encrypted_2/t_95
+innodb_encrypted_2/t_96
+innodb_encrypted_2/t_97
+innodb_encrypted_2/t_98
+innodb_encrypted_2/t_99
+# should contain 0 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
create database innodb_encrypted_3;
use innodb_encrypted_3;
show status like 'innodb_pages0_read%';
@@ -51,33 +148,626 @@ set autocommit=1;
show status like 'innodb_pages0_read%';
Variable_name Value
Innodb_pages0_read 3
-# should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
-# should be 200
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-200
+# should contain 100 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_2/t_1
+innodb_encrypted_2/t_10
+innodb_encrypted_2/t_100
+innodb_encrypted_2/t_11
+innodb_encrypted_2/t_12
+innodb_encrypted_2/t_13
+innodb_encrypted_2/t_14
+innodb_encrypted_2/t_15
+innodb_encrypted_2/t_16
+innodb_encrypted_2/t_17
+innodb_encrypted_2/t_18
+innodb_encrypted_2/t_19
+innodb_encrypted_2/t_2
+innodb_encrypted_2/t_20
+innodb_encrypted_2/t_21
+innodb_encrypted_2/t_22
+innodb_encrypted_2/t_23
+innodb_encrypted_2/t_24
+innodb_encrypted_2/t_25
+innodb_encrypted_2/t_26
+innodb_encrypted_2/t_27
+innodb_encrypted_2/t_28
+innodb_encrypted_2/t_29
+innodb_encrypted_2/t_3
+innodb_encrypted_2/t_30
+innodb_encrypted_2/t_31
+innodb_encrypted_2/t_32
+innodb_encrypted_2/t_33
+innodb_encrypted_2/t_34
+innodb_encrypted_2/t_35
+innodb_encrypted_2/t_36
+innodb_encrypted_2/t_37
+innodb_encrypted_2/t_38
+innodb_encrypted_2/t_39
+innodb_encrypted_2/t_4
+innodb_encrypted_2/t_40
+innodb_encrypted_2/t_41
+innodb_encrypted_2/t_42
+innodb_encrypted_2/t_43
+innodb_encrypted_2/t_44
+innodb_encrypted_2/t_45
+innodb_encrypted_2/t_46
+innodb_encrypted_2/t_47
+innodb_encrypted_2/t_48
+innodb_encrypted_2/t_49
+innodb_encrypted_2/t_5
+innodb_encrypted_2/t_50
+innodb_encrypted_2/t_51
+innodb_encrypted_2/t_52
+innodb_encrypted_2/t_53
+innodb_encrypted_2/t_54
+innodb_encrypted_2/t_55
+innodb_encrypted_2/t_56
+innodb_encrypted_2/t_57
+innodb_encrypted_2/t_58
+innodb_encrypted_2/t_59
+innodb_encrypted_2/t_6
+innodb_encrypted_2/t_60
+innodb_encrypted_2/t_61
+innodb_encrypted_2/t_62
+innodb_encrypted_2/t_63
+innodb_encrypted_2/t_64
+innodb_encrypted_2/t_65
+innodb_encrypted_2/t_66
+innodb_encrypted_2/t_67
+innodb_encrypted_2/t_68
+innodb_encrypted_2/t_69
+innodb_encrypted_2/t_7
+innodb_encrypted_2/t_70
+innodb_encrypted_2/t_71
+innodb_encrypted_2/t_72
+innodb_encrypted_2/t_73
+innodb_encrypted_2/t_74
+innodb_encrypted_2/t_75
+innodb_encrypted_2/t_76
+innodb_encrypted_2/t_77
+innodb_encrypted_2/t_78
+innodb_encrypted_2/t_79
+innodb_encrypted_2/t_8
+innodb_encrypted_2/t_80
+innodb_encrypted_2/t_81
+innodb_encrypted_2/t_82
+innodb_encrypted_2/t_83
+innodb_encrypted_2/t_84
+innodb_encrypted_2/t_85
+innodb_encrypted_2/t_86
+innodb_encrypted_2/t_87
+innodb_encrypted_2/t_88
+innodb_encrypted_2/t_89
+innodb_encrypted_2/t_9
+innodb_encrypted_2/t_90
+innodb_encrypted_2/t_91
+innodb_encrypted_2/t_92
+innodb_encrypted_2/t_93
+innodb_encrypted_2/t_94
+innodb_encrypted_2/t_95
+innodb_encrypted_2/t_96
+innodb_encrypted_2/t_97
+innodb_encrypted_2/t_98
+innodb_encrypted_2/t_99
+# should contain 100 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_3/t_1
+innodb_encrypted_3/t_10
+innodb_encrypted_3/t_100
+innodb_encrypted_3/t_11
+innodb_encrypted_3/t_12
+innodb_encrypted_3/t_13
+innodb_encrypted_3/t_14
+innodb_encrypted_3/t_15
+innodb_encrypted_3/t_16
+innodb_encrypted_3/t_17
+innodb_encrypted_3/t_18
+innodb_encrypted_3/t_19
+innodb_encrypted_3/t_2
+innodb_encrypted_3/t_20
+innodb_encrypted_3/t_21
+innodb_encrypted_3/t_22
+innodb_encrypted_3/t_23
+innodb_encrypted_3/t_24
+innodb_encrypted_3/t_25
+innodb_encrypted_3/t_26
+innodb_encrypted_3/t_27
+innodb_encrypted_3/t_28
+innodb_encrypted_3/t_29
+innodb_encrypted_3/t_3
+innodb_encrypted_3/t_30
+innodb_encrypted_3/t_31
+innodb_encrypted_3/t_32
+innodb_encrypted_3/t_33
+innodb_encrypted_3/t_34
+innodb_encrypted_3/t_35
+innodb_encrypted_3/t_36
+innodb_encrypted_3/t_37
+innodb_encrypted_3/t_38
+innodb_encrypted_3/t_39
+innodb_encrypted_3/t_4
+innodb_encrypted_3/t_40
+innodb_encrypted_3/t_41
+innodb_encrypted_3/t_42
+innodb_encrypted_3/t_43
+innodb_encrypted_3/t_44
+innodb_encrypted_3/t_45
+innodb_encrypted_3/t_46
+innodb_encrypted_3/t_47
+innodb_encrypted_3/t_48
+innodb_encrypted_3/t_49
+innodb_encrypted_3/t_5
+innodb_encrypted_3/t_50
+innodb_encrypted_3/t_51
+innodb_encrypted_3/t_52
+innodb_encrypted_3/t_53
+innodb_encrypted_3/t_54
+innodb_encrypted_3/t_55
+innodb_encrypted_3/t_56
+innodb_encrypted_3/t_57
+innodb_encrypted_3/t_58
+innodb_encrypted_3/t_59
+innodb_encrypted_3/t_6
+innodb_encrypted_3/t_60
+innodb_encrypted_3/t_61
+innodb_encrypted_3/t_62
+innodb_encrypted_3/t_63
+innodb_encrypted_3/t_64
+innodb_encrypted_3/t_65
+innodb_encrypted_3/t_66
+innodb_encrypted_3/t_67
+innodb_encrypted_3/t_68
+innodb_encrypted_3/t_69
+innodb_encrypted_3/t_7
+innodb_encrypted_3/t_70
+innodb_encrypted_3/t_71
+innodb_encrypted_3/t_72
+innodb_encrypted_3/t_73
+innodb_encrypted_3/t_74
+innodb_encrypted_3/t_75
+innodb_encrypted_3/t_76
+innodb_encrypted_3/t_77
+innodb_encrypted_3/t_78
+innodb_encrypted_3/t_79
+innodb_encrypted_3/t_8
+innodb_encrypted_3/t_80
+innodb_encrypted_3/t_81
+innodb_encrypted_3/t_82
+innodb_encrypted_3/t_83
+innodb_encrypted_3/t_84
+innodb_encrypted_3/t_85
+innodb_encrypted_3/t_86
+innodb_encrypted_3/t_87
+innodb_encrypted_3/t_88
+innodb_encrypted_3/t_89
+innodb_encrypted_3/t_9
+innodb_encrypted_3/t_90
+innodb_encrypted_3/t_91
+innodb_encrypted_3/t_92
+innodb_encrypted_3/t_93
+innodb_encrypted_3/t_94
+innodb_encrypted_3/t_95
+innodb_encrypted_3/t_96
+innodb_encrypted_3/t_97
+innodb_encrypted_3/t_98
+innodb_encrypted_3/t_99
use test;
show status like 'innodb_pages0_read%';
Variable_name Value
Innodb_pages0_read 3
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-200
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_2/t_1
+innodb_encrypted_2/t_10
+innodb_encrypted_2/t_100
+innodb_encrypted_2/t_11
+innodb_encrypted_2/t_12
+innodb_encrypted_2/t_13
+innodb_encrypted_2/t_14
+innodb_encrypted_2/t_15
+innodb_encrypted_2/t_16
+innodb_encrypted_2/t_17
+innodb_encrypted_2/t_18
+innodb_encrypted_2/t_19
+innodb_encrypted_2/t_2
+innodb_encrypted_2/t_20
+innodb_encrypted_2/t_21
+innodb_encrypted_2/t_22
+innodb_encrypted_2/t_23
+innodb_encrypted_2/t_24
+innodb_encrypted_2/t_25
+innodb_encrypted_2/t_26
+innodb_encrypted_2/t_27
+innodb_encrypted_2/t_28
+innodb_encrypted_2/t_29
+innodb_encrypted_2/t_3
+innodb_encrypted_2/t_30
+innodb_encrypted_2/t_31
+innodb_encrypted_2/t_32
+innodb_encrypted_2/t_33
+innodb_encrypted_2/t_34
+innodb_encrypted_2/t_35
+innodb_encrypted_2/t_36
+innodb_encrypted_2/t_37
+innodb_encrypted_2/t_38
+innodb_encrypted_2/t_39
+innodb_encrypted_2/t_4
+innodb_encrypted_2/t_40
+innodb_encrypted_2/t_41
+innodb_encrypted_2/t_42
+innodb_encrypted_2/t_43
+innodb_encrypted_2/t_44
+innodb_encrypted_2/t_45
+innodb_encrypted_2/t_46
+innodb_encrypted_2/t_47
+innodb_encrypted_2/t_48
+innodb_encrypted_2/t_49
+innodb_encrypted_2/t_5
+innodb_encrypted_2/t_50
+innodb_encrypted_2/t_51
+innodb_encrypted_2/t_52
+innodb_encrypted_2/t_53
+innodb_encrypted_2/t_54
+innodb_encrypted_2/t_55
+innodb_encrypted_2/t_56
+innodb_encrypted_2/t_57
+innodb_encrypted_2/t_58
+innodb_encrypted_2/t_59
+innodb_encrypted_2/t_6
+innodb_encrypted_2/t_60
+innodb_encrypted_2/t_61
+innodb_encrypted_2/t_62
+innodb_encrypted_2/t_63
+innodb_encrypted_2/t_64
+innodb_encrypted_2/t_65
+innodb_encrypted_2/t_66
+innodb_encrypted_2/t_67
+innodb_encrypted_2/t_68
+innodb_encrypted_2/t_69
+innodb_encrypted_2/t_7
+innodb_encrypted_2/t_70
+innodb_encrypted_2/t_71
+innodb_encrypted_2/t_72
+innodb_encrypted_2/t_73
+innodb_encrypted_2/t_74
+innodb_encrypted_2/t_75
+innodb_encrypted_2/t_76
+innodb_encrypted_2/t_77
+innodb_encrypted_2/t_78
+innodb_encrypted_2/t_79
+innodb_encrypted_2/t_8
+innodb_encrypted_2/t_80
+innodb_encrypted_2/t_81
+innodb_encrypted_2/t_82
+innodb_encrypted_2/t_83
+innodb_encrypted_2/t_84
+innodb_encrypted_2/t_85
+innodb_encrypted_2/t_86
+innodb_encrypted_2/t_87
+innodb_encrypted_2/t_88
+innodb_encrypted_2/t_89
+innodb_encrypted_2/t_9
+innodb_encrypted_2/t_90
+innodb_encrypted_2/t_91
+innodb_encrypted_2/t_92
+innodb_encrypted_2/t_93
+innodb_encrypted_2/t_94
+innodb_encrypted_2/t_95
+innodb_encrypted_2/t_96
+innodb_encrypted_2/t_97
+innodb_encrypted_2/t_98
+innodb_encrypted_2/t_99
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_3/t_1
+innodb_encrypted_3/t_10
+innodb_encrypted_3/t_100
+innodb_encrypted_3/t_11
+innodb_encrypted_3/t_12
+innodb_encrypted_3/t_13
+innodb_encrypted_3/t_14
+innodb_encrypted_3/t_15
+innodb_encrypted_3/t_16
+innodb_encrypted_3/t_17
+innodb_encrypted_3/t_18
+innodb_encrypted_3/t_19
+innodb_encrypted_3/t_2
+innodb_encrypted_3/t_20
+innodb_encrypted_3/t_21
+innodb_encrypted_3/t_22
+innodb_encrypted_3/t_23
+innodb_encrypted_3/t_24
+innodb_encrypted_3/t_25
+innodb_encrypted_3/t_26
+innodb_encrypted_3/t_27
+innodb_encrypted_3/t_28
+innodb_encrypted_3/t_29
+innodb_encrypted_3/t_3
+innodb_encrypted_3/t_30
+innodb_encrypted_3/t_31
+innodb_encrypted_3/t_32
+innodb_encrypted_3/t_33
+innodb_encrypted_3/t_34
+innodb_encrypted_3/t_35
+innodb_encrypted_3/t_36
+innodb_encrypted_3/t_37
+innodb_encrypted_3/t_38
+innodb_encrypted_3/t_39
+innodb_encrypted_3/t_4
+innodb_encrypted_3/t_40
+innodb_encrypted_3/t_41
+innodb_encrypted_3/t_42
+innodb_encrypted_3/t_43
+innodb_encrypted_3/t_44
+innodb_encrypted_3/t_45
+innodb_encrypted_3/t_46
+innodb_encrypted_3/t_47
+innodb_encrypted_3/t_48
+innodb_encrypted_3/t_49
+innodb_encrypted_3/t_5
+innodb_encrypted_3/t_50
+innodb_encrypted_3/t_51
+innodb_encrypted_3/t_52
+innodb_encrypted_3/t_53
+innodb_encrypted_3/t_54
+innodb_encrypted_3/t_55
+innodb_encrypted_3/t_56
+innodb_encrypted_3/t_57
+innodb_encrypted_3/t_58
+innodb_encrypted_3/t_59
+innodb_encrypted_3/t_6
+innodb_encrypted_3/t_60
+innodb_encrypted_3/t_61
+innodb_encrypted_3/t_62
+innodb_encrypted_3/t_63
+innodb_encrypted_3/t_64
+innodb_encrypted_3/t_65
+innodb_encrypted_3/t_66
+innodb_encrypted_3/t_67
+innodb_encrypted_3/t_68
+innodb_encrypted_3/t_69
+innodb_encrypted_3/t_7
+innodb_encrypted_3/t_70
+innodb_encrypted_3/t_71
+innodb_encrypted_3/t_72
+innodb_encrypted_3/t_73
+innodb_encrypted_3/t_74
+innodb_encrypted_3/t_75
+innodb_encrypted_3/t_76
+innodb_encrypted_3/t_77
+innodb_encrypted_3/t_78
+innodb_encrypted_3/t_79
+innodb_encrypted_3/t_8
+innodb_encrypted_3/t_80
+innodb_encrypted_3/t_81
+innodb_encrypted_3/t_82
+innodb_encrypted_3/t_83
+innodb_encrypted_3/t_84
+innodb_encrypted_3/t_85
+innodb_encrypted_3/t_86
+innodb_encrypted_3/t_87
+innodb_encrypted_3/t_88
+innodb_encrypted_3/t_89
+innodb_encrypted_3/t_9
+innodb_encrypted_3/t_90
+innodb_encrypted_3/t_91
+innodb_encrypted_3/t_92
+innodb_encrypted_3/t_93
+innodb_encrypted_3/t_94
+innodb_encrypted_3/t_95
+innodb_encrypted_3/t_96
+innodb_encrypted_3/t_97
+innodb_encrypted_3/t_98
+innodb_encrypted_3/t_99
SET GLOBAL innodb_encrypt_tables = on;
SET GLOBAL innodb_encryption_threads=4;
-# Wait until all encrypted tables have been encrypted
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-200
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_2/t_1
+innodb_encrypted_2/t_10
+innodb_encrypted_2/t_100
+innodb_encrypted_2/t_11
+innodb_encrypted_2/t_12
+innodb_encrypted_2/t_13
+innodb_encrypted_2/t_14
+innodb_encrypted_2/t_15
+innodb_encrypted_2/t_16
+innodb_encrypted_2/t_17
+innodb_encrypted_2/t_18
+innodb_encrypted_2/t_19
+innodb_encrypted_2/t_2
+innodb_encrypted_2/t_20
+innodb_encrypted_2/t_21
+innodb_encrypted_2/t_22
+innodb_encrypted_2/t_23
+innodb_encrypted_2/t_24
+innodb_encrypted_2/t_25
+innodb_encrypted_2/t_26
+innodb_encrypted_2/t_27
+innodb_encrypted_2/t_28
+innodb_encrypted_2/t_29
+innodb_encrypted_2/t_3
+innodb_encrypted_2/t_30
+innodb_encrypted_2/t_31
+innodb_encrypted_2/t_32
+innodb_encrypted_2/t_33
+innodb_encrypted_2/t_34
+innodb_encrypted_2/t_35
+innodb_encrypted_2/t_36
+innodb_encrypted_2/t_37
+innodb_encrypted_2/t_38
+innodb_encrypted_2/t_39
+innodb_encrypted_2/t_4
+innodb_encrypted_2/t_40
+innodb_encrypted_2/t_41
+innodb_encrypted_2/t_42
+innodb_encrypted_2/t_43
+innodb_encrypted_2/t_44
+innodb_encrypted_2/t_45
+innodb_encrypted_2/t_46
+innodb_encrypted_2/t_47
+innodb_encrypted_2/t_48
+innodb_encrypted_2/t_49
+innodb_encrypted_2/t_5
+innodb_encrypted_2/t_50
+innodb_encrypted_2/t_51
+innodb_encrypted_2/t_52
+innodb_encrypted_2/t_53
+innodb_encrypted_2/t_54
+innodb_encrypted_2/t_55
+innodb_encrypted_2/t_56
+innodb_encrypted_2/t_57
+innodb_encrypted_2/t_58
+innodb_encrypted_2/t_59
+innodb_encrypted_2/t_6
+innodb_encrypted_2/t_60
+innodb_encrypted_2/t_61
+innodb_encrypted_2/t_62
+innodb_encrypted_2/t_63
+innodb_encrypted_2/t_64
+innodb_encrypted_2/t_65
+innodb_encrypted_2/t_66
+innodb_encrypted_2/t_67
+innodb_encrypted_2/t_68
+innodb_encrypted_2/t_69
+innodb_encrypted_2/t_7
+innodb_encrypted_2/t_70
+innodb_encrypted_2/t_71
+innodb_encrypted_2/t_72
+innodb_encrypted_2/t_73
+innodb_encrypted_2/t_74
+innodb_encrypted_2/t_75
+innodb_encrypted_2/t_76
+innodb_encrypted_2/t_77
+innodb_encrypted_2/t_78
+innodb_encrypted_2/t_79
+innodb_encrypted_2/t_8
+innodb_encrypted_2/t_80
+innodb_encrypted_2/t_81
+innodb_encrypted_2/t_82
+innodb_encrypted_2/t_83
+innodb_encrypted_2/t_84
+innodb_encrypted_2/t_85
+innodb_encrypted_2/t_86
+innodb_encrypted_2/t_87
+innodb_encrypted_2/t_88
+innodb_encrypted_2/t_89
+innodb_encrypted_2/t_9
+innodb_encrypted_2/t_90
+innodb_encrypted_2/t_91
+innodb_encrypted_2/t_92
+innodb_encrypted_2/t_93
+innodb_encrypted_2/t_94
+innodb_encrypted_2/t_95
+innodb_encrypted_2/t_96
+innodb_encrypted_2/t_97
+innodb_encrypted_2/t_98
+innodb_encrypted_2/t_99
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_3/t_1
+innodb_encrypted_3/t_10
+innodb_encrypted_3/t_100
+innodb_encrypted_3/t_11
+innodb_encrypted_3/t_12
+innodb_encrypted_3/t_13
+innodb_encrypted_3/t_14
+innodb_encrypted_3/t_15
+innodb_encrypted_3/t_16
+innodb_encrypted_3/t_17
+innodb_encrypted_3/t_18
+innodb_encrypted_3/t_19
+innodb_encrypted_3/t_2
+innodb_encrypted_3/t_20
+innodb_encrypted_3/t_21
+innodb_encrypted_3/t_22
+innodb_encrypted_3/t_23
+innodb_encrypted_3/t_24
+innodb_encrypted_3/t_25
+innodb_encrypted_3/t_26
+innodb_encrypted_3/t_27
+innodb_encrypted_3/t_28
+innodb_encrypted_3/t_29
+innodb_encrypted_3/t_3
+innodb_encrypted_3/t_30
+innodb_encrypted_3/t_31
+innodb_encrypted_3/t_32
+innodb_encrypted_3/t_33
+innodb_encrypted_3/t_34
+innodb_encrypted_3/t_35
+innodb_encrypted_3/t_36
+innodb_encrypted_3/t_37
+innodb_encrypted_3/t_38
+innodb_encrypted_3/t_39
+innodb_encrypted_3/t_4
+innodb_encrypted_3/t_40
+innodb_encrypted_3/t_41
+innodb_encrypted_3/t_42
+innodb_encrypted_3/t_43
+innodb_encrypted_3/t_44
+innodb_encrypted_3/t_45
+innodb_encrypted_3/t_46
+innodb_encrypted_3/t_47
+innodb_encrypted_3/t_48
+innodb_encrypted_3/t_49
+innodb_encrypted_3/t_5
+innodb_encrypted_3/t_50
+innodb_encrypted_3/t_51
+innodb_encrypted_3/t_52
+innodb_encrypted_3/t_53
+innodb_encrypted_3/t_54
+innodb_encrypted_3/t_55
+innodb_encrypted_3/t_56
+innodb_encrypted_3/t_57
+innodb_encrypted_3/t_58
+innodb_encrypted_3/t_59
+innodb_encrypted_3/t_6
+innodb_encrypted_3/t_60
+innodb_encrypted_3/t_61
+innodb_encrypted_3/t_62
+innodb_encrypted_3/t_63
+innodb_encrypted_3/t_64
+innodb_encrypted_3/t_65
+innodb_encrypted_3/t_66
+innodb_encrypted_3/t_67
+innodb_encrypted_3/t_68
+innodb_encrypted_3/t_69
+innodb_encrypted_3/t_7
+innodb_encrypted_3/t_70
+innodb_encrypted_3/t_71
+innodb_encrypted_3/t_72
+innodb_encrypted_3/t_73
+innodb_encrypted_3/t_74
+innodb_encrypted_3/t_75
+innodb_encrypted_3/t_76
+innodb_encrypted_3/t_77
+innodb_encrypted_3/t_78
+innodb_encrypted_3/t_79
+innodb_encrypted_3/t_8
+innodb_encrypted_3/t_80
+innodb_encrypted_3/t_81
+innodb_encrypted_3/t_82
+innodb_encrypted_3/t_83
+innodb_encrypted_3/t_84
+innodb_encrypted_3/t_85
+innodb_encrypted_3/t_86
+innodb_encrypted_3/t_87
+innodb_encrypted_3/t_88
+innodb_encrypted_3/t_89
+innodb_encrypted_3/t_9
+innodb_encrypted_3/t_90
+innodb_encrypted_3/t_91
+innodb_encrypted_3/t_92
+innodb_encrypted_3/t_93
+innodb_encrypted_3/t_94
+innodb_encrypted_3/t_95
+innodb_encrypted_3/t_96
+innodb_encrypted_3/t_97
+innodb_encrypted_3/t_98
+innodb_encrypted_3/t_99
show status like 'innodb_pages0_read%';
Variable_name Value
Innodb_pages0_read 3
@@ -127,26 +817,416 @@ Innodb_pages0_read 303
show status like 'innodb_pages0_read%';
Variable_name Value
Innodb_pages0_read 303
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-200
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_3/t_1
+innodb_encrypted_3/t_10
+innodb_encrypted_3/t_100
+innodb_encrypted_3/t_11
+innodb_encrypted_3/t_12
+innodb_encrypted_3/t_13
+innodb_encrypted_3/t_14
+innodb_encrypted_3/t_15
+innodb_encrypted_3/t_16
+innodb_encrypted_3/t_17
+innodb_encrypted_3/t_18
+innodb_encrypted_3/t_19
+innodb_encrypted_3/t_2
+innodb_encrypted_3/t_20
+innodb_encrypted_3/t_21
+innodb_encrypted_3/t_22
+innodb_encrypted_3/t_23
+innodb_encrypted_3/t_24
+innodb_encrypted_3/t_25
+innodb_encrypted_3/t_26
+innodb_encrypted_3/t_27
+innodb_encrypted_3/t_28
+innodb_encrypted_3/t_29
+innodb_encrypted_3/t_3
+innodb_encrypted_3/t_30
+innodb_encrypted_3/t_31
+innodb_encrypted_3/t_32
+innodb_encrypted_3/t_33
+innodb_encrypted_3/t_34
+innodb_encrypted_3/t_35
+innodb_encrypted_3/t_36
+innodb_encrypted_3/t_37
+innodb_encrypted_3/t_38
+innodb_encrypted_3/t_39
+innodb_encrypted_3/t_4
+innodb_encrypted_3/t_40
+innodb_encrypted_3/t_41
+innodb_encrypted_3/t_42
+innodb_encrypted_3/t_43
+innodb_encrypted_3/t_44
+innodb_encrypted_3/t_45
+innodb_encrypted_3/t_46
+innodb_encrypted_3/t_47
+innodb_encrypted_3/t_48
+innodb_encrypted_3/t_49
+innodb_encrypted_3/t_5
+innodb_encrypted_3/t_50
+innodb_encrypted_3/t_51
+innodb_encrypted_3/t_52
+innodb_encrypted_3/t_53
+innodb_encrypted_3/t_54
+innodb_encrypted_3/t_55
+innodb_encrypted_3/t_56
+innodb_encrypted_3/t_57
+innodb_encrypted_3/t_58
+innodb_encrypted_3/t_59
+innodb_encrypted_3/t_6
+innodb_encrypted_3/t_60
+innodb_encrypted_3/t_61
+innodb_encrypted_3/t_62
+innodb_encrypted_3/t_63
+innodb_encrypted_3/t_64
+innodb_encrypted_3/t_65
+innodb_encrypted_3/t_66
+innodb_encrypted_3/t_67
+innodb_encrypted_3/t_68
+innodb_encrypted_3/t_69
+innodb_encrypted_3/t_7
+innodb_encrypted_3/t_70
+innodb_encrypted_3/t_71
+innodb_encrypted_3/t_72
+innodb_encrypted_3/t_73
+innodb_encrypted_3/t_74
+innodb_encrypted_3/t_75
+innodb_encrypted_3/t_76
+innodb_encrypted_3/t_77
+innodb_encrypted_3/t_78
+innodb_encrypted_3/t_79
+innodb_encrypted_3/t_8
+innodb_encrypted_3/t_80
+innodb_encrypted_3/t_81
+innodb_encrypted_3/t_82
+innodb_encrypted_3/t_83
+innodb_encrypted_3/t_84
+innodb_encrypted_3/t_85
+innodb_encrypted_3/t_86
+innodb_encrypted_3/t_87
+innodb_encrypted_3/t_88
+innodb_encrypted_3/t_89
+innodb_encrypted_3/t_9
+innodb_encrypted_3/t_90
+innodb_encrypted_3/t_91
+innodb_encrypted_3/t_92
+innodb_encrypted_3/t_93
+innodb_encrypted_3/t_94
+innodb_encrypted_3/t_95
+innodb_encrypted_3/t_96
+innodb_encrypted_3/t_97
+innodb_encrypted_3/t_98
+innodb_encrypted_3/t_99
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_2/t_1
+innodb_encrypted_2/t_10
+innodb_encrypted_2/t_100
+innodb_encrypted_2/t_11
+innodb_encrypted_2/t_12
+innodb_encrypted_2/t_13
+innodb_encrypted_2/t_14
+innodb_encrypted_2/t_15
+innodb_encrypted_2/t_16
+innodb_encrypted_2/t_17
+innodb_encrypted_2/t_18
+innodb_encrypted_2/t_19
+innodb_encrypted_2/t_2
+innodb_encrypted_2/t_20
+innodb_encrypted_2/t_21
+innodb_encrypted_2/t_22
+innodb_encrypted_2/t_23
+innodb_encrypted_2/t_24
+innodb_encrypted_2/t_25
+innodb_encrypted_2/t_26
+innodb_encrypted_2/t_27
+innodb_encrypted_2/t_28
+innodb_encrypted_2/t_29
+innodb_encrypted_2/t_3
+innodb_encrypted_2/t_30
+innodb_encrypted_2/t_31
+innodb_encrypted_2/t_32
+innodb_encrypted_2/t_33
+innodb_encrypted_2/t_34
+innodb_encrypted_2/t_35
+innodb_encrypted_2/t_36
+innodb_encrypted_2/t_37
+innodb_encrypted_2/t_38
+innodb_encrypted_2/t_39
+innodb_encrypted_2/t_4
+innodb_encrypted_2/t_40
+innodb_encrypted_2/t_41
+innodb_encrypted_2/t_42
+innodb_encrypted_2/t_43
+innodb_encrypted_2/t_44
+innodb_encrypted_2/t_45
+innodb_encrypted_2/t_46
+innodb_encrypted_2/t_47
+innodb_encrypted_2/t_48
+innodb_encrypted_2/t_49
+innodb_encrypted_2/t_5
+innodb_encrypted_2/t_50
+innodb_encrypted_2/t_51
+innodb_encrypted_2/t_52
+innodb_encrypted_2/t_53
+innodb_encrypted_2/t_54
+innodb_encrypted_2/t_55
+innodb_encrypted_2/t_56
+innodb_encrypted_2/t_57
+innodb_encrypted_2/t_58
+innodb_encrypted_2/t_59
+innodb_encrypted_2/t_6
+innodb_encrypted_2/t_60
+innodb_encrypted_2/t_61
+innodb_encrypted_2/t_62
+innodb_encrypted_2/t_63
+innodb_encrypted_2/t_64
+innodb_encrypted_2/t_65
+innodb_encrypted_2/t_66
+innodb_encrypted_2/t_67
+innodb_encrypted_2/t_68
+innodb_encrypted_2/t_69
+innodb_encrypted_2/t_7
+innodb_encrypted_2/t_70
+innodb_encrypted_2/t_71
+innodb_encrypted_2/t_72
+innodb_encrypted_2/t_73
+innodb_encrypted_2/t_74
+innodb_encrypted_2/t_75
+innodb_encrypted_2/t_76
+innodb_encrypted_2/t_77
+innodb_encrypted_2/t_78
+innodb_encrypted_2/t_79
+innodb_encrypted_2/t_8
+innodb_encrypted_2/t_80
+innodb_encrypted_2/t_81
+innodb_encrypted_2/t_82
+innodb_encrypted_2/t_83
+innodb_encrypted_2/t_84
+innodb_encrypted_2/t_85
+innodb_encrypted_2/t_86
+innodb_encrypted_2/t_87
+innodb_encrypted_2/t_88
+innodb_encrypted_2/t_89
+innodb_encrypted_2/t_9
+innodb_encrypted_2/t_90
+innodb_encrypted_2/t_91
+innodb_encrypted_2/t_92
+innodb_encrypted_2/t_93
+innodb_encrypted_2/t_94
+innodb_encrypted_2/t_95
+innodb_encrypted_2/t_96
+innodb_encrypted_2/t_97
+innodb_encrypted_2/t_98
+innodb_encrypted_2/t_99
SET GLOBAL innodb_encrypt_tables = off;
SET GLOBAL innodb_encryption_threads=4;
-# Wait until all default encrypted tables have been decrypted
-# should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-100
-# should be 200
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-COUNT(*)
-200
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 303
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_2/t_1
+innodb_encrypted_2/t_10
+innodb_encrypted_2/t_100
+innodb_encrypted_2/t_11
+innodb_encrypted_2/t_12
+innodb_encrypted_2/t_13
+innodb_encrypted_2/t_14
+innodb_encrypted_2/t_15
+innodb_encrypted_2/t_16
+innodb_encrypted_2/t_17
+innodb_encrypted_2/t_18
+innodb_encrypted_2/t_19
+innodb_encrypted_2/t_2
+innodb_encrypted_2/t_20
+innodb_encrypted_2/t_21
+innodb_encrypted_2/t_22
+innodb_encrypted_2/t_23
+innodb_encrypted_2/t_24
+innodb_encrypted_2/t_25
+innodb_encrypted_2/t_26
+innodb_encrypted_2/t_27
+innodb_encrypted_2/t_28
+innodb_encrypted_2/t_29
+innodb_encrypted_2/t_3
+innodb_encrypted_2/t_30
+innodb_encrypted_2/t_31
+innodb_encrypted_2/t_32
+innodb_encrypted_2/t_33
+innodb_encrypted_2/t_34
+innodb_encrypted_2/t_35
+innodb_encrypted_2/t_36
+innodb_encrypted_2/t_37
+innodb_encrypted_2/t_38
+innodb_encrypted_2/t_39
+innodb_encrypted_2/t_4
+innodb_encrypted_2/t_40
+innodb_encrypted_2/t_41
+innodb_encrypted_2/t_42
+innodb_encrypted_2/t_43
+innodb_encrypted_2/t_44
+innodb_encrypted_2/t_45
+innodb_encrypted_2/t_46
+innodb_encrypted_2/t_47
+innodb_encrypted_2/t_48
+innodb_encrypted_2/t_49
+innodb_encrypted_2/t_5
+innodb_encrypted_2/t_50
+innodb_encrypted_2/t_51
+innodb_encrypted_2/t_52
+innodb_encrypted_2/t_53
+innodb_encrypted_2/t_54
+innodb_encrypted_2/t_55
+innodb_encrypted_2/t_56
+innodb_encrypted_2/t_57
+innodb_encrypted_2/t_58
+innodb_encrypted_2/t_59
+innodb_encrypted_2/t_6
+innodb_encrypted_2/t_60
+innodb_encrypted_2/t_61
+innodb_encrypted_2/t_62
+innodb_encrypted_2/t_63
+innodb_encrypted_2/t_64
+innodb_encrypted_2/t_65
+innodb_encrypted_2/t_66
+innodb_encrypted_2/t_67
+innodb_encrypted_2/t_68
+innodb_encrypted_2/t_69
+innodb_encrypted_2/t_7
+innodb_encrypted_2/t_70
+innodb_encrypted_2/t_71
+innodb_encrypted_2/t_72
+innodb_encrypted_2/t_73
+innodb_encrypted_2/t_74
+innodb_encrypted_2/t_75
+innodb_encrypted_2/t_76
+innodb_encrypted_2/t_77
+innodb_encrypted_2/t_78
+innodb_encrypted_2/t_79
+innodb_encrypted_2/t_8
+innodb_encrypted_2/t_80
+innodb_encrypted_2/t_81
+innodb_encrypted_2/t_82
+innodb_encrypted_2/t_83
+innodb_encrypted_2/t_84
+innodb_encrypted_2/t_85
+innodb_encrypted_2/t_86
+innodb_encrypted_2/t_87
+innodb_encrypted_2/t_88
+innodb_encrypted_2/t_89
+innodb_encrypted_2/t_9
+innodb_encrypted_2/t_90
+innodb_encrypted_2/t_91
+innodb_encrypted_2/t_92
+innodb_encrypted_2/t_93
+innodb_encrypted_2/t_94
+innodb_encrypted_2/t_95
+innodb_encrypted_2/t_96
+innodb_encrypted_2/t_97
+innodb_encrypted_2/t_98
+innodb_encrypted_2/t_99
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+NAME
+innodb_encrypted_3/t_1
+innodb_encrypted_3/t_10
+innodb_encrypted_3/t_100
+innodb_encrypted_3/t_11
+innodb_encrypted_3/t_12
+innodb_encrypted_3/t_13
+innodb_encrypted_3/t_14
+innodb_encrypted_3/t_15
+innodb_encrypted_3/t_16
+innodb_encrypted_3/t_17
+innodb_encrypted_3/t_18
+innodb_encrypted_3/t_19
+innodb_encrypted_3/t_2
+innodb_encrypted_3/t_20
+innodb_encrypted_3/t_21
+innodb_encrypted_3/t_22
+innodb_encrypted_3/t_23
+innodb_encrypted_3/t_24
+innodb_encrypted_3/t_25
+innodb_encrypted_3/t_26
+innodb_encrypted_3/t_27
+innodb_encrypted_3/t_28
+innodb_encrypted_3/t_29
+innodb_encrypted_3/t_3
+innodb_encrypted_3/t_30
+innodb_encrypted_3/t_31
+innodb_encrypted_3/t_32
+innodb_encrypted_3/t_33
+innodb_encrypted_3/t_34
+innodb_encrypted_3/t_35
+innodb_encrypted_3/t_36
+innodb_encrypted_3/t_37
+innodb_encrypted_3/t_38
+innodb_encrypted_3/t_39
+innodb_encrypted_3/t_4
+innodb_encrypted_3/t_40
+innodb_encrypted_3/t_41
+innodb_encrypted_3/t_42
+innodb_encrypted_3/t_43
+innodb_encrypted_3/t_44
+innodb_encrypted_3/t_45
+innodb_encrypted_3/t_46
+innodb_encrypted_3/t_47
+innodb_encrypted_3/t_48
+innodb_encrypted_3/t_49
+innodb_encrypted_3/t_5
+innodb_encrypted_3/t_50
+innodb_encrypted_3/t_51
+innodb_encrypted_3/t_52
+innodb_encrypted_3/t_53
+innodb_encrypted_3/t_54
+innodb_encrypted_3/t_55
+innodb_encrypted_3/t_56
+innodb_encrypted_3/t_57
+innodb_encrypted_3/t_58
+innodb_encrypted_3/t_59
+innodb_encrypted_3/t_6
+innodb_encrypted_3/t_60
+innodb_encrypted_3/t_61
+innodb_encrypted_3/t_62
+innodb_encrypted_3/t_63
+innodb_encrypted_3/t_64
+innodb_encrypted_3/t_65
+innodb_encrypted_3/t_66
+innodb_encrypted_3/t_67
+innodb_encrypted_3/t_68
+innodb_encrypted_3/t_69
+innodb_encrypted_3/t_7
+innodb_encrypted_3/t_70
+innodb_encrypted_3/t_71
+innodb_encrypted_3/t_72
+innodb_encrypted_3/t_73
+innodb_encrypted_3/t_74
+innodb_encrypted_3/t_75
+innodb_encrypted_3/t_76
+innodb_encrypted_3/t_77
+innodb_encrypted_3/t_78
+innodb_encrypted_3/t_79
+innodb_encrypted_3/t_8
+innodb_encrypted_3/t_80
+innodb_encrypted_3/t_81
+innodb_encrypted_3/t_82
+innodb_encrypted_3/t_83
+innodb_encrypted_3/t_84
+innodb_encrypted_3/t_85
+innodb_encrypted_3/t_86
+innodb_encrypted_3/t_87
+innodb_encrypted_3/t_88
+innodb_encrypted_3/t_89
+innodb_encrypted_3/t_9
+innodb_encrypted_3/t_90
+innodb_encrypted_3/t_91
+innodb_encrypted_3/t_92
+innodb_encrypted_3/t_93
+innodb_encrypted_3/t_94
+innodb_encrypted_3/t_95
+innodb_encrypted_3/t_96
+innodb_encrypted_3/t_97
+innodb_encrypted_3/t_98
+innodb_encrypted_3/t_99
use test;
drop database innodb_encrypted_1;
drop database innodb_encrypted_2;
diff --git a/mysql-test/suite/encryption/t/innodb-first-page-read.test b/mysql-test/suite/encryption/t/innodb-first-page-read.test
index 1fc07159e05..d661e4565d2 100644
--- a/mysql-test/suite/encryption/t/innodb-first-page-read.test
+++ b/mysql-test/suite/encryption/t/innodb-first-page-read.test
@@ -7,6 +7,8 @@ SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
--enable_warnings
+FLUSH STATUS;
+
create database innodb_test;
use innodb_test;
create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb;
@@ -63,16 +65,19 @@ insert into innodb_datadir2 select * from innodb_normal;
insert into innodb_datadir3 select * from innodb_normal;
commit;
+FLUSH STATUS;
+
--echo # Restart server and see how many page 0's are read
--source include/restart_mysqld.inc
---echo # result should be less than actual number of tables
---echo # i.e. < 23 + 3 = 26
-show status like 'innodb_pages0_read%';
+--echo # result should actual number of tables except remote tables could be read twice
+--echo # i.e. < 23 + 3*2 = 29
+
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
use innodb_test;
-show status like 'innodb_pages0_read%';
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
use test;
-show status like 'innodb_pages0_read%';
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
set global innodb_encrypt_tables=OFF;
@@ -80,18 +85,25 @@ set global innodb_encrypt_tables=OFF;
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0
--source include/wait_condition.inc
-show status like 'innodb_pages0_read%';
+--echo # result should be actual number of tables except remote tables could be read twice
+--echo # i.e. < 23 + 3*2 = 29
+
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
use innodb_test;
-show status like 'innodb_pages0_read%';
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
use test;
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
+
+FLUSH STATUS;
--echo # restart and see number read page 0
-- source include/restart_mysqld.inc
-show status like 'innodb_pages0_read%';
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
use innodb_test;
-show status like 'innodb_pages0_read%';
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
use test;
+SELECT VARIABLE_VALUE <= 29 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'innodb_pages0_read';
drop database innodb_test;
-show status like 'innodb_pages0_read%';
+FLUSH STATUS;
diff --git a/mysql-test/suite/encryption/t/innodb_encryption.test b/mysql-test/suite/encryption/t/innodb_encryption.test
index 6e9f80aac0c..aab8c56f072 100644
--- a/mysql-test/suite/encryption/t/innodb_encryption.test
+++ b/mysql-test/suite/encryption/t/innodb_encryption.test
@@ -15,78 +15,29 @@ SET @start_global_value = @@global.innodb_encryption_threads;
SHOW VARIABLES LIKE 'innodb_encrypt%';
-DESCRIBE INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
-
---echo # Wait max 5 min for key encryption threads to encrypt one space
-let $cnt=300;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION > 0`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
---echo # Success!
+SET GLOBAL innodb_encrypt_tables = ON;
+
+--echo # Wait max 10 min for key encryption threads to encrypt all spaces
+--let $wait_timeout= 600
+--let $wait_condition=SELECT COUNT(*) >= 1 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+--source include/wait_condition.inc
+
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
---echo # Wait max 10 min for key encryption threads to encrypt all space
-let $cnt=600;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
--echo # Success!
--echo # Now turn off encryption and wait for threads to decrypt everything
SET GLOBAL innodb_encrypt_tables = off;
---echo # Wait max 10 min for key encryption threads to decrypt all space
-let $cnt=600;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
+--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
+
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+
--echo # Success!
--echo # Shutdown innodb_encryption_threads
@@ -97,84 +48,32 @@ SET GLOBAL innodb_encryption_threads=0;
SET GLOBAL innodb_encrypt_tables = on;
--echo # Wait 15s to check that nothing gets encrypted
-let $cnt=15;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0`;
- if ($success)
- {
- real_sleep 1;
- dec $cnt;
- }
- if (!$success)
- {
- SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
- -- die Failure, tablespace getting encrypted even if innodb_encryption_threads=0
- }
-}
+--let $wait_timeout= 15
+--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+--source include/wait_condition.inc
+
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+
--echo # Success!
--echo # Startup innodb_encryption_threads
SET GLOBAL innodb_encryption_threads=@start_global_value;
---echo # Wait 1 min to check that it start encrypting again
-let $cnt=60;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) > 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 OR KEY_ROTATION_PAGE_NUMBER IS NOT NULL`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
---echo # Success!
+--echo # Wait max 10 min for key encryption threads to encrypt all spaces
+--let $wait_timeout= 600
+--let $wait_condition=SELECT COUNT(*) >=1 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+--source include/wait_condition.inc
+
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
---echo #
---echo # Check that restart with encryption turned off works
---echo # even if spaces are encrypted
---echo #
---echo # First wait max 10 min for key encryption threads to encrypt all spaces
-let $cnt=600;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
--echo # Success!
--echo # Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
-- let $restart_parameters=--innodb_encrypt_tables=0 --innodb_encryption_threads=0
-- source include/restart_mysqld.inc
SHOW VARIABLES LIKE 'innodb_encrypt%';
-SELECT COUNT(*) > 0 as should_be_1
-FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION
-WHERE MIN_KEY_VERSION <> 0;
---echo # Restart mysqld again...with default options
--- let $restart_parameters=
--- source include/restart_mysqld.inc
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
diff --git a/mysql-test/suite/encryption/t/innodb_lotoftables.test b/mysql-test/suite/encryption/t/innodb_lotoftables.test
index 6e87c93df4b..cd3c6a30c07 100644
--- a/mysql-test/suite/encryption/t/innodb_lotoftables.test
+++ b/mysql-test/suite/encryption/t/innodb_lotoftables.test
@@ -48,9 +48,8 @@ show status like 'innodb_pages0_read%';
#
# Verify
#
---echo # should be 100
-
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
+--echo # should be empty
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
#
# This will create 100 tables that are encrypted always
@@ -84,10 +83,10 @@ show status like 'innodb_pages0_read%';
#
# Verify
#
---echo # should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
---echo # should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
+--echo # should contain 100 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+--echo # should contain 0 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
#
# This will create 100 tables that are not encrypted
@@ -121,45 +120,26 @@ show status like 'innodb_pages0_read%';
#
# Verify
#
---echo # should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
---echo # should be 200
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
+--echo # should contain 100 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+--echo # should contain 100 tables
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
use test;
show status like 'innodb_pages0_read%';
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
SET GLOBAL innodb_encrypt_tables = on;
SET GLOBAL innodb_encryption_threads=4;
---echo # Wait until all encrypted tables have been encrypted
-let $cnt=600;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
- SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
+--let $wait_timeout= 600
+--let $wait_condition=SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+--source include/wait_condition.inc
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
show status like 'innodb_pages0_read%';
--echo # Success!
@@ -226,40 +206,19 @@ while ($tables)
show status like 'innodb_pages0_read%';
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
SET GLOBAL innodb_encrypt_tables = off;
SET GLOBAL innodb_encryption_threads=4;
---echo # Wait until all default encrypted tables have been decrypted
-let $cnt=600;
-while ($cnt)
-{
- let $success=`SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0`;
- if ($success)
- {
- let $cnt=0;
- }
- if (!$success)
- {
- real_sleep 1;
- dec $cnt;
- }
-}
-if (!$success)
-{
- SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0;
- SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
- SHOW STATUS LIKE 'innodb_encryption%';
- -- die Timeout waiting for encryption threads
-}
+--let $wait_timeout= 600
+--let $wait_condition=SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
+--source include/wait_condition.inc
---echo # should be 100
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%';
---echo # should be 200
-SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%';
-show status like 'innodb_pages0_read%';
+
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
+SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
#
# Cleanup
diff --git a/storage/innobase/fil/fil0crypt.cc b/storage/innobase/fil/fil0crypt.cc
index faf57a33cab..e106031d8c3 100644
--- a/storage/innobase/fil/fil0crypt.cc
+++ b/storage/innobase/fil/fil0crypt.cc
@@ -1345,7 +1345,7 @@ fil_crypt_realloc_iops(
("thr_no: %u only waited " ULINTPF
"%% skip re-estimate.",
state->thread_no,
- (100 * state->cnt_waited) / state->batch));
+ (100 * state->cnt_waited) / (state->batch ? state->batch : 1)));
}
if (state->estimated_max_iops <= state->allocated_iops) {
@@ -1448,7 +1448,7 @@ fil_crypt_find_space_to_rotate(
/* we need iops to start rotating */
while (!state->should_shutdown() && !fil_crypt_alloc_iops(state)) {
os_event_reset(fil_crypt_threads_event);
- os_event_wait_time(fil_crypt_threads_event, 1000000);
+ os_event_wait_time(fil_crypt_threads_event, 100000);
}
if (state->should_shutdown()) {
@@ -2271,7 +2271,13 @@ fil_crypt_set_thread_cnt(
while(srv_n_fil_crypt_threads_started != srv_n_fil_crypt_threads) {
os_event_reset(fil_crypt_event);
- os_event_wait_time(fil_crypt_event, 1000000);
+ os_event_wait_time(fil_crypt_event, 100000);
+ }
+
+ /* Send a message to encryption threads that there could be
+ something to do. */
+ if (srv_n_fil_crypt_threads) {
+ os_event_set(fil_crypt_threads_event);
}
}
@@ -2424,10 +2430,11 @@ fil_space_crypt_get_status(
fil_crypt_read_crypt_data(const_cast<fil_space_t*>(space));
}
+ status->space = ULINT_UNDEFINED;
fil_space_crypt_t* crypt_data = space->crypt_data;
- status->space = space->id;
if (crypt_data != NULL) {
+ status->space = space->id;
mutex_enter(&crypt_data->mutex);
status->scheme = crypt_data->type;
status->keyserver_requests = crypt_data->keyserver_requests;
diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc
index 1cafb253630..72f851f05a6 100644
--- a/storage/innobase/fil/fil0fil.cc
+++ b/storage/innobase/fil/fil0fil.cc
@@ -4341,11 +4341,20 @@ fil_ibd_open(
skip_validate:
if (err == DB_SUCCESS) {
- fil_space_t* space = fil_space_create(
- space_name, id, flags, purpose,
- df_remote.is_open() ? df_remote.get_crypt_info() :
- df_dict.is_open() ? df_dict.get_crypt_info() :
- df_default.get_crypt_info());
+ const page_size_t page_size(flags);
+
+ const byte* first_page =
+ df_default.is_open() ? df_default.get_first_page() :
+ df_dict.is_open() ? df_dict.get_first_page() :
+ df_remote.get_first_page();
+
+ fil_space_crypt_t* crypt_data = first_page ?
+ fil_space_read_crypt_data(
+ page_size, first_page) : NULL;
+
+ fil_space_t* space = fil_space_create(
+ space_name, id, flags, purpose,
+ crypt_data);
/* We do not measure the size of the file, that is why
we pass the 0 below */
@@ -4663,9 +4672,14 @@ fil_ibd_load(
<< FSP_FLAGS_MEM_COMPRESSION_LEVEL;
}
+ const page_size_t page_size(flags);
+ const byte* first_page = file.get_first_page();
+ fil_space_crypt_t* crypt_data = first_page ?
+ fil_space_read_crypt_data(
+ page_size, first_page) : NULL;
space = fil_space_create(
file.name(), space_id, flags, FIL_TYPE_TABLESPACE,
- file.get_crypt_info());
+ crypt_data);
if (space == NULL) {
return(FIL_LOAD_INVALID);
diff --git a/storage/innobase/fsp/fsp0file.cc b/storage/innobase/fsp/fsp0file.cc
index 4f03ace9d8e..c21c9497735 100644
--- a/storage/innobase/fsp/fsp0file.cc
+++ b/storage/innobase/fsp/fsp0file.cc
@@ -58,11 +58,6 @@ Datafile::shutdown()
ut_free(m_name);
m_name = NULL;
-
- /* The fil_space_t::crypt_data was freed in
- fil_space_free_low(). Invalidate our redundant pointer. */
- m_crypt_info = NULL;
-
free_filepath();
free_first_page();
}
@@ -374,8 +369,6 @@ Datafile::read_first_page(bool read_only_mode)
return(DB_CORRUPTION);
}
- m_crypt_info = fil_space_read_crypt_data(ps, m_first_page);
-
return(err);
}
diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc
index ca0c712f608..5e89312a9de 100644
--- a/storage/innobase/fsp/fsp0fsp.cc
+++ b/storage/innobase/fsp/fsp0fsp.cc
@@ -799,8 +799,12 @@ fsp_header_init(ulint space_id, ulint size, mtr_t* mtr)
fsp_fill_free_list(!is_system_tablespace(space_id),
space, header, mtr);
- if (space->crypt_data) {
- space->crypt_data->write_page0(space, page, mtr);
+ /* Write encryption metadata to page 0 if tablespace is
+ encrypted or encryption is disabled by table option. */
+ if (space->crypt_data &&
+ (space->crypt_data->should_encrypt() ||
+ space->crypt_data->not_encrypted())) {
+ space->crypt_data->write_page0(space, page, mtr);
}
}
diff --git a/storage/innobase/fsp/fsp0space.cc b/storage/innobase/fsp/fsp0space.cc
index 94fae3d973b..9ca2786b935 100644
--- a/storage/innobase/fsp/fsp0space.cc
+++ b/storage/innobase/fsp/fsp0space.cc
@@ -125,7 +125,7 @@ Tablespace::open_or_create(bool is_temp)
m_name, m_space_id, FSP_FLAGS_PAGE_SSIZE(),
is_temp
? FIL_TYPE_TEMPORARY : FIL_TYPE_TABLESPACE,
- it->m_crypt_info);
+ NULL);
}
ut_a(fil_validate());
diff --git a/storage/innobase/fsp/fsp0sysspace.cc b/storage/innobase/fsp/fsp0sysspace.cc
index e4bb11c9a22..cc156a5353a 100644
--- a/storage/innobase/fsp/fsp0sysspace.cc
+++ b/storage/innobase/fsp/fsp0sysspace.cc
@@ -562,8 +562,6 @@ SysTablespace::read_lsn_and_check_flags(lsn_t* flushed_lsn)
err = it->read_first_page(
m_ignore_read_only ? false : srv_read_only_mode);
- m_crypt_info = it->m_crypt_info;
-
if (err != DB_SUCCESS) {
return(err);
}
@@ -919,19 +917,10 @@ SysTablespace::open_or_create(
/* Create the tablespace entry for the multi-file
tablespace in the tablespace manager. */
-
- if (!m_crypt_info) {
- /* Create default crypt info for system
- tablespace if it does not yet exists. */
- m_crypt_info = fil_space_create_crypt_data(
- FIL_ENCRYPTION_DEFAULT,
- FIL_DEFAULT_ENCRYPTION_KEY);
- }
-
space = fil_space_create(
name(), space_id(), flags(), is_temp
? FIL_TYPE_TEMPORARY : FIL_TYPE_TABLESPACE,
- m_crypt_info);
+ NULL);
}
ut_a(fil_validate());
diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc
index 8f04f9d15ee..8880d21aafb 100644
--- a/storage/innobase/handler/i_s.cc
+++ b/storage/innobase/handler/i_s.cc
@@ -8606,6 +8606,12 @@ i_s_dict_fill_tablespaces_encryption(
fil_space_crypt_get_status(space, &status);
+ /* If tablespace id does not match, we did not find
+ encryption information for this tablespace. */
+ if (!space->crypt_data || space->id != status.space) {
+ goto skip;
+ }
+
OK(fields[TABLESPACES_ENCRYPTION_SPACE]->store(space->id, true));
OK(field_store_string(fields[TABLESPACES_ENCRYPTION_NAME],
@@ -8640,6 +8646,7 @@ i_s_dict_fill_tablespaces_encryption(
OK(schema_table_store_record(thd, table_to_fill));
+skip:
DBUG_RETURN(0);
}
/*******************************************************************//**
diff --git a/storage/innobase/include/fsp0file.h b/storage/innobase/include/fsp0file.h
index 974de9c75ed..8f9d45365f5 100644
--- a/storage/innobase/include/fsp0file.h
+++ b/storage/innobase/include/fsp0file.h
@@ -66,8 +66,7 @@ public:
m_first_page_buf(),
m_first_page(),
m_last_os_error(),
- m_file_info(),
- m_crypt_info()
+ m_file_info()
{
/* No op */
}
@@ -89,8 +88,7 @@ public:
m_first_page_buf(),
m_first_page(),
m_last_os_error(),
- m_file_info(),
- m_crypt_info()
+ m_file_info()
{
ut_ad(m_name != NULL);
/* No op */
@@ -110,8 +108,7 @@ public:
m_first_page_buf(),
m_first_page(),
m_last_os_error(),
- m_file_info(),
- m_crypt_info()
+ m_file_info()
{
m_name = mem_strdup(file.m_name);
ut_ad(m_name != NULL);
@@ -169,8 +166,6 @@ public:
it should be reread if needed */
m_first_page_buf = NULL;
m_first_page = NULL;
- /* Do not copy crypt info it is read from first page */
- m_crypt_info = NULL;
return(*this);
}
@@ -321,11 +316,6 @@ public:
return(m_last_os_error);
}
- fil_space_crypt_t* get_crypt_info() const
- {
- return(m_crypt_info);
- }
-
/** Test if the filepath provided looks the same as this filepath
by string comparison. If they are two different paths to the same
file, same_as() will be used to show that after the files are opened.
@@ -339,6 +329,11 @@ public:
@return true if it is the same file, else false */
bool same_as(const Datafile& other) const;
+ const byte* get_first_page() const
+ {
+ return (m_first_page);
+ }
+
private:
/** Free the filepath buffer. */
void free_filepath();
@@ -465,9 +460,6 @@ public:
/* Use field st_ino. */
struct stat m_file_info;
#endif /* WIN32 */
-
- /** Encryption information */
- fil_space_crypt_t* m_crypt_info;
};
diff --git a/storage/innobase/include/fsp0sysspace.h b/storage/innobase/include/fsp0sysspace.h
index b8890adad74..efbd4fc3f24 100644
--- a/storage/innobase/include/fsp0sysspace.h
+++ b/storage/innobase/include/fsp0sysspace.h
@@ -53,8 +53,7 @@ public:
m_last_file_size_max(),
m_created_new_raw(),
m_is_tablespace_full(false),
- m_sanity_checks_done(false),
- m_crypt_info()
+ m_sanity_checks_done(false)
{
/* No op */
}
@@ -264,9 +263,6 @@ private:
/** if false, then sanity checks are still pending */
bool m_sanity_checks_done;
-
- /** Encryption information */
- fil_space_crypt_t* m_crypt_info;
};
/* GLOBAL OBJECTS */
diff --git a/storage/xtradb/fil/fil0crypt.cc b/storage/xtradb/fil/fil0crypt.cc
index 2be598cc18f..99b080ba402 100644
--- a/storage/xtradb/fil/fil0crypt.cc
+++ b/storage/xtradb/fil/fil0crypt.cc
@@ -1403,7 +1403,7 @@ fil_crypt_realloc_iops(
DBUG_PRINT("ib_crypt",
("thr_no: %u only waited %lu%% skip re-estimate.",
state->thread_no,
- (100 * state->cnt_waited) / state->batch));
+ (100 * state->cnt_waited) / (state->batch ? state->batch : 1)));
}
if (state->estimated_max_iops <= state->allocated_iops) {
@@ -1506,7 +1506,7 @@ fil_crypt_find_space_to_rotate(
/* we need iops to start rotating */
while (!state->should_shutdown() && !fil_crypt_alloc_iops(state)) {
os_event_reset(fil_crypt_threads_event);
- os_event_wait_time(fil_crypt_threads_event, 1000000);
+ os_event_wait_time(fil_crypt_threads_event, 100000);
}
if (state->should_shutdown()) {
@@ -2303,7 +2303,7 @@ fil_crypt_set_thread_cnt(
os_thread_create(fil_crypt_thread, NULL, &rotation_thread_id);
ib_logf(IB_LOG_LEVEL_INFO,
- "Creating #%d thread id %lu total threads %u.",
+ "Creating #%d encryption thread id %lu total threads %u.",
i+1, os_thread_pf(rotation_thread_id), new_cnt);
}
} else if (new_cnt < srv_n_fil_crypt_threads) {
@@ -2315,7 +2315,13 @@ fil_crypt_set_thread_cnt(
while(srv_n_fil_crypt_threads_started != srv_n_fil_crypt_threads) {
os_event_reset(fil_crypt_event);
- os_event_wait_time(fil_crypt_event, 1000000);
+ os_event_wait_time(fil_crypt_event, 100000);
+ }
+
+ /* Send a message to encryption threads that there could be
+ something to do. */
+ if (srv_n_fil_crypt_threads) {
+ os_event_set(fil_crypt_threads_event);
}
}
@@ -2461,9 +2467,10 @@ fil_space_crypt_get_status(
ut_ad(space->n_pending_ops > 0);
fil_crypt_read_crypt_data(const_cast<fil_space_t*>(space));
- status->space = space->id;
+ status->space = ULINT_UNDEFINED;
if (fil_space_crypt_t* crypt_data = space->crypt_data) {
+ status->space = space->id;
mutex_enter(&crypt_data->mutex);
status->scheme = crypt_data->type;
status->keyserver_requests = crypt_data->keyserver_requests;
diff --git a/storage/xtradb/fil/fil0fil.cc b/storage/xtradb/fil/fil0fil.cc
index d0d98b4b77d..a8752059b5b 100644
--- a/storage/xtradb/fil/fil0fil.cc
+++ b/storage/xtradb/fil/fil0fil.cc
@@ -654,7 +654,7 @@ fil_node_open_file(
page = static_cast<byte*>(ut_align(buf2, UNIV_PAGE_SIZE));
success = os_file_read(node->handle, page, 0, UNIV_PAGE_SIZE);
- srv_stats.page0_read.add(1);
+ srv_stats.page0_read.inc();
const ulint space_id = fsp_header_get_space_id(page);
ulint flags = fsp_header_get_flags(page);
@@ -2268,7 +2268,7 @@ fil_write_flushed_lsn(
/* If tablespace is not encrypted, stamp flush_lsn to
first page of all system tablespace datafiles to avoid
unnecessary error messages on possible downgrade. */
- if (space->crypt_data->min_key_version == 0) {
+ if (!space->crypt_data || space->crypt_data->min_key_version == 0) {
fil_node_t* node;
ulint sum_of_sizes = 0;
@@ -2414,7 +2414,7 @@ fil_read_first_page(
os_file_read(data_file, page, 0, UNIV_PAGE_SIZE);
- srv_stats.page0_read.add(1);
+ srv_stats.page0_read.inc();
/* The FSP_HEADER on page 0 is only valid for the first file
in a tablespace. So if this is not the first datafile, leave
diff --git a/storage/xtradb/fsp/fsp0fsp.cc b/storage/xtradb/fsp/fsp0fsp.cc
index a2c11224ffd..02683e298cb 100644
--- a/storage/xtradb/fsp/fsp0fsp.cc
+++ b/storage/xtradb/fsp/fsp0fsp.cc
@@ -729,7 +729,11 @@ fsp_header_init(ulint space_id, ulint size, mtr_t* mtr)
fil_space_t* space = fil_space_acquire(space_id);
ut_ad(space);
- if (space->crypt_data) {
+ /* Write encryption metadata to page 0 if tablespace is
+ encrypted or encryption is disabled by table option. */
+ if (space->crypt_data &&
+ (space->crypt_data->should_encrypt() ||
+ space->crypt_data->not_encrypted())) {
space->crypt_data->write_page0(page, mtr);
}
diff --git a/storage/xtradb/handler/i_s.cc b/storage/xtradb/handler/i_s.cc
index 9cef04c4244..ca2c76c31ad 100644
--- a/storage/xtradb/handler/i_s.cc
+++ b/storage/xtradb/handler/i_s.cc
@@ -8524,6 +8524,12 @@ i_s_dict_fill_tablespaces_encryption(
fil_space_crypt_get_status(space, &status);
+ /* If tablespace id does not match, we did not find
+ encryption information for this tablespace. */
+ if (!space->crypt_data || space->id != status.space) {
+ goto skip;
+ }
+
OK(fields[TABLESPACES_ENCRYPTION_SPACE]->store(space->id));
OK(field_store_string(fields[TABLESPACES_ENCRYPTION_NAME],
@@ -8558,6 +8564,7 @@ i_s_dict_fill_tablespaces_encryption(
OK(schema_table_store_record(thd, table_to_fill));
+skip:
DBUG_RETURN(0);
}
/*******************************************************************//**
diff --git a/storage/xtradb/srv/srv0start.cc b/storage/xtradb/srv/srv0start.cc
index fadbeacbc97..7d614a12d8c 100644
--- a/storage/xtradb/srv/srv0start.cc
+++ b/storage/xtradb/srv/srv0start.cc
@@ -1228,11 +1228,6 @@ check_first_page:
ut_a(ret);
if (i == 0) {
- if (!crypt_data) {
- crypt_data = fil_space_create_crypt_data(FIL_ENCRYPTION_DEFAULT,
- FIL_DEFAULT_ENCRYPTION_KEY);
- }
-
flags = FSP_FLAGS_PAGE_SSIZE();
fil_space_create(name, 0, flags, FIL_TABLESPACE,