mirror of
https://github.com/MariaDB/server.git
synced 2025-07-20 10:24:14 +03:00
mtr uses group suffix, but some existing inc and test files use server_id for expect files. This patch aims to fix that. For spider: With this change we will not have to maintain a separate version of restart_mysqld.inc for spider, that duplicates code, just because spider tests use different names for expect files, and shutdown_mysqld requires magical names for them. With this change spider tests will also be able to use other features provided by restart_mysqld.inc without code duplication, like the parameter $restart_parameters (see e.g. the testcase mdev_29904.test in commit ef1161e5d4f). Tests run after this change: default, spider, rocksdb, galera, using the following command mtr --parallel=auto --force --max-test-fail=0 --skip-core-file mtr --suite spider,spider/*,spider/*/* \ --skip-test="spider/oracle.*|.*/t\..*" --parallel=auto --big-test \ --force --max-test-fail=0 --skip-core-file mtr --suite galera --parallel=auto mtr --suite rocksdb --parallel=auto
82 lines
2.8 KiB
Plaintext
82 lines
2.8 KiB
Plaintext
--echo #
|
|
--echo # Bug#69122 - INNODB DOESN'T REDO-LOG INSERT BUFFER MERGE
|
|
--echo # OPERATION IF IT IS DONE IN-PLACE
|
|
--echo #
|
|
--source include/have_innodb.inc
|
|
# innodb_change_buffering_debug option is debug only
|
|
--source include/have_debug.inc
|
|
# Embedded server does not support crashing
|
|
--source include/not_embedded.inc
|
|
# DBUG_SUICIDE() hangs under valgrind
|
|
--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,
|
|
b CHAR(1),
|
|
c INT,
|
|
INDEX(b))
|
|
ENGINE=InnoDB STATS_PERSISTENT=0;
|
|
|
|
--let $_expect_file_name= `select regexp_replace(@@tmpdir, '^.*/','')`
|
|
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/$_expect_file_name.expect
|
|
|
|
# The flag innodb_change_buffering_debug is only available in debug builds.
|
|
# It instructs InnoDB to try to evict pages from the buffer pool when
|
|
# 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/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 SELECT 0,'x',1 FROM seq_1_to_8192;
|
|
|
|
BEGIN;
|
|
SELECT b FROM t1 LIMIT 3;
|
|
|
|
connect (con1,localhost,root,,);
|
|
BEGIN;
|
|
DELETE FROM t1 WHERE a=1;
|
|
# This should be buffered, if innodb_change_buffering_debug = 1 is in effect.
|
|
INSERT INTO t1 VALUES(1,'X',1);
|
|
|
|
SET DEBUG_DBUG='+d,crash_after_log_ibuf_upd_inplace';
|
|
--exec echo "wait" > $_expect_file_name
|
|
--error 2013
|
|
# This should force a change buffer merge
|
|
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;
|