mirror of
https://github.com/MariaDB/server.git
synced 2026-02-06 10:49:07 +01:00
The code for binlogging out-of-band data was missing an appropriate call to log_free_check(). This call is needed to throttle write activity and wait for an InnoDB checkpoint, when the redo log is too small (or otherwise has insufficient space available) to accomodate the write activity. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
30 lines
1.1 KiB
Text
30 lines
1.1 KiB
Text
--source include/have_binlog_format_row.inc
|
|
--source include/have_innodb_binlog.inc
|
|
|
|
--echo *** Test that binlogging throttles large writes, waiting for InnoDB checkpoints as needed
|
|
|
|
CREATE TABLE t1 (a INT, b INT, c LONGTEXT, PRIMARY KEY(a, b)) ENGINE=InnoDB;
|
|
|
|
# Do a large amount of binlogging in a single operation. The binlog write
|
|
# must throttle the amount of data and wait for InnoDB checkpoints as
|
|
# approrpiate to avoid overwriting the head of the cyclic InnoDB write-ahead
|
|
# log. Otherwise it will cause an error in the error log that will make the
|
|
# test fail:
|
|
#
|
|
# [ERROR] InnoDB: Crash recovery is broken due to insufficient innodb_log_file_size
|
|
|
|
SET @old_max_packet= @@GLOBAL.max_allowed_packet;
|
|
SET GLOBAL max_allowed_packet=128*1024*1024;
|
|
SET @old_max_binlog= @@GLOBAL.max_binlog_size;
|
|
SET GLOBAL max_binlog_size= 16*1024*1024;
|
|
|
|
--connect (con1,localhost,root)
|
|
INSERT INTO t1 VALUES (1, 1, REPEAT('x', 64*1024*1024));
|
|
--disconnect con1
|
|
--connection default
|
|
|
|
SELECT a, b, LENGTH(c) FROM t1 ORDER BY a, b;
|
|
|
|
SET GLOBAL max_allowed_packet= @old_max_packet;
|
|
SET GLOBAL max_binlog_size= @old_max_binlog;
|
|
DROP TABLE t1;
|