summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test')
-rw-r--r--mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test41
1 files changed, 25 insertions, 16 deletions
diff --git a/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test b/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
index d8cc21c550c..79d9cc814a0 100644
--- a/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
+++ b/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
@@ -11,6 +11,12 @@
--source include/not_valgrind.inc
# This test is slow on buildbot.
--source include/big_test.inc
+--source include/have_sequence.inc
+
+call mtr.add_suppression("InnoDB: innodb_read_only prevents crash recovery");
+call mtr.add_suppression("Plugin initialization aborted at srv0start\\.cc");
+call mtr.add_suppression("Plugin 'InnoDB'");
+FLUSH TABLES;
CREATE TABLE t1(
a INT AUTO_INCREMENT PRIMARY KEY,
@@ -27,25 +33,12 @@ ENGINE=InnoDB STATS_PERSISTENT=0;
# change buffering is possible, so that the change buffer will be used
# whenever possible.
SET GLOBAL innodb_change_buffering_debug = 1;
-let SEARCH_FILE = $MYSQLTEST_VARDIR/tmp/my_restart.err;
+let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
# Create enough rows for the table, so that the change buffer will be
# used for modifying the secondary index page. There must be multiple
# index pages, because changes to the root page are never buffered.
-INSERT INTO t1 VALUES(0,'x',1);
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
-INSERT INTO t1 SELECT 0,b,c FROM t1;
+INSERT INTO t1 SELECT 0,'x',1 FROM seq_1_to_8192;
BEGIN;
SELECT b FROM t1 LIMIT 3;
@@ -63,10 +56,26 @@ SET DEBUG_DBUG='+d,crash_after_log_ibuf_upd_inplace';
SELECT b FROM t1 LIMIT 3;
disconnect con1;
connection default;
-
let SEARCH_PATTERN=Wrote log record for ibuf update in place operation;
--source include/search_pattern_in_file.inc
+
+--let $restart_parameters= --innodb-read-only
--source include/start_mysqld.inc
+CHECK TABLE t1;
+--source include/shutdown_mysqld.inc
+let SEARCH_PATTERN=innodb_read_only prevents crash recovery;
+--source include/search_pattern_in_file.inc
+--let $restart_parameters= --innodb-force-recovery=5
+--source include/start_mysqld.inc
+SELECT * FROM t1 LIMIT 1;
+replace_regex /.*operations:.* (insert.*), delete \d.*discarded .*/\1/;
+SHOW ENGINE INNODB STATUS;
+# Slow shutdown will not merge the changes due to innodb_force_recovery=5.
+SET GLOBAL innodb_fast_shutdown=0;
+--let $restart_parameters=
+--source include/restart_mysqld.inc
CHECK TABLE t1;
+replace_regex /.*operations:.* (insert.*), delete \d.*discarded .*/\1/;
+SHOW ENGINE INNODB STATUS;
DROP TABLE t1;