summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-09-26 12:48:55 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2019-09-26 13:03:40 +0300
commit2d6719d7ee92843d5b0b9a27c7deaff5cacd4745 (patch)
tree700e11d45ffdb9aebe6d183484ce7f5066495f57 /mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
parent23d675453f182becb3bc5811bfa7e2e310cbed1d (diff)
downloadmariadb-git-2d6719d7ee92843d5b0b9a27c7deaff5cacd4745.tar.gz
MDEV-19514 preparation: Extend innodb.innodb-change-buffer-recovery
Test innodb_read_only startup (which will be refused after a crash), and test also innodb_force_recovery=5, and extract some change buffer merge statistics. Omit any statistics about delete (purge) buffering, because purge could happen at any time. Use the sequence storage engine for populating the table.
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;