summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/encryption/t/innodb-checksum-algorithm.test')
-rw-r--r--mysql-test/suite/encryption/t/innodb-checksum-algorithm.test83
1 files changed, 83 insertions, 0 deletions
diff --git a/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test b/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test
new file mode 100644
index 00000000..157fb25b
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-checksum-algorithm.test
@@ -0,0 +1,83 @@
+-- source include/innodb_checksum_algorithm.inc
+-- source include/innodb_page_size.inc
+-- source include/have_file_key_management_plugin.inc
+
+SET @saved_file_per_table = @@global.innodb_file_per_table;
+SET @saved_encrypt_tables = @@global.innodb_encrypt_tables;
+SET @saved_encryption_threads = @@global.innodb_encryption_threads;
+SET @saved_encryption_key_id = @@global.innodb_default_encryption_key_id;
+
+SET GLOBAL innodb_file_per_table = ON;
+SET GLOBAL innodb_encrypt_tables = ON;
+SET GLOBAL innodb_encryption_threads = 4;
+
+SET GLOBAL innodb_default_encryption_key_id=4;
+
+let MYSQLD_DATADIR =`SELECT @@datadir`;
+
+# ROW_FORMAT=COMPRESSED is unavailable with innodb_page_size=32k or 64k
+let $row_format_compressed= `select case when @@global.innodb_page_size>16384
+then 'ROW_FORMAT=DYNAMIC' else 'ROW_FORMAT=COMPRESSED' end`;
+
+eval create table tce(a serial, b blob, index(b(10))) engine=innodb
+$row_format_compressed encrypted=yes;
+eval create table tc(a serial, b blob, index(b(10))) engine=innodb
+$row_format_compressed encrypted=no;
+eval create table te(a serial, b blob, index(b(10))) engine=innodb
+encrypted=yes;
+eval create table t(a serial, b blob, index(b(10))) engine=innodb
+encrypted=no;
+eval create table tpe(a serial, b blob, index(b(10))) engine=innodb
+page_compressed=yes encrypted=yes;
+eval create table tp(a serial, b blob, index(b(10))) engine=innodb
+page_compressed=yes encrypted=no;
+
+begin;
+eval insert into tce(b) values (repeat('secret',20));
+eval insert into tc(b) values (repeat('secret',20));
+eval insert into te(b) values (repeat('secret',20));
+eval insert into t(b) values (repeat('secret',20));
+eval insert into tpe(b) values (repeat('secret',20));
+eval insert into tp(b) values (repeat('secret',20));
+commit;
+
+eval FLUSH TABLES tce, tc, te, t, tpe, tp FOR EXPORT;
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_backup_tablespaces("test", ("tce", "tc", "te", "t", "tpe", "tp"));
+EOF
+--list_files $MYSQLD_DATADIR/test
+UNLOCK TABLES;
+
+ALTER TABLE tce DISCARD TABLESPACE;
+ALTER TABLE tc DISCARD TABLESPACE;
+ALTER TABLE te DISCARD TABLESPACE;
+ALTER TABLE t DISCARD TABLESPACE;
+ALTER TABLE tpe DISCARD TABLESPACE;
+ALTER TABLE tp DISCARD TABLESPACE;
+
+perl;
+do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
+ib_restore_tablespaces("test", ("tce", "tc", "te", "t", "tpe", "tp"));
+EOF
+
+ALTER TABLE tce IMPORT TABLESPACE;
+update tce set b=substr(b,1);
+ALTER TABLE tc IMPORT TABLESPACE;
+update tc set b=substr(b,1);
+ALTER TABLE te IMPORT TABLESPACE;
+update te set b=substr(b,1);
+ALTER TABLE t IMPORT TABLESPACE;
+update t set b=substr(b,1);
+ALTER TABLE tpe IMPORT TABLESPACE;
+update tpe set b=substr(b,1);
+ALTER TABLE tp IMPORT TABLESPACE;
+update tp set b=substr(b,1);
+
+CHECK TABLE tce, tc, te, t, tpe, tp;
+DROP TABLE tce, tc, te, t, tpe, tp;
+
+SET GLOBAL innodb_file_per_table = @saved_file_per_table;
+SET GLOBAL innodb_encrypt_tables = @saved_encrypt_tables;
+SET GLOBAL innodb_encryption_threads = @saved_encryption_threads;
+SET GLOBAL innodb_default_encryption_key_id = @saved_encryption_key_id;