mirror of
https://github.com/MariaDB/server.git
synced 2025-01-26 00:34:18 +01:00
70 lines
2.3 KiB
Text
70 lines
2.3 KiB
Text
--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
|
|
|
|
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;
|
|
let SEARCH_FILE = $MYSQLTEST_VARDIR/tmp/my_restart.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;
|
|
|
|
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
|
|
--source include/start_mysqld.inc
|
|
|
|
CHECK TABLE t1;
|
|
DROP TABLE t1;
|