mirror of
https://github.com/MariaDB/server.git
synced 2025-11-12 10:22:39 +03:00
srv_printf_innodb_monitor(): Only display an ADAPTIVE HASH INDEX section if the adaptive hash index is enabled. ibuf_print(): Only display an INSERT BUFFER section if the change buffer is not empty.
79 lines
2.7 KiB
Plaintext
79 lines
2.7 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 $_server_id= `SELECT @@server_id`
|
|
--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.$_server_id.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;
|
|
SET GLOBAL innodb_change_buffering = all;
|
|
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 --debug-dbug=d,crash_after_log_ibuf_upd_inplace
|
|
--source include/start_mysqld.inc
|
|
SELECT * FROM t1 LIMIT 1;
|
|
# 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;
|
|
DROP TABLE t1;
|