summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/include/innodb-page-compression.inc288
-rw-r--r--mysql-test/std_data/t3_be.ibdbin0 -> 98304 bytes
-rw-r--r--mysql-test/std_data/t3_le.ibdbin0 -> 98304 bytes
-rw-r--r--mysql-test/std_data/t4_be.ibdbin0 -> 98304 bytes
-rw-r--r--mysql-test/std_data/t4_le.ibdbin0 -> 98304 bytes
-rw-r--r--mysql-test/suite/encryption/r/innodb-bad-key-change.result10
-rw-r--r--mysql-test/suite/encryption/r/innodb-bad-key-change2.result4
-rw-r--r--mysql-test/suite/encryption/r/innodb-bad-key-change4.result2
-rw-r--r--mysql-test/suite/encryption/r/innodb-compressed-blob.result2
-rw-r--r--mysql-test/suite/encryption/r/innodb-corrupted.result146
-rw-r--r--mysql-test/suite/encryption/r/innodb-encryption-disable.result3
-rw-r--r--mysql-test/suite/encryption/r/innodb-force-corrupt.result8
-rw-r--r--mysql-test/suite/encryption/r/innodb-import.result39
-rw-r--r--mysql-test/suite/encryption/r/innodb-missing-key.result10
-rw-r--r--mysql-test/suite/encryption/r/innodb_encryption-page-compression.result331
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change.test10
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change2.test4
-rw-r--r--mysql-test/suite/encryption/t/innodb-bad-key-change4.test2
-rw-r--r--mysql-test/suite/encryption/t/innodb-compressed-blob.test2
-rw-r--r--mysql-test/suite/encryption/t/innodb-corrupted.test25
-rw-r--r--mysql-test/suite/encryption/t/innodb-encryption-disable.test3
-rw-r--r--mysql-test/suite/encryption/t/innodb-force-corrupt.test8
-rw-r--r--mysql-test/suite/encryption/t/innodb-import.test74
-rw-r--r--mysql-test/suite/encryption/t/innodb-missing-key.test12
-rw-r--r--mysql-test/suite/encryption/t/innodb_encryption-page-compression.test149
-rw-r--r--mysql-test/suite/innodb/include/innodb-page-compression.inc290
-rw-r--r--mysql-test/suite/innodb/r/doublewrite-compressed.result253
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result227
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_default.result223
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_lz4.result227
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_lzma.result227
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_lzo.result227
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_snappy.result227
-rw-r--r--mysql-test/suite/innodb/r/innodb-page_compression_zip.result227
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug14147491.result2
-rw-r--r--mysql-test/suite/innodb/t/doublewrite-compressed.test439
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_lz4.test8
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_lzma.test10
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_lzo.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_snappy.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb-page_compression_zip.test9
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug14147491.test4
43 files changed, 2608 insertions, 1151 deletions
diff --git a/mysql-test/include/innodb-page-compression.inc b/mysql-test/include/innodb-page-compression.inc
new file mode 100644
index 00000000000..7a9c9651e7a
--- /dev/null
+++ b/mysql-test/include/innodb-page-compression.inc
@@ -0,0 +1,288 @@
+if (!$INNOCHECKSUM) {
+ --echo Need innochecksum binary
+ --die Need innochecksum binary
+}
+
+--disable_warnings
+set global innodb_file_format = `Barracuda`;
+set global innodb_file_per_table = on;
+--enable_warnings
+
+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.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t2 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t3 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t4 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+
+--disable_query_log
+begin;
+let $i = 10;
+while ($i)
+{
+ insert into t0(b) values(REPEAT('Aa',50));
+ insert into t0(b) values(REPEAT('a',100));
+ insert into t0(b) values(REPEAT('b',100));
+ insert into t0(b) values(REPEAT('0',100));
+ insert into t0(b) values(REPEAT('1',100));
+ dec $i;
+}
+
+insert into t1 select * from t0;
+insert into t2 select * from t0;
+insert into t3 select * from t0;
+insert into t4 select * from t0;
+insert into t5 select * from t0;
+insert into t6 select * from t0;
+insert into t7 select * from t0;
+insert into t8 select * from t0;
+insert into t9 select * from t0;
+commit;
+--enable_query_log
+
+select count(*) from t1;
+select count(*) from t3;
+select count(*) from t4;
+select count(*) from t5;
+select count(*) from t6;
+select count(*) from t6;
+select count(*) from t7;
+select count(*) from t8;
+select count(*) from t9;
+
+#
+# Wait until pages are really compressed
+#
+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 $MYSQLD_DATADIR=`select @@datadir`
+
+# shutdown before grep
+
+--source include/shutdown_mysqld.inc
+
+--let t1_IBD = $MYSQLD_DATADIR/test/t0.ibd
+--let SEARCH_RANGE = 10000000
+--let SEARCH_PATTERN=AaAaAaAa
+--echo # t0 expected FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
+--echo # t1 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t2.ibd
+--echo # t2 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t3.ibd
+--echo # t3 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t4.ibd
+--echo # t4 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t5.ibd
+--echo # t5 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t6.ibd
+--echo # t6 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t7.ibd
+--echo # t7 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t8.ibd
+--echo # t8 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+--let t1_IBD = $MYSQLD_DATADIR/test/t9.ibd
+--echo # t9 page compressed expected NOT FOUND
+-- let SEARCH_FILE=$t1_IBD
+-- source include/search_pattern_in_file.inc
+
+#
+# Run innochecksum to all tables, all tables should be ok
+#
+let t_IBD = $MYSQLD_DATADIR/test/t0.ibd;
+--exec $INNOCHECKSUM $t_IBD
+let $i=9;
+while $($i > 0) {
+--echo # Run innochecksum on t$i
+let t_IBD = $MYSQLD_DATADIR/test/t$i.ibd;
+--exec $INNOCHECKSUM $t_IBD
+dec $i;
+}
+
+-- source include/start_mysqld.inc
+
+select count(*) from t0;
+select count(*) from t1;
+select count(*) from t3;
+select count(*) from t4;
+select count(*) from t5;
+select count(*) from t6;
+select count(*) from t7;
+select count(*) from t8;
+select count(*) from t9;
+
+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
+
+let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
+let MYSQLD_DATADIR=`select @@datadir`;
+
+--echo # Restart server
+--source include/shutdown_mysqld.inc
+
+--echo # Corrupting tablespaces...
+
+#
+# Now we corrupt page compressed pages as follows:
+# (1) compression method
+# (2) payload size
+# (3) data
+# (4) checksum
+#
+# Page 0 is not compressed or encrypted
+#
+perl;
+sub ib_write_value {
+ my($fh, $file, $pos, $len, $val) = @_;
+ seek($fh, $pos, SEEK_SET) or die "$0: seek $file to pos $pos: $!";;
+ syswrite($fh, $val, $len) == $len or die "$0: write to $file val $val len $len: $!";;
+}
+sub ib_corrupt_table {
+ my($file, $pos, $val, $len) = @_;
+ open(my $fh, "+<", $file) or die "$0: open $file: $!";
+ binmode $fh;
+ ib_write_value($fh, $file, $pos, $len, $val);
+ close $fh or die "$0: close $file: $!";
+}
+sub ib_read_value {
+ my($fh, $file, $pos, $len) = @_;
+ seek($fh, $pos, SEEK_SET) or die "$0: seek $file to pos $pos: $!";
+ sysread($fh, $buf, $len) == $len or die "$0: read $file : $!";
+ return $buf;
+}
+
+my($pos) = $ENV{'INNODB_PAGE_SIZE'} * 3;
+my($file) = "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
+open($fh, "+<", $file) or die "$0: open $file : $!";
+binmode $fh;
+
+# Find out the page type, compression method location is based on that
+# Note that FIL_HEADER is not encrypted
+my($ptype) = unpack("n", ib_read_value($fh, $file, $pos+24, 2));
+if ($ptype == 34354) {
+ $pos += 32; # FLUSH_LSN_OR_KEY_VERSION + 6
+} else {
+ $pos += 42; # FIL_PAGE_DATA + 2
+}
+
+# Corrupt compression method by decreasing it by one, if zero set 6
+# Note that compression method is not encrypted
+my($cmethod) = unpack("n", ib_read_value($fh, $file, $pos, 2));
+$cmethod--;
+if ($cmethod == 0) {
+ $cmethod = 6;
+}
+
+ib_write_value($fh, $file, $pos, 2, pack("n", $cmethod));
+close $fh or die $!;
+
+# (2) corrupt payload size by decreasing size by 50 and if 0 set it to 20
+# note that payload size is not encrypted
+my($pos) = $ENV{'INNODB_PAGE_SIZE'} * 3 + 40;
+my($file) = "$ENV{MYSQLD_DATADIR}/test/t2.ibd";
+open($fh, "+<", $file) or die "$0: open $file : $!";
+my($size) = unpack("n", ib_read_value($fh, $file, $pos, 2));
+$size -= 50;
+if ($size <= 0) {
+ $size = 20;
+}
+ib_write_value($fh, $file, $pos, 2, pack("n", $size));
+close $fh or die $!;
+
+# (3) Corrupt data
+
+ib_corrupt_table("$ENV{MYSQLD_DATADIR}/test/t3.ibd", $ENV{'INNODB_PAGE_SIZE'} * 3 + 42,
+ "deadaaaaffffbbbb",14);
+
+# (4) Corrupt checksum
+my($pos) = $ENV{'INNODB_PAGE_SIZE'} * 3;
+my($file) = "$ENV{MYSQLD_DATADIR}/test/t4.ibd";
+open($fh, "+<", $file) or die "$0: open $file : $!";
+
+# Find out the page type, checksum location is based on that
+# Note that FIL_HEADER is not encrypted
+my($ptype) = unpack("n", ib_read_value($fh, $file, $pos + 24, 2));
+if ($ptype == 37401) {
+ $pos += 30;
+}
+close $fh or die $!;
+ib_corrupt_table($file, $pos, pack("n", 0xdead), 2);
+EOF
+
+--echo # Corruption done
+
+#
+# Run innochecksum to page compressed (and maybe encrypted) tables
+# now we should detect corruptions on compressed cases.
+# In compressed and encrypted cases innochecksum can't decrypt
+# or decompress so we do not detect all corruptions e.g. corruption on
+# compression method.
+#
+--echo # Run innochecksum on t$i
+let t_IBD = $MYSQLD_DATADIR/test/t$i.ibd;
+--error 0,1
+--exec $INNOCHECKSUM $t_IBD
+
+let $i=4;
+while $($i > 1) {
+--echo # Run innochecksum on t$i
+let t_IBD = $MYSQLD_DATADIR/test/t$i.ibd;
+--error 1
+--exec $INNOCHECKSUM $t_IBD
+dec $i;
+}
+
+--echo # Start server again
+--source include/start_mysqld.inc
+
+#
+# Server should not crash on corrupted tables
+#
+--error ER_NOT_KEYFILE, ER_GET_ERRMSG
+select * from t1;
+--error ER_NOT_KEYFILE, ER_GET_ERRMSG
+select * from t2;
+--error ER_NOT_KEYFILE, ER_GET_ERRMSG
+select * from t3;
+--error ER_NOT_KEYFILE, ER_GET_ERRMSG
+select * from t4;
+select count(*) from t5;
+select count(*) from t6;
+select count(*) from t7;
+select count(*) from t8;
+select count(*) from t9;
+
+# We should be able to drop even corrupted tables
+
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/std_data/t3_be.ibd b/mysql-test/std_data/t3_be.ibd
new file mode 100644
index 00000000000..7cb320f10e2
--- /dev/null
+++ b/mysql-test/std_data/t3_be.ibd
Binary files differ
diff --git a/mysql-test/std_data/t3_le.ibd b/mysql-test/std_data/t3_le.ibd
new file mode 100644
index 00000000000..7cb320f10e2
--- /dev/null
+++ b/mysql-test/std_data/t3_le.ibd
Binary files differ
diff --git a/mysql-test/std_data/t4_be.ibd b/mysql-test/std_data/t4_be.ibd
new file mode 100644
index 00000000000..68b74fd31c1
--- /dev/null
+++ b/mysql-test/std_data/t4_be.ibd
Binary files differ
diff --git a/mysql-test/std_data/t4_le.ibd b/mysql-test/std_data/t4_le.ibd
new file mode 100644
index 00000000000..66692ca5992
--- /dev/null
+++ b/mysql-test/std_data/t4_le.ibd
Binary files differ
diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change.result b/mysql-test/suite/encryption/r/innodb-bad-key-change.result
index d581b98513d..baf2a98307a 100644
--- a/mysql-test/suite/encryption/r/innodb-bad-key-change.result
+++ b/mysql-test/suite/encryption/r/innodb-bad-key-change.result
@@ -1,7 +1,9 @@
-call mtr.add_suppression("InnoDB: The page .*");
-call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* ");
-call mtr.add_suppression("Plugin 'file_key_management' .*");
-call mtr.add_suppression("mysqld: File .*");
+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: 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.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1.ibd cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t2.ibd cannot be decrypted.");
+call mtr.add_suppression("mysqld: File .*keysbad3.txt' not found .*");
# Start server with keys2.txt
SET GLOBAL innodb_file_format = `Barracuda`;
diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change2.result b/mysql-test/suite/encryption/r/innodb-bad-key-change2.result
index 94ed922a0ec..dbf5f24f876 100644
--- a/mysql-test/suite/encryption/r/innodb-bad-key-change2.result
+++ b/mysql-test/suite/encryption/r/innodb-bad-key-change2.result
@@ -1,5 +1,5 @@
-call mtr.add_suppression("InnoDB: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1new 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: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1new.ibd cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1.ibd cannot be decrypted.");
call mtr.add_suppression("Couldn't load plugins from 'file_key_management.*");
call mtr.add_suppression("InnoDB: Table \'\"test\".\"t1\"\' tablespace is set as discarded.");
SET GLOBAL innodb_file_format = `Barracuda`;
diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change4.result b/mysql-test/suite/encryption/r/innodb-bad-key-change4.result
index 227b8cc3deb..b80788d9eb1 100644
--- a/mysql-test/suite/encryption/r/innodb-bad-key-change4.result
+++ b/mysql-test/suite/encryption/r/innodb-bad-key-change4.result
@@ -1,4 +1,4 @@
-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: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1.ibd cannot be decrypted.");
call mtr.add_suppression("InnoDB: Cannot open table .*");
call mtr.add_suppression("InnoDB: .ibd file is missing for table test/.*");
call mtr.add_suppression("Couldn't load plugins from 'file_key_management.*");
diff --git a/mysql-test/suite/encryption/r/innodb-compressed-blob.result b/mysql-test/suite/encryption/r/innodb-compressed-blob.result
index 15c2a410948..b9889df00e9 100644
--- a/mysql-test/suite/encryption/r/innodb-compressed-blob.result
+++ b/mysql-test/suite/encryption/r/innodb-compressed-blob.result
@@ -1,5 +1,5 @@
call mtr.add_suppression("InnoDB: However key management plugin or used key_version .*");
-call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-3] cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t[1-3].ibd cannot be decrypted.");
call mtr.add_suppression("Unable to decompress space ..test.t[1-3].ibd \\[[1-9][0-9]*:[0-9]+\\]");
# Restart mysqld --file-key-management-filename=keys2.txt
SET GLOBAL innodb_file_format = `Barracuda`;
diff --git a/mysql-test/suite/encryption/r/innodb-corrupted.result b/mysql-test/suite/encryption/r/innodb-corrupted.result
new file mode 100644
index 00000000000..be745777c04
--- /dev/null
+++ b/mysql-test/suite/encryption/r/innodb-corrupted.result
@@ -0,0 +1,146 @@
+set global innodb_encrypt_tables='FORCE';
+select @@innodb_encrypt_tables;
+@@innodb_encrypt_tables
+FORCE
+set global innodb_default_encryption_key_id=4;
+select @@innodb_default_encryption_key_id;
+@@innodb_default_encryption_key_id
+1
+set global innodb_compression_algorithm=zlib;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+zlib
+set global innodb_file_format = `Barracuda`;
+set global innodb_file_per_table = on;
+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.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t2 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t3 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t4 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+50
+select count(*) from t3;
+count(*)
+50
+select count(*) from t4;
+count(*)
+50
+select count(*) from t5;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t7;
+count(*)
+50
+select count(*) from t8;
+count(*)
+50
+select count(*) from t9;
+count(*)
+50
+# t0 expected FOUND
+NOT FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+50
+select count(*) from t1;
+count(*)
+50
+select count(*) from t3;
+count(*)
+50
+select count(*) from t4;
+count(*)
+50
+select count(*) from t5;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t7;
+count(*)
+50
+select count(*) from t8;
+count(*)
+50
+select count(*) from t9;
+count(*)
+50
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t0
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Start server again
+select * from t1;
+Got one of the listed errors
+select * from t2;
+Got one of the listed errors
+select * from t3;
+Got one of the listed errors
+select * from t4;
+Got one of the listed errors
+select count(*) from t5;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t7;
+count(*)
+50
+select count(*) from t8;
+count(*)
+50
+select count(*) from t9;
+count(*)
+50
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/encryption/r/innodb-encryption-disable.result b/mysql-test/suite/encryption/r/innodb-encryption-disable.result
index dd2b025553e..58cbe6db632 100644
--- a/mysql-test/suite/encryption/r/innodb-encryption-disable.result
+++ b/mysql-test/suite/encryption/r/innodb-encryption-disable.result
@@ -1,5 +1,4 @@
-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: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t5 cannot be decrypted.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[1-9] page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
call mtr.add_suppression("Couldn't load plugins from 'file_key_management*");
create table t5 (
`intcol1` int(32) DEFAULT NULL,
diff --git a/mysql-test/suite/encryption/r/innodb-force-corrupt.result b/mysql-test/suite/encryption/r/innodb-force-corrupt.result
index 3f3a2afb02d..7d63f47d17e 100644
--- a/mysql-test/suite/encryption/r/innodb-force-corrupt.result
+++ b/mysql-test/suite/encryption/r/innodb-force-corrupt.result
@@ -1,9 +1,5 @@
-CALL mtr.add_suppression("InnoDB: Database page corruption on disk or a failed .*");
-CALL mtr.add_suppression("InnoDB: Corruption: Block in space_id .*");
-CALL mtr.add_suppression("InnoDB: However key management plugin or used key_version .*");
-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: 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=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup.");
SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
set global innodb_compression_algorithm = 1;
diff --git a/mysql-test/suite/encryption/r/innodb-import.result b/mysql-test/suite/encryption/r/innodb-import.result
index 1b4ec053d21..372798bf423 100644
--- a/mysql-test/suite/encryption/r/innodb-import.result
+++ b/mysql-test/suite/encryption/r/innodb-import.result
@@ -1,25 +1,37 @@
-call mtr.add_suppression("InnoDB: Table \'\"test\".\"t[1-2]_[l|b]e\"\' tablespace is set as discarded.");
+call mtr.add_suppression("InnoDB: Table \'\"test\".\"t[1-4]_[l|b]e\"\' tablespace is set as discarded.");
SET GLOBAL innodb_file_format = `Barracuda`;
create table t1_le(a int) engine=innodb encrypted=yes;
create table t2_le(a int) engine=innodb row_format=compressed encrypted=yes;
+create table t3_le(a int) engine=innodb page_compressed=yes;
+create table t4_le(a int) engine=innodb page_compressed=yes encrypted=yes;
create table t1_be(a int) engine=innodb encrypted=yes;
create table t2_be(a int) engine=innodb row_format=compressed encrypted=yes;
+create table t3_be(a int) engine=innodb page_compressed=yes;
+create table t4_be(a int) engine=innodb page_compressed=yes encrypted=yes;
ALTER TABLE t1_le DISCARD TABLESPACE;
ALTER TABLE t2_le DISCARD TABLESPACE;
+ALTER TABLE t3_le DISCARD TABLESPACE;
+ALTER TABLE t4_le DISCARD TABLESPACE;
ALTER TABLE t1_be DISCARD TABLESPACE;
ALTER TABLE t2_be DISCARD TABLESPACE;
+ALTER TABLE t3_be DISCARD TABLESPACE;
+ALTER TABLE t4_be DISCARD TABLESPACE;
+# innochecksum t1_le
+# innochecksum t2_le
+# innochecksum t3_le
+# innochecksum t4_le
+# innochecksum t1_be
+# innochecksum t2_be
+# innochecksum t3_be
+# innochecksum t3_be
ALTER TABLE t1_le IMPORT TABLESPACE;
-Warnings:
-Warning 1810 IO Read error: (2, No such file or directory) Error opening './test/t1_le.cfg', will attempt to import without schema verification
ALTER TABLE t1_be IMPORT TABLESPACE;
-Warnings:
-Warning 1810 IO Read error: (2, No such file or directory) Error opening './test/t1_be.cfg', will attempt to import without schema verification
ALTER TABLE t2_le IMPORT TABLESPACE;
-Warnings:
-Warning 1810 IO Read error: (2, No such file or directory) Error opening './test/t2_le.cfg', will attempt to import without schema verification
ALTER TABLE t2_be IMPORT TABLESPACE;
-Warnings:
-Warning 1810 IO Read error: (2, No such file or directory) Error opening './test/t2_be.cfg', will attempt to import without schema verification
+ALTER TABLE t3_le IMPORT TABLESPACE;
+ALTER TABLE t3_be IMPORT TABLESPACE;
+ALTER TABLE t4_le IMPORT TABLESPACE;
+ALTER TABLE t4_be IMPORT TABLESPACE;
select * from t1_le;
a
select * from t1_be;
@@ -28,5 +40,14 @@ select * from t2_le;
a
select * from t2_be;
a
+select * from t3_le;
+a
+select * from t3_be;
+a
+select * from t4_le;
+a
+select * from t4_be;
+a
drop table t1_le, t1_be, t2_le, t2_be;
+drop table t3_le, t3_be, t4_le, t4_be;
SET GLOBAL innodb_file_format = Default;
diff --git a/mysql-test/suite/encryption/r/innodb-missing-key.result b/mysql-test/suite/encryption/r/innodb-missing-key.result
index 2f2cc025973..cd01f4c4004 100644
--- a/mysql-test/suite/encryption/r/innodb-missing-key.result
+++ b/mysql-test/suite/encryption/r/innodb-missing-key.result
@@ -1,6 +1,6 @@
-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: 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: 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.");
+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. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.");
# 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;
@@ -37,9 +37,9 @@ COUNT(1)
SELECT COUNT(1) FROM t2,t1 where t2.a = t1.a;
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(1) FROM t1 where b = 'ab';
-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
+Got one of the listed errors
SELECT COUNT(1) 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
+Got one of the listed errors
# Start server with keys2.txt
SELECT COUNT(1) FROM t1;
diff --git a/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result b/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result
index 14933e526c4..4acfca801ab 100644
--- a/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result
+++ b/mysql-test/suite/encryption/r/innodb_encryption-page-compression.result
@@ -1,189 +1,146 @@
-SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_encryption_threads = 4;
+select @@innodb_encryption_threads;
+@@innodb_encryption_threads
+4
SET GLOBAL innodb_encrypt_tables = on;
-set global innodb_compression_algorithm = 1;
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-Level Code Message
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed1;
-Table Create Table
-innodb_page_compressed1 CREATE TABLE `innodb_page_compressed1` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=1
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed2;
-Table Create Table
-innodb_page_compressed2 CREATE TABLE `innodb_page_compressed2` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=2
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed3;
-Table Create Table
-innodb_page_compressed3 CREATE TABLE `innodb_page_compressed3` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=3
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed4;
-Table Create Table
-innodb_page_compressed4 CREATE TABLE `innodb_page_compressed4` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=4
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed5;
-Table Create Table
-innodb_page_compressed5 CREATE TABLE `innodb_page_compressed5` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=5
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed6;
-Table Create Table
-innodb_page_compressed6 CREATE TABLE `innodb_page_compressed6` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=6
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed7;
-Table Create Table
-innodb_page_compressed7 CREATE TABLE `innodb_page_compressed7` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=7
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed8;
-Table Create Table
-innodb_page_compressed8 CREATE TABLE `innodb_page_compressed8` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-Level Code Message
-show create table innodb_page_compressed9;
-Table Create Table
-innodb_page_compressed9 CREATE TABLE `innodb_page_compressed9` (
- `c1` int(11) DEFAULT NULL,
- `b` char(20) DEFAULT NULL
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=9
-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 innodb_normal values(current_num,'testing..');
-set current_num = current_num + 1;
-end while;
-end//
-commit;
-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;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-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;
-count(*)
-2000
-select count(*) from innodb_page_compressed2 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed3 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed4 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed5 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed6 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed7 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed8 where c1 < 500000;
-count(*)
-2000
-select count(*) from innodb_page_compressed9 where c1 < 500000;
-count(*)
-2000
-flush tables innodb_page_compressed1, innodb_page_compressed2,
-innodb_page_compressed3, innodb_page_compressed4,
-innodb_page_compressed5, innodb_page_compressed6,
-innodb_page_compressed7, innodb_page_compressed8,
-innodb_page_compressed9 for export;
-unlock tables;
-# Wait until dirty pages are compressed and encrypted
-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_page_compressed';
-variable_value > 0
-1
-SET GLOBAL innodb_encryption_threads = 4;
-SET GLOBAL innodb_encrypt_tables = off;
-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;
-flush tables innodb_page_compressed1, innodb_page_compressed2,
-innodb_page_compressed3, innodb_page_compressed4,
-innodb_page_compressed5, innodb_page_compressed6,
-innodb_page_compressed7, innodb_page_compressed8,
-innodb_page_compressed9 for export;
-unlock tables;
-# Wait until dirty pages are compressed and encrypted 2
-unlock tables;
-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
-drop procedure innodb_insert_proc;
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
+select @@innodb_encrypt_tables;
+@@innodb_encrypt_tables
+ON
+set global innodb_compression_algorithm = zlib;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+zlib
+set global innodb_file_format = `Barracuda`;
+set global innodb_file_per_table = on;
+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.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t2 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t3 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t4 page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+50
+select count(*) from t3;
+count(*)
+50
+select count(*) from t4;
+count(*)
+50
+select count(*) from t5;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t7;
+count(*)
+50
+select count(*) from t8;
+count(*)
+50
+select count(*) from t9;
+count(*)
+50
+# t0 expected FOUND
+NOT FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+50
+select count(*) from t1;
+count(*)
+50
+select count(*) from t3;
+count(*)
+50
+select count(*) from t4;
+count(*)
+50
+select count(*) from t5;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t7;
+count(*)
+50
+select count(*) from t8;
+count(*)
+50
+select count(*) from t9;
+count(*)
+50
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t0
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Start server again
+select * from t1;
+Got one of the listed errors
+select * from t2;
+Got one of the listed errors
+select * from t3;
+Got one of the listed errors
+select * from t4;
+Got one of the listed errors
+select count(*) from t5;
+count(*)
+50
+select count(*) from t6;
+count(*)
+50
+select count(*) from t7;
+count(*)
+50
+select count(*) from t8;
+count(*)
+50
+select count(*) from t9;
+count(*)
+50
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change.test b/mysql-test/suite/encryption/t/innodb-bad-key-change.test
index 6fa5fc9847f..5416d3f1273 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change.test
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change.test
@@ -8,10 +8,12 @@
# table exists and encryption service is not available.
#
-call mtr.add_suppression("InnoDB: The page .*");
-call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* ");
-call mtr.add_suppression("Plugin 'file_key_management' .*");
-call mtr.add_suppression("mysqld: File .*");
+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: 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.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1.ibd cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t2.ibd cannot be decrypted.");
+call mtr.add_suppression("mysqld: File .*keysbad3.txt' not found .*");
--echo
--echo # Start server with keys2.txt
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change2.test b/mysql-test/suite/encryption/t/innodb-bad-key-change2.test
index 52ee442c725..c2459534f17 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change2.test
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change2.test
@@ -8,8 +8,8 @@
# 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 \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t1new 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: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1new.ibd cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[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.*");
call mtr.add_suppression("InnoDB: Table \'\"test\".\"t1\"\' tablespace is set as discarded.");
diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change4.test b/mysql-test/suite/encryption/t/innodb-bad-key-change4.test
index 14d88614f55..d38e962bd79 100644
--- a/mysql-test/suite/encryption/t/innodb-bad-key-change4.test
+++ b/mysql-test/suite/encryption/t/innodb-bad-key-change4.test
@@ -7,7 +7,7 @@
# MDEV-8768: Server crash at file btr0btr.ic line 122 when checking encrypted table using incorrect keys
#
-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: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t1.ibd cannot be decrypted.");
call mtr.add_suppression("InnoDB: Cannot open table .*");
call mtr.add_suppression("InnoDB: .ibd file is missing for table test/.*");
# Suppression for builds where file_key_management plugin is linked statically
diff --git a/mysql-test/suite/encryption/t/innodb-compressed-blob.test b/mysql-test/suite/encryption/t/innodb-compressed-blob.test
index cb69f22f745..8af2363aed8 100644
--- a/mysql-test/suite/encryption/t/innodb-compressed-blob.test
+++ b/mysql-test/suite/encryption/t/innodb-compressed-blob.test
@@ -5,7 +5,7 @@
-- source include/not_embedded.inc
call mtr.add_suppression("InnoDB: However key management plugin or used key_version .*");
-call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file test/t[1-3] cannot be decrypted.");
+call mtr.add_suppression("InnoDB: The page \\[page id: space=[0-9]+, page number=[0-9]+\\] in file ./test/t[1-3].ibd cannot be decrypted.");
call mtr.add_suppression("Unable to decompress space ..test.t[1-3].ibd \\[[1-9][0-9]*:[0-9]+\\]");
--echo # Restart mysqld --file-key-management-filename=keys2.txt
diff --git a/mysql-test/suite/encryption/t/innodb-corrupted.test b/mysql-test/suite/encryption/t/innodb-corrupted.test
new file mode 100644
index 00000000000..10a958b2468
--- /dev/null
+++ b/mysql-test/suite/encryption/t/innodb-corrupted.test
@@ -0,0 +1,25 @@
+# Don't test under embedded as we restart server
+-- source include/not_embedded.inc
+# Require InnoDB
+-- source include/have_innodb.inc
+-- source include/have_file_key_management_plugin.inc
+
+let $encrypt=`SELECT @@innodb_compression_algorithm`;
+let $encrypt=`SELECT @@innodb_default_encryption_key_id`;
+
+set global innodb_encrypt_tables='FORCE';
+select @@innodb_encrypt_tables;
+set global innodb_default_encryption_key_id=4;
+select @@innodb_default_encryption_key_id;
+set global innodb_compression_algorithm=zlib;
+select @@innodb_compression_algorithm;
+
+--source include/innodb-page-compression.inc
+
+--disable_query_log
+set global innodb_encrypt_tables=default;
+set global innodb_default_encryption_key_id=default;
+set global innodb_compression_algorithm=default;
+--enable_query_log
+
+
diff --git a/mysql-test/suite/encryption/t/innodb-encryption-disable.test b/mysql-test/suite/encryption/t/innodb-encryption-disable.test
index 38f36076c73..2aa4a89c8d4 100644
--- a/mysql-test/suite/encryption/t/innodb-encryption-disable.test
+++ b/mysql-test/suite/encryption/t/innodb-encryption-disable.test
@@ -7,8 +7,7 @@
# MDEV-9559: Server without encryption configs crashes if selecting from an implicitly encrypted table
#
-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: The page \[page id: space=[0-9]+, page number=[0-9]+\] in file test/t5 cannot be decrypted.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[1-9] page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
# Suppression for builds where file_key_management plugin is linked statically
call mtr.add_suppression("Couldn't load plugins from 'file_key_management*");
diff --git a/mysql-test/suite/encryption/t/innodb-force-corrupt.test b/mysql-test/suite/encryption/t/innodb-force-corrupt.test
index dd4ee51b1eb..cb6440127cc 100644
--- a/mysql-test/suite/encryption/t/innodb-force-corrupt.test
+++ b/mysql-test/suite/encryption/t/innodb-force-corrupt.test
@@ -7,12 +7,8 @@
# Don't test under embedded
-- source include/not_embedded.inc
-CALL mtr.add_suppression("InnoDB: Database page corruption on disk or a failed .*");
-CALL mtr.add_suppression("InnoDB: Corruption: Block in space_id .*");
-CALL mtr.add_suppression("InnoDB: However key management plugin or used key_version .*");
-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: 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=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\.");
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup.");
--disable_warnings
SET GLOBAL innodb_file_format = `Barracuda`;
diff --git a/mysql-test/suite/encryption/t/innodb-import.test b/mysql-test/suite/encryption/t/innodb-import.test
index ab4c20f3ea5..d96910b29d5 100644
--- a/mysql-test/suite/encryption/t/innodb-import.test
+++ b/mysql-test/suite/encryption/t/innodb-import.test
@@ -1,11 +1,17 @@
--source include/have_innodb.inc
--source include/have_file_key_management_plugin.inc
+if (!$INNOCHECKSUM) {
+ --echo Need innochecksum binary
+ --die Need innochecksum binary
+}
+
#
-# MDEV-15032 Encrypted database created on big endian machine cannot be used on little endian machine
+# MDEV-15032: Encrypted database created on big endian machine cannot be used on little endian machine
+# MDEV-13103: InnoDB crash recovery fails to decompress a page in buf_dblwr_process()
#
-call mtr.add_suppression("InnoDB: Table \'\"test\".\"t[1-2]_[l|b]e\"\' tablespace is set as discarded.");
+call mtr.add_suppression("InnoDB: Table \'\"test\".\"t[1-4]_[l|b]e\"\' tablespace is set as discarded.");
--disable_warnings
SET GLOBAL innodb_file_format = `Barracuda`;
@@ -13,41 +19,87 @@ SET GLOBAL innodb_file_format = `Barracuda`;
create table t1_le(a int) engine=innodb encrypted=yes;
create table t2_le(a int) engine=innodb row_format=compressed encrypted=yes;
+create table t3_le(a int) engine=innodb page_compressed=yes;
+create table t4_le(a int) engine=innodb page_compressed=yes encrypted=yes;
create table t1_be(a int) engine=innodb encrypted=yes;
create table t2_be(a int) engine=innodb row_format=compressed encrypted=yes;
-
-#
-# TODO: In MDEV-13103 InnoDB crash recovery fails to decompress a page in buf_dblwr_process()
-# add page compressed tables.
-#
+create table t3_be(a int) engine=innodb page_compressed=yes;
+create table t4_be(a int) engine=innodb page_compressed=yes encrypted=yes;
ALTER TABLE t1_le DISCARD TABLESPACE;
ALTER TABLE t2_le DISCARD TABLESPACE;
+ALTER TABLE t3_le DISCARD TABLESPACE;
+ALTER TABLE t4_le DISCARD TABLESPACE;
ALTER TABLE t1_be DISCARD TABLESPACE;
ALTER TABLE t2_be DISCARD TABLESPACE;
+ALTER TABLE t3_be DISCARD TABLESPACE;
+ALTER TABLE t4_be DISCARD TABLESPACE;
let $MYSQLD_DATADIR =`SELECT @@datadir`;
#
+# Test innochecksum
+#
+
+--disable_result_log
+
+--echo # innochecksum t1_le
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t1_le.ibd
+--echo # innochecksum t2_le
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t2_le.ibd
+--echo # innochecksum t3_le
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t3_le.ibd
+--echo # innochecksum t4_le
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t4_le.ibd
+--echo # innochecksum t1_be
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t1_be.ibd
+--echo # innochecksum t2_be
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t2_be.ibd
+--echo # innochecksum t3_be
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t3_be.ibd
+--echo # innochecksum t3_be
+--exec $INNOCHECKSUM $MYSQL_TEST_DIR/std_data/t4_be.ibd
+
+--enable_result_log
+
+#
# Copy exported datafiles
#
---copy_file std_data/t1_le.ibd $MYSQLD_DATADIR/test/t1_le.ibd
---copy_file std_data/t1_be.ibd $MYSQLD_DATADIR/test/t1_be.ibd
---copy_file std_data/t2_le.ibd $MYSQLD_DATADIR/test/t2_le.ibd
---copy_file std_data/t2_be.ibd $MYSQLD_DATADIR/test/t2_be.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t1_le.ibd $MYSQLD_DATADIR/test/t1_le.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t1_be.ibd $MYSQLD_DATADIR/test/t1_be.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t2_le.ibd $MYSQLD_DATADIR/test/t2_le.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t2_be.ibd $MYSQLD_DATADIR/test/t2_be.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t3_le.ibd $MYSQLD_DATADIR/test/t3_le.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t3_be.ibd $MYSQLD_DATADIR/test/t3_be.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t4_le.ibd $MYSQLD_DATADIR/test/t4_le.ibd
+--copy_file $MYSQL_TEST_DIR/std_data/t4_be.ibd $MYSQLD_DATADIR/test/t4_be.ibd
+#
+# We do not use .cfg so disable warnings
+#
+--disable_warnings
ALTER TABLE t1_le IMPORT TABLESPACE;
ALTER TABLE t1_be IMPORT TABLESPACE;
ALTER TABLE t2_le IMPORT TABLESPACE;
ALTER TABLE t2_be IMPORT TABLESPACE;
+ALTER TABLE t3_le IMPORT TABLESPACE;
+ALTER TABLE t3_be IMPORT TABLESPACE;
+ALTER TABLE t4_le IMPORT TABLESPACE;
+ALTER TABLE t4_be IMPORT TABLESPACE;
+--enable_warnings
select * from t1_le;
select * from t1_be;
select * from t2_le;
select * from t2_be;
+select * from t3_le;
+select * from t3_be;
+select * from t4_le;
+select * from t4_be;
drop table t1_le, t1_be, t2_le, t2_be;
+drop table t3_le, t3_be, t4_le, t4_be;
--disable_warnings
SET GLOBAL innodb_file_format = Default;
diff --git a/mysql-test/suite/encryption/t/innodb-missing-key.test b/mysql-test/suite/encryption/t/innodb-missing-key.test
index 07a2b16211c..6fbf8b35882 100644
--- a/mysql-test/suite/encryption/t/innodb-missing-key.test
+++ b/mysql-test/suite/encryption/t/innodb-missing-key.test
@@ -7,9 +7,9 @@
# MDEV-11004: Unable to start (Segfault or os error 2) when encryption key missing
#
-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: 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: 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.");
+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. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.");
--echo
--echo # Start server with keys2.txt
@@ -45,11 +45,11 @@ CREATE TABLE t4(a int not null primary key auto_increment, b varchar(128)) engin
SELECT SLEEP(5);
SELECT COUNT(1) FROM t3;
SELECT COUNT(1) FROM t2;
---error 1296
+--error ER_GET_ERRMSG
SELECT COUNT(1) FROM t2,t1 where t2.a = t1.a;
---error 1296
+--error ER_GET_ERRMSG,ER_NO_SUCH_TABLE_IN_ENGINE
SELECT COUNT(1) FROM t1 where b = 'ab';
---error 1296
+--error ER_GET_ERRMSG,ER_NO_SUCH_TABLE_IN_ENGINE
SELECT COUNT(1) FROM t1;
--echo
diff --git a/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test b/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test
index fe132c0c59b..8b0d7ca8c15 100644
--- a/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test
+++ b/mysql-test/suite/encryption/t/innodb_encryption-page-compression.test
@@ -2,150 +2,11 @@
-- source include/have_example_key_management_plugin.inc
-- source include/not_embedded.inc
---disable_query_log
-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_encryption_threads = 4;
+select @@innodb_encryption_threads;
SET GLOBAL innodb_encrypt_tables = on;
---enable_warnings
-
-# zlib
-set global innodb_compression_algorithm = 1;
-
-create table innodb_normal (c1 int, b char(20)) engine=innodb;
-show warnings;
-create table innodb_page_compressed1 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=1;
-show warnings;
-show create table innodb_page_compressed1;
-create table innodb_page_compressed2 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=2;
-show warnings;
-show create table innodb_page_compressed2;
-create table innodb_page_compressed3 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=3;
-show warnings;
-show create table innodb_page_compressed3;
-create table innodb_page_compressed4 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=4;
-show warnings;
-show create table innodb_page_compressed4;
-create table innodb_page_compressed5 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=5;
-show warnings;
-show create table innodb_page_compressed5;
-create table innodb_page_compressed6 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=6;
-show warnings;
-show create table innodb_page_compressed6;
-create table innodb_page_compressed7 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=7;
-show warnings;
-show create table innodb_page_compressed7;
-create table innodb_page_compressed8 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=8;
-show warnings;
-show create table innodb_page_compressed8;
-create table innodb_page_compressed9 (c1 int, b char(20)) engine=innodb page_compressed=1 page_compression_level=9;
-show warnings;
-show create table innodb_page_compressed9;
-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 innodb_normal values(current_num,'testing..');
- set current_num = current_num + 1;
- end while;
-end//
-delimiter ;//
-commit;
-
-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;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-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;
-
-flush tables innodb_page_compressed1, innodb_page_compressed2,
-innodb_page_compressed3, innodb_page_compressed4,
-innodb_page_compressed5, innodb_page_compressed6,
-innodb_page_compressed7, innodb_page_compressed8,
-innodb_page_compressed9 for export;
-
-unlock tables;
-
---echo # Wait until dirty pages are compressed and 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
-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_page_compressed';
-
---source include/restart_mysqld.inc
-
-SET GLOBAL innodb_encryption_threads = 4;
-SET GLOBAL innodb_encrypt_tables = off;
-
-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;
-
-flush tables innodb_page_compressed1, innodb_page_compressed2,
-innodb_page_compressed3, innodb_page_compressed4,
-innodb_page_compressed5, innodb_page_compressed6,
-innodb_page_compressed7, innodb_page_compressed8,
-innodb_page_compressed9 for export;
-unlock tables;
-
---echo # Wait until dirty pages are compressed and encrypted 2
-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
-unlock tables;
-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_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;
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-
-# reset system
---disable_query_log
-EVAL SET GLOBAL innodb_encrypt_tables = $innodb_encrypt_tables_orig;
-EVAL SET GLOBAL innodb_encryption_threads = $innodb_encryption_threads_orig;
---enable_query_log
+select @@innodb_encrypt_tables;
+set global innodb_compression_algorithm = zlib;
+select @@innodb_compression_algorithm;
+--source include/innodb-page-compression.inc
diff --git a/mysql-test/suite/innodb/include/innodb-page-compression.inc b/mysql-test/suite/innodb/include/innodb-page-compression.inc
index 3acbeaf0988..8a0036d61e0 100644
--- a/mysql-test/suite/innodb/include/innodb-page-compression.inc
+++ b/mysql-test/suite/innodb/include/innodb-page-compression.inc
@@ -1,53 +1,63 @@
+if (!$INNOCHECKSUM) {
+ --echo Need innochecksum binary
+ --die Need innochecksum binary
+}
+
--disable_warnings
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
--enable_warnings
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
--disable_query_log
begin;
-let $i = 2000;
+let $i = 100;
while ($i)
{
- insert into innodb_normal(b) values(REPEAT('Aa',50));
- insert into innodb_normal(b) values(REPEAT('a',100));
- insert into innodb_normal(b) values(REPEAT('b',100));
- insert into innodb_normal(b) values(REPEAT('0',100));
- insert into innodb_normal(b) values(REPEAT('1',100));
+ insert into t0(b) values(REPEAT('Aa',50));
+ insert into t0(b) values(REPEAT('a',100));
+ insert into t0(b) values(REPEAT('b',100));
+ insert into t0(b) values(REPEAT('0',100));
+ insert into t0(b) values(REPEAT('1',100));
dec $i;
}
-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;
-insert into innodb_page_compressed4 select * from innodb_normal;
-insert into innodb_page_compressed5 select * from innodb_normal;
-insert into innodb_page_compressed6 select * from innodb_normal;
-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;
+insert into t1 select * from t0;
+insert into t2 select * from t0;
+insert into t3 select * from t0;
+insert into t4 select * from t0;
+insert into t5 select * from t0;
+insert into t6 select * from t0;
+insert into t7 select * from t0;
+insert into t8 select * from t0;
+insert into t9 select * from t0;
commit;
--enable_query_log
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed3;
-select count(*) from innodb_page_compressed4;
-select count(*) from innodb_page_compressed5;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed7;
-select count(*) from innodb_page_compressed8;
-select count(*) from innodb_page_compressed9;
+select count(*) from t1;
+select count(*) from t3;
+select count(*) from t4;
+select count(*) from t5;
+select count(*) from t6;
+select count(*) from t6;
+select count(*) from t7;
+select count(*) from t8;
+select count(*) from t9;
#
# Wait until pages are really compressed
@@ -61,71 +71,205 @@ let $wait_condition= select variable_value > 0 from information_schema.global_st
--source include/shutdown_mysqld.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_normal.ibd
+--let t1_IBD = $MYSQLD_DATADIR/test/t0.ibd
--let SEARCH_RANGE = 10000000
--let SEARCH_PATTERN=AaAaAaAa
---echo # innodb_normal expected FOUND
+--echo # t0 expected FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed1.ibd
---echo # innodb_page_compressed1 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
+--echo # t1 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed2.ibd
---echo # innodb_page_compressed2 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t2.ibd
+--echo # t2 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed3.ibd
---echo # innodb_page_compressed3 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t3.ibd
+--echo # t3 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed4.ibd
---echo # innodb_page_compressed4 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t4.ibd
+--echo # t4 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed5.ibd
---echo # innodb_page_compressed5 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t5.ibd
+--echo # t5 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed6.ibd
---echo # innodb_page_compressed6 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t6.ibd
+--echo # t6 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed7.ibd
---echo # innodb_page_compressed7 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t7.ibd
+--echo # t7 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed8.ibd
---echo # innodb_page_compressed8 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t8.ibd
+--echo # t8 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
---let t1_IBD = $MYSQLD_DATADIR/test/innodb_page_compressed9.ibd
---echo # innodb_page_compressed9 page compressed expected NOT FOUND
+--let t1_IBD = $MYSQLD_DATADIR/test/t9.ibd
+--echo # t9 page compressed expected NOT FOUND
-- let SEARCH_FILE=$t1_IBD
-- source include/search_pattern_in_file.inc
+#
+# Run innochecksum to all tables, all tables should be ok
+#
+let t_IBD = $MYSQLD_DATADIR/test/t0.ibd;
+--exec $INNOCHECKSUM $t_IBD
+let $i=9;
+while $($i > 0) {
+--echo # Run innochecksum on t$i
+let t_IBD = $MYSQLD_DATADIR/test/t$i.ibd;
+--exec $INNOCHECKSUM $t_IBD
+dec $i;
+}
+
-- source include/start_mysqld.inc
-select count(*) from innodb_page_compressed1;
-select count(*) from innodb_page_compressed3;
-select count(*) from innodb_page_compressed4;
-select count(*) from innodb_page_compressed5;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed6;
-select count(*) from innodb_page_compressed7;
-select count(*) from innodb_page_compressed8;
-select count(*) from innodb_page_compressed9;
+select count(*) from t0;
+select count(*) from t1;
+select count(*) from t3;
+select count(*) from t4;
+select count(*) from t5;
+select count(*) from t6;
+select count(*) from t7;
+select count(*) from t8;
+select count(*) from t9;
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 table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
+let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
+let MYSQLD_DATADIR=`select @@datadir`;
+
+--echo # Restart server
+--source include/shutdown_mysqld.inc
+
+--echo # Corrupting tablespaces...
+
+#
+# Now we corrupt page compressed pages as follows:
+# (1) compression method
+# (2) payload size
+# (3) data
+# (4) checksum
+#
+# Page 0 is not compressed or encrypted
+#
+perl;
+sub ib_write_value {
+ my($fh, $file, $pos, $len, $val) = @_;
+ seek($fh, $pos, SEEK_SET) or die "$0: seek $file to pos $pos: $!";;
+ syswrite($fh, $val, $len) == $len or die "$0: write to $file val $val len $len: $!";;
+}
+sub ib_corrupt_table {
+ my($file, $pos, $val, $len) = @_;
+ open(my $fh, "+<", $file) or die "$0: open $file: $!";
+ binmode $fh;
+ ib_write_value($fh, $file, $pos, $len, $val);
+ close $fh or die "$0: close $file: $!";
+}
+sub ib_read_value {
+ my($fh, $file, $pos, $len) = @_;
+ seek($fh, $pos, SEEK_SET) or die "$0: seek $file to pos $pos: $!";
+ sysread($fh, $buf, $len) == $len or die "$0: read $file : $!";
+ return $buf;
+}
+
+my($pos) = $ENV{'INNODB_PAGE_SIZE'} * 3;
+my($file) = "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
+open($fh, "+<", $file) or die "$0: open $file : $!";
+binmode $fh;
+
+# Find out the page type, compression method location is based on that
+my($ptype) = unpack("n", ib_read_value($fh, $file, $pos+24, 2));
+if ($ptype == 34354) {
+ $pos += 32; # FLUSH_LSN_OR_KEY_VERSION + 6
+} else {
+ $pos += 40; # FIL_PAGE_DATA + 2
+}
+
+# Corrupt compression method by decreasing it by one, if zero set 6
+# Note that compression method is not encrypted
+my($cmethod) = unpack("n", ib_read_value($fh, $file, $pos, 2));
+$cmethod--;
+if ($cmethod == 0) {
+ $cmethod = 6;
+}
+
+ib_write_value($fh, $file, $pos, 2, pack("n", $cmethod));
+close $fh or die $!;
+
+# (2) corrupt payload size by decreasing size by 50 and if 0 set it to 20
+# note that payload size is not encrypted
+my($pos) = $ENV{'INNODB_PAGE_SIZE'} * 3 + 38;
+my($file) = "$ENV{MYSQLD_DATADIR}/test/t2.ibd";
+open($fh, "+<", $file) or die "$0: open $file : $!";
+my($size) = unpack("n", ib_read_value($fh, $file, $pos, 2));
+$size -= 50;
+if ($size <= 0) {
+ $size = 20;
+}
+ib_write_value($fh, $file, $pos, 2, pack("n", $size));
+close $fh or die $!;
+
+# (3) Corrupt data
+
+ib_corrupt_table("$ENV{MYSQLD_DATADIR}/test/t3.ibd", $ENV{'INNODB_PAGE_SIZE'} * 3 + 42,
+ "deadaaaaffffbbbb",14);
+
+# (4) Corrupt checksum
+my($pos) = $ENV{'INNODB_PAGE_SIZE'} * 3;
+my($file) = "$ENV{MYSQLD_DATADIR}/test/t4.ibd";
+open($fh, "+<", $file) or die "$0: open $file : $!";
+
+# Find out the page type, checksum location is based on that
+my($ptype) = unpack("n", ib_read_value($fh, $file, $pos + 24, 2));
+if ($ptype == 37401) {
+ $pos += 30;
+}
+ib_write_value($fh, $file, $pos, 4, pack("N", 1020102010));
+close $fh or die $!;
+EOF
+
+--echo # Corruption done
+
+#
+# Run innochecksum to page compressed (and maybe encrypted) tables
+# now we should detect corruptions
+#
+let $i=4;
+while $($i > 0) {
+--echo # Run innochecksum on t$i
+let t_IBD = $MYSQLD_DATADIR/test/t$i.ibd;
+--error 1
+--exec $INNOCHECKSUM $t_IBD
+dec $i;
+}
+
+--echo # Start server again
+--source include/start_mysqld.inc
+
+#
+# Server should not crash on corrupted tables
+#
+--error ER_NOT_KEYFILE
+select * from t1;
+--error ER_NOT_KEYFILE
+select * from t2;
+--error ER_NOT_KEYFILE
+select * from t3;
+--error ER_NOT_KEYFILE
+select * from t4;
+select count(*) from t5;
+select count(*) from t6;
+select count(*) from t7;
+select count(*) from t8;
+select count(*) from t9;
+
+# We should be able to drop even corrupted tables
+
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/doublewrite-compressed.result b/mysql-test/suite/innodb/r/doublewrite-compressed.result
new file mode 100644
index 00000000000..b9b0be62b5e
--- /dev/null
+++ b/mysql-test/suite/innodb/r/doublewrite-compressed.result
@@ -0,0 +1,253 @@
+#
+# Bug #17335427 INNODB CAN NOT USE THE DOUBLEWRITE BUFFER PROPERLY
+# Bug #18144349 INNODB CANNOT USE THE DOUBLEWRITE BUFFER FOR THE FIRST
+# PAGE OF SYSTEM TABLESPACE
+#
+SET GLOBAL innodb_fast_shutdown = 0;
+show variables like 'innodb_doublewrite';
+Variable_name Value
+innodb_doublewrite ON
+show variables like 'innodb_fil_make_page_dirty_debug';
+Variable_name Value
+innodb_fil_make_page_dirty_debug 0
+show variables like 'innodb_saved_page_number_debug';
+Variable_name Value
+innodb_saved_page_number_debug 0
+set global innodb_file_per_table=ON;
+set global innodb_file_format='Barracuda';
+create table t1 (f1 int primary key, f2 blob) engine=innodb page_compressed=yes;
+start transaction;
+insert into t1 values(1, repeat('#',12));
+insert into t1 values(2, repeat('+',12));
+insert into t1 values(3, repeat('/',12));
+insert into t1 values(4, repeat('-',12));
+insert into t1 values(5, repeat('.',12));
+commit work;
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if first page of user
+# tablespace is full of zeroes.
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+# Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+begin;
+insert into t1 values (6, repeat('%', 12));
+# Make the first page dirty for table t1
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+# Ensure that dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Make the first page (page_no=0) of the user tablespace
+# full of zeroes.
+#
+# MDEV-11623: Use old FSP_SPACE_FLAGS in the doublewrite buffer.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if first page of user
+# tablespace is corrupted.
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+# Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+begin;
+insert into t1 values (6, repeat('%', 12));
+# Make the first page dirty for table t1
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+# Ensure that dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Corrupt the first page (page_no=0) of the user tablespace.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if 2nd page of user
+# tablespace is full of zeroes.
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+# Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+begin;
+insert into t1 values (6, repeat('%', 400));
+# Make the 2nd page dirty for table t1
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+# Ensure that dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Make the 2nd page (page_no=1) of the tablespace all zeroes.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if 2nd page of user
+# tablespace is corrupted.
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+# Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+begin;
+insert into t1 values (6, repeat('%', 400));
+# Make the 2nd page dirty for table t1
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+# Ensure that the dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Corrupt the 2nd page (page_no=1) of the user tablespace.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if first page of
+# system tablespace is full of zeroes.
+begin;
+insert into t1 values (6, repeat('%', 400));
+# Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Make the first page dirty for system tablespace
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = 0;
+# Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Make the first page (page_no=0) of the system tablespace
+# all zeroes.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if first page of
+# system tablespace is corrupted.
+begin;
+insert into t1 values (6, repeat('%', 400));
+# Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Make the first page dirty for system tablespace
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = 0;
+# Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Corrupt the first page (page_no=0) of the system tablespace.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if 2nd page of
+# system tablespace is full of zeroes.
+begin;
+insert into t1 values (6, repeat('%', 400));
+# Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Make the second page dirty for system tablespace
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = 0;
+# Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Make the 2nd page (page_no=1) of the system tablespace
+# all zeroes.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+# Test End
+# ---------------------------------------------------------------
+# Test Begin: Test if recovery works if 2nd page of
+# system tablespace is corrupted.
+begin;
+insert into t1 values (6, repeat('%', 400));
+# Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+# Make the second page dirty for system tablespace
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = 0;
+# Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+# Kill the server
+# Make the 2nd page (page_no=1) of the system tablespace
+# all zeroes.
+check table t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+FOUND /\[ERROR\] InnoDB: .* in tablespace.*test.t1.*/ in mysqld.1.err
+select f1, f2 from t1;
+f1 f2
+1 ############
+2 ++++++++++++
+3 ////////////
+4 ------------
+5 ............
+drop table t1;
+#
+# MDEV-12600 crash during install_db with innodb_page_size=32K
+# and ibdata1=3M
+#
+SELECT * FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
+FOUND /\[ERROR\] InnoDB: Cannot create doublewrite buffer/ in mysqld.1.err
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result b/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result
index 3a3d6f92cac..d0530d5bef3 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_bzip2.result
@@ -1,98 +1,135 @@
set global innodb_compression_algorithm = bzip2;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+bzip2
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_default.result b/mysql-test/suite/innodb/r/innodb-page_compression_default.result
index 18f7fb5e04a..9cf3e969ba8 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_default.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_default.result
@@ -1,98 +1,133 @@
call mtr.add_suppression("InnoDB: Compression failed for space [0-9]+ name test/innodb_page_compressed[0-9] len [0-9]+ err 2 write_size [0-9]+.");
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
#done
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result b/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
index d60eb62ec15..2722e36c34a 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
@@ -1,98 +1,135 @@
set global innodb_compression_algorithm = lz4;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+lz4
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result b/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result
index b3cc9c9b627..aa1dbec22ae 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_lzma.result
@@ -1,98 +1,135 @@
set global innodb_compression_algorithm = lzma;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+lzma
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result b/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
index b6c5bc32bb7..204ff52d3f5 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
@@ -1,98 +1,135 @@
set global innodb_compression_algorithm = lzo;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+lzo
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result b/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
index 74cfa9bce3a..693e5ed8f3b 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_snappy.result
@@ -1,99 +1,136 @@
call mtr.add_suppression("InnoDB: Compression failed for space [0-9]+ name test/innodb_page_compressed[0-9] len [0-9]+ err 2 write_size [0-9]+.");
set global innodb_compression_algorithm = snappy;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+snappy
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/innodb-page_compression_zip.result b/mysql-test/suite/innodb/r/innodb-page_compression_zip.result
index 3644890f921..d98b4e8e229 100644
--- a/mysql-test/suite/innodb/r/innodb-page_compression_zip.result
+++ b/mysql-test/suite/innodb/r/innodb-page_compression_zip.result
@@ -1,98 +1,135 @@
set global innodb_compression_algorithm = zlib;
+select @@innodb_compression_algorithm;
+@@innodb_compression_algorithm
+zlib
set global innodb_file_format = `Barracuda`;
set global innodb_file_per_table = on;
-create table innodb_normal (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
-create table innodb_page_compressed1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
-create table innodb_page_compressed2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
-create table innodb_page_compressed3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
-create table innodb_page_compressed4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
-create table innodb_page_compressed5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
-create table innodb_page_compressed6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
-create table innodb_page_compressed7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
-create table innodb_page_compressed8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
-create table innodb_page_compressed9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-# innodb_normal expected FOUND
-FOUND /AaAaAaAa/ in innodb_normal.ibd
-# innodb_page_compressed1 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed1.ibd
-# innodb_page_compressed2 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed2.ibd
-# innodb_page_compressed3 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed3.ibd
-# innodb_page_compressed4 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed4.ibd
-# innodb_page_compressed5 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed5.ibd
-# innodb_page_compressed6 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed6.ibd
-# innodb_page_compressed7 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed7.ibd
-# innodb_page_compressed8 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed8.ibd
-# innodb_page_compressed9 page compressed expected NOT FOUND
-NOT FOUND /AaAaAaAa/ in innodb_page_compressed9.ibd
-select count(*) from innodb_page_compressed1;
-count(*)
-10000
-select count(*) from innodb_page_compressed3;
-count(*)
-10000
-select count(*) from innodb_page_compressed4;
-count(*)
-10000
-select count(*) from innodb_page_compressed5;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed6;
-count(*)
-10000
-select count(*) from innodb_page_compressed7;
-count(*)
-10000
-select count(*) from innodb_page_compressed8;
-count(*)
-10000
-select count(*) from innodb_page_compressed9;
-count(*)
-10000
-drop table innodb_normal;
-drop table innodb_page_compressed1;
-drop table innodb_page_compressed2;
-drop table innodb_page_compressed3;
-drop table innodb_page_compressed4;
-drop table innodb_page_compressed5;
-drop table innodb_page_compressed6;
-drop table innodb_page_compressed7;
-drop table innodb_page_compressed8;
-drop table innodb_page_compressed9;
-#done
+call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[0-9]+ page \\[page id: space=[0-9]+, page number=[0-9]+\\]. You may have to recover from a backup.");
+call mtr.add_suppression("InnoDB: Page \\[page id: space=[0-9]+, page number= [0-9]+\\] in file ./test/t[0-9]+.ibd may be corrupted. Post compression checksum [0-9]+ stored [0-9]+ compression_method [ZLIB|SNAPPY|LZ4|LZO|LZMA|BZIP2]");
+call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=[0-9]+, page number=[0-9]+\\]");
+call mtr.add_suppression("mysqld: Index for table 't[0-9]+' is corrupt; try to repair it");
+create table t0 (c1 int not null auto_increment primary key, b char(200)) engine=innodb;
+create table t1 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=1;
+create table t2 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=2;
+create table t3 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=3;
+create table t4 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=4;
+create table t5 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=5;
+create table t6 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=6;
+create table t7 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=7;
+create table t8 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=8;
+create table t9 (c1 int not null auto_increment primary key, b char(200)) engine=innodb page_compressed=1 page_compression_level=9;
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# t0 expected FOUND
+FOUND /AaAaAaAa/ in t0.ibd
+# t1 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t1.ibd
+# t2 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t2.ibd
+# t3 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t3.ibd
+# t4 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t4.ibd
+# t5 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t5.ibd
+# t6 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t6.ibd
+# t7 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t7.ibd
+# t8 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t8.ibd
+# t9 page compressed expected NOT FOUND
+NOT FOUND /AaAaAaAa/ in t9.ibd
+# Run innochecksum on t9
+# Run innochecksum on t8
+# Run innochecksum on t7
+# Run innochecksum on t6
+# Run innochecksum on t5
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+select count(*) from t0;
+count(*)
+500
+select count(*) from t1;
+count(*)
+500
+select count(*) from t3;
+count(*)
+500
+select count(*) from t4;
+count(*)
+500
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+# Restart server
+# Corrupting tablespaces...
+# Corruption done
+# Run innochecksum on t4
+# Run innochecksum on t3
+# Run innochecksum on t2
+# Run innochecksum on t1
+# Start server again
+select * from t1;
+ERROR HY000: Incorrect key file for table 't1'; try to repair it
+select * from t2;
+ERROR HY000: Incorrect key file for table 't2'; try to repair it
+select * from t3;
+ERROR HY000: Incorrect key file for table 't3'; try to repair it
+select * from t4;
+ERROR HY000: Incorrect key file for table 't4'; try to repair it
+select count(*) from t5;
+count(*)
+500
+select count(*) from t6;
+count(*)
+500
+select count(*) from t7;
+count(*)
+500
+select count(*) from t8;
+count(*)
+500
+select count(*) from t9;
+count(*)
+500
+drop table t0, t1, t2, t3, t4, t5, t6, t7, t8, t9;
diff --git a/mysql-test/suite/innodb/r/innodb_bug14147491.result b/mysql-test/suite/innodb/r/innodb_bug14147491.result
index 989e433338e..c329333a718 100644
--- a/mysql-test/suite/innodb/r/innodb_bug14147491.result
+++ b/mysql-test/suite/innodb/r/innodb_bug14147491.result
@@ -1,6 +1,6 @@
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. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.");
-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.");
+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.");
# 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;
diff --git a/mysql-test/suite/innodb/t/doublewrite-compressed.test b/mysql-test/suite/innodb/t/doublewrite-compressed.test
new file mode 100644
index 00000000000..90f62576a7f
--- /dev/null
+++ b/mysql-test/suite/innodb/t/doublewrite-compressed.test
@@ -0,0 +1,439 @@
+--echo #
+--echo # Bug #17335427 INNODB CAN NOT USE THE DOUBLEWRITE BUFFER PROPERLY
+--echo # Bug #18144349 INNODB CANNOT USE THE DOUBLEWRITE BUFFER FOR THE FIRST
+--echo # PAGE OF SYSTEM TABLESPACE
+--echo #
+
+--source include/innodb_page_size.inc
+--source include/have_debug.inc
+--source include/not_embedded.inc
+
+# Slow shutdown and restart to make sure ibuf merge is finished
+SET GLOBAL innodb_fast_shutdown = 0;
+--disable_query_log
+call mtr.add_suppression("space header page consists of zero bytes.*test.t1");
+call mtr.add_suppression("checksum mismatch in tablespace.*test.t1");
+call mtr.add_suppression("Current page size .* != page size on page");
+call mtr.add_suppression("innodb-page-size mismatch in tablespace.*test.t1");
+call mtr.add_suppression("InnoDB: New log files created");
+call mtr.add_suppression("InnoDB: Cannot create doublewrite buffer: the first file in innodb_data_file_path must be at least (3|6|12)M\\.");
+call mtr.add_suppression("InnoDB: Database creation was aborted");
+call mtr.add_suppression("Plugin 'InnoDB' (init function returned error|registration as a STORAGE ENGINE failed)");
+--enable_query_log
+--source include/restart_mysqld.inc
+
+let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
+let MYSQLD_DATADIR=`select @@datadir`;
+let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
+let SEARCH_RANGE= -50000;
+
+show variables like 'innodb_doublewrite';
+show variables like 'innodb_fil_make_page_dirty_debug';
+show variables like 'innodb_saved_page_number_debug';
+
+--disable_warnings
+set global innodb_file_per_table=ON;
+set global innodb_file_format='Barracuda';
+--enable_warnings
+create table t1 (f1 int primary key, f2 blob) engine=innodb page_compressed=yes;
+
+start transaction;
+insert into t1 values(1, repeat('#',12));
+insert into t1 values(2, repeat('+',12));
+insert into t1 values(3, repeat('/',12));
+insert into t1 values(4, repeat('-',12));
+insert into t1 values(5, repeat('.',12));
+commit work;
+
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if first page of user
+--echo # tablespace is full of zeroes.
+
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+
+--echo # Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+
+begin;
+insert into t1 values (6, repeat('%', 12));
+
+--source ../include/no_checkpoint_start.inc
+
+--echo # Make the first page dirty for table t1
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+
+--echo # Ensure that dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--let CLEANUP_IF_CHECKPOINT=drop table t1;
+--source ../include/no_checkpoint_end.inc
+
+--echo # Make the first page (page_no=0) of the user tablespace
+--echo # full of zeroes.
+--echo #
+--echo # MDEV-11623: Use old FSP_SPACE_FLAGS in the doublewrite buffer.
+
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}test/t1.ibd";
+my $page_size = $ENV{INNODB_PAGE_SIZE};
+my $page;
+open(FILE, "+<", $fname) or die;
+sysread(FILE, $page, $page_size)==$page_size||die "Unable to read $name\n";
+sysseek(FILE, 0, 0)||die "Unable to seek $fname\n";
+die unless syswrite(FILE, chr(0) x $page_size, $page_size) == $page_size;
+close FILE;
+
+open(FILE, "+<", "$ENV{MYSQLD_DATADIR}ibdata1")||die "cannot open ibdata1\n";
+sysseek(FILE, 6 * $page_size - 190, 0)||die "Unable to seek ibdata1\n";
+sysread(FILE, $_, 12) == 12||die "Unable to read TRX_SYS\n";
+my($magic,$d1,$d2)=unpack "NNN", $_;
+die "magic=$magic, $d1, $d2\n" unless $magic == 536853855 && $d2 >= $d1 + 64;
+sysseek(FILE, $d1 * $page_size, 0)||die "Unable to seek ibdata1\n";
+# Find the page in the doublewrite buffer
+for (my $d = $d1; $d < $d2 + 64; $d++)
+{
+ sysread(FILE, $_, $page_size)==$page_size||die "Cannot read doublewrite\n";
+ next unless $_ eq $page;
+ sysseek(FILE, $d * $page_size, 0)||die "Unable to seek ibdata1\n";
+ # Write buggy MariaDB 10.1.x FSP_SPACE_FLAGS to the doublewrite buffer
+ my($flags) = unpack "x[54]N", $_;
+ my $badflags = ($flags & 0x3f);
+ my $compression_level=6;
+ $badflags |= 1<<6|$compression_level<<7 if ($flags & 1 << 16);
+ $badflags |= ($flags & 15 << 6) << 7; # PAGE_SSIZE
+
+ substr ($_, 54, 4) = pack("N", $badflags);
+ # Replace the innodb_checksum_algorithm=none checksum
+ substr ($_, 0, 4) = pack("N", 0xdeadbeef);
+ substr ($_, $page_size - 8, 4) = pack("N", 0xdeadbeef);
+ syswrite(FILE, $_, $page_size)==$page_size||die;
+ close(FILE);
+ exit 0;
+}
+die "Did not find the page in the doublewrite buffer ($d1,$d2)\n";
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if first page of user
+--echo # tablespace is corrupted.
+
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+
+--echo # Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+
+begin;
+insert into t1 values (6, repeat('%', 12));
+
+--source ../include/no_checkpoint_start.inc
+
+--echo # Make the first page dirty for table t1
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+
+--echo # Ensure that dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/no_checkpoint_end.inc
+
+--echo # Corrupt the first page (page_no=0) of the user tablespace.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}test/t1.ibd";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'}/2);
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if 2nd page of user
+--echo # tablespace is full of zeroes.
+
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+
+--echo # Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+
+begin;
+insert into t1 values (6, repeat('%', 400));
+
+--source ../include/no_checkpoint_start.inc
+
+--echo # Make the 2nd page dirty for table t1
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+
+--echo # Ensure that dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/no_checkpoint_end.inc
+
+--echo # Make the 2nd page (page_no=1) of the tablespace all zeroes.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}test/t1.ibd";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+seek(FILE, $ENV{'INNODB_PAGE_SIZE'}, SEEK_SET);
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'});
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if 2nd page of user
+--echo # tablespace is corrupted.
+
+select space from information_schema.innodb_sys_tables
+where name = 'test/t1' into @space_id;
+
+--echo # Ensure that dirty pages of table t1 is flushed.
+flush tables t1 for export;
+unlock tables;
+
+begin;
+insert into t1 values (6, repeat('%', 400));
+
+--source ../include/no_checkpoint_start.inc
+
+--echo # Make the 2nd page dirty for table t1
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = @space_id;
+
+--echo # Ensure that the dirty pages of table t1 are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/no_checkpoint_end.inc
+
+--echo # Corrupt the 2nd page (page_no=1) of the user tablespace.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}test/t1.ibd";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+seek(FILE, $ENV{'INNODB_PAGE_SIZE'}, SEEK_SET);
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'}/2);
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if first page of
+--echo # system tablespace is full of zeroes.
+
+begin;
+insert into t1 values (6, repeat('%', 400));
+
+--echo # Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--echo # Make the first page dirty for system tablespace
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = 0;
+
+--echo # Ensure that the dirty page of system tablespace is also flushed.
+# We do this after the transaction starts and all dirty pages have been flushed
+# already. So flushing of this specified dirty page will surely keep the
+# copy in doublewrite buffer, and no more writes to doublewrite buffer would
+# overwrite the copy. Thus, we can safely modify the original page when server
+# is down. So do the following testings.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/kill_mysqld.inc
+
+--echo # Make the first page (page_no=0) of the system tablespace
+--echo # all zeroes.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}ibdata1";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'});
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if first page of
+--echo # system tablespace is corrupted.
+
+begin;
+insert into t1 values (6, repeat('%', 400));
+
+--echo # Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--echo # Make the first page dirty for system tablespace
+set global innodb_saved_page_number_debug = 0;
+set global innodb_fil_make_page_dirty_debug = 0;
+
+--echo # Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/kill_mysqld.inc
+
+--echo # Corrupt the first page (page_no=0) of the system tablespace.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}ibdata1";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'}/2);
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if 2nd page of
+--echo # system tablespace is full of zeroes.
+
+begin;
+insert into t1 values (6, repeat('%', 400));
+
+--echo # Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--echo # Make the second page dirty for system tablespace
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = 0;
+
+--echo # Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/kill_mysqld.inc
+
+--echo # Make the 2nd page (page_no=1) of the system tablespace
+--echo # all zeroes.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}ibdata1";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+seek(FILE, $ENV{'INNODB_PAGE_SIZE'}, SEEK_SET);
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'});
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+select f1, f2 from t1;
+
+--echo # Test End
+--echo # ---------------------------------------------------------------
+--echo # Test Begin: Test if recovery works if 2nd page of
+--echo # system tablespace is corrupted.
+
+begin;
+insert into t1 values (6, repeat('%', 400));
+
+--echo # Ensure that all dirty pages in the system are flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--echo # Make the second page dirty for system tablespace
+set global innodb_saved_page_number_debug = 1;
+set global innodb_fil_make_page_dirty_debug = 0;
+
+--echo # Ensure that the dirty page of system tablespace is also flushed.
+set global innodb_buf_flush_list_now = 1;
+
+--source include/kill_mysqld.inc
+
+--echo # Make the 2nd page (page_no=1) of the system tablespace
+--echo # all zeroes.
+perl;
+use IO::Handle;
+my $fname= "$ENV{'MYSQLD_DATADIR'}ibdata1";
+open(FILE, "+<", $fname) or die;
+FILE->autoflush(1);
+binmode FILE;
+seek(FILE, $ENV{'INNODB_PAGE_SIZE'}, SEEK_SET);
+print FILE chr(0) x ($ENV{'INNODB_PAGE_SIZE'}/2);
+close FILE;
+EOF
+
+--source include/start_mysqld.inc
+
+check table t1;
+--let SEARCH_PATTERN= \[ERROR\] InnoDB: .* in tablespace.*test.t1.*
+--source include/search_pattern_in_file.inc
+
+select f1, f2 from t1;
+
+drop table t1;
+
+--echo #
+--echo # MDEV-12600 crash during install_db with innodb_page_size=32K
+--echo # and ibdata1=3M
+--echo #
+let bugdir= $MYSQLTEST_VARDIR/tmp/doublewrite;
+--mkdir $bugdir
+
+let $check_no_innodb=SELECT * FROM INFORMATION_SCHEMA.ENGINES
+WHERE engine = 'innodb'
+AND support IN ('YES', 'DEFAULT', 'ENABLED');
+
+--let $ibp=--innodb-log-group-home-dir=$bugdir --innodb-data-home-dir=$bugdir
+--let $ibd=$ibp --innodb-undo-tablespaces=0 --innodb-log-files-in-group=2
+--let $ibp=$ibp --innodb-data-file-path=ibdata1:1M;ibdata2:1M:autoextend
+
+--let $restart_parameters= $ibp
+--source include/restart_mysqld.inc
+eval $check_no_innodb;
+--let SEARCH_PATTERN= \[ERROR\] InnoDB: Cannot create doublewrite buffer
+--source include/search_pattern_in_file.inc
+--let $restart_parameters=
+--source include/restart_mysqld.inc
+
+--remove_file $bugdir/ibdata1
+--remove_file $bugdir/ibdata2
+--remove_file $bugdir/ib_logfile0
+--remove_file $bugdir/ib_logfile1
+--rmdir $bugdir
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test b/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test
index 8c4cee14453..aae5c51c123 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_bzip2.test
@@ -2,10 +2,13 @@
-- source include/have_innodb_bzip2.inc
-- source include/not_embedded.inc
-# bzip2
set global innodb_compression_algorithm = bzip2;
+select @@innodb_compression_algorithm;
-# All page compression test use the same
+# All page compression tests use the same
--source include/innodb-page-compression.inc
--- echo #done
+# reset system
+--disable_query_log
+set global innodb_compression_algorithm=default;
+--enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test b/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
index 9d6e2babbe7..bd0097532dd 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
@@ -5,8 +5,12 @@
# lz4
set global innodb_compression_algorithm = lz4;
+select @@innodb_compression_algorithm;
-# All page compression test use the same
+# All page compression tests use the same
--source include/innodb-page-compression.inc
--- echo #done
+# reset system
+--disable_query_log
+set global innodb_compression_algorithm=default;
+--enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test b/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test
index 0b97c1578c6..1ab2cce74f4 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_lzma.test
@@ -2,10 +2,14 @@
-- source include/have_innodb_lzma.inc
-- source include/not_embedded.inc
-# lzma
set global innodb_compression_algorithm = lzma;
+select @@innodb_compression_algorithm;
-# All page compression test use the same
+# All page compression tests use the same
--source include/innodb-page-compression.inc
--- echo #done
+# reset system
+--disable_query_log
+set global innodb_compression_algorithm=default;
+--enable_query_log
+
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test b/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
index aec07beeca6..14438bb7ec3 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
@@ -2,10 +2,13 @@
-- source include/have_innodb_lzo.inc
-- source include/not_embedded.inc
-# lzo
set global innodb_compression_algorithm = lzo;
+select @@innodb_compression_algorithm;
-# All page compression test use the same
+# All page compression tests use the same
--source include/innodb-page-compression.inc
--- echo #done
+# reset system
+--disable_query_log
+set global innodb_compression_algorithm=default;
+--enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test b/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test
index 532ec294d28..c9e00c7f257 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_snappy.test
@@ -4,10 +4,13 @@
call mtr.add_suppression("InnoDB: Compression failed for space [0-9]+ name test/innodb_page_compressed[0-9] len [0-9]+ err 2 write_size [0-9]+.");
-# snappy
set global innodb_compression_algorithm = snappy;
+select @@innodb_compression_algorithm;
-# All page compression test use the same
+# All page compression tests use the same
--source include/innodb-page-compression.inc
--- echo #done
+# reset system
+--disable_query_log
+set global innodb_compression_algorithm=default;
+--enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_zip.test b/mysql-test/suite/innodb/t/innodb-page_compression_zip.test
index ed3a27ada7b..bfcda0ea747 100644
--- a/mysql-test/suite/innodb/t/innodb-page_compression_zip.test
+++ b/mysql-test/suite/innodb/t/innodb-page_compression_zip.test
@@ -1,10 +1,13 @@
--source include/have_innodb.inc
--source include/not_embedded.inc
-# lz4
set global innodb_compression_algorithm = zlib;
+select @@innodb_compression_algorithm;
-# All page compression test use the same
+# All page compression tests use the same
--source include/innodb-page-compression.inc
--- echo #done
+# reset system
+--disable_query_log
+set global innodb_compression_algorithm=default;
+--enable_query_log
diff --git a/mysql-test/suite/innodb/t/innodb_bug14147491.test b/mysql-test/suite/innodb/t/innodb_bug14147491.test
index c21515e7d05..22bc17f0bf6 100644
--- a/mysql-test/suite/innodb/t/innodb_bug14147491.test
+++ b/mysql-test/suite/innodb/t/innodb_bug14147491.test
@@ -6,7 +6,7 @@
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. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.");
-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.");
+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.");
# Don't test under embedded
source include/not_embedded.inc;
@@ -67,7 +67,7 @@ EOF
--echo # Now t1 is corrupted but we should not crash
---error 1712,1932
+--error ER_GET_ERRNO,ER_INDEX_CORRUPT,ER_NO_SUCH_TABLE_IN_ENGINE,ER_NOT_KEYFILE
SELECT * FROM t1;
--error 1034,1712,1932