1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
--source include/have_binlog_format_row.inc
--source include/have_debug.inc
--source include/master-slave.inc
--connection master
# Set minimal cache size so smaller transaction can trigger spill to disk.
SET @save_binlog_stmt_cache_size= @@GLOBAL.binlog_stmt_cache_size;
SET GLOBAL binlog_stmt_cache_size= 4096;
CALL mtr.add_suppression('"No space left on device".*An incident event is written to binary log');
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(255)) ENGINE=MyISAM;
FLUSH GLOBAL STATUS;
SHOW STATUS LIKE "binlog_stmt_cache%";
INSERT INTO t1 VALUES (0, CONCAT("?", "-", REPEAT("x", 200)));
INSERT INTO t1 SELECT a+1, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+2, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+4, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+8, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+16, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+32, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+64, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
INSERT INTO t1 SELECT a+128, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
SHOW STATUS LIKE "binlog_stmt_cache%";
SET @old_dbug= @@SESSION.debug_dbug;
SET SESSION debug_dbug="+d,simulate_disk_full_at_flush_pending";
--replace_regex /Error writing file '[^']+'/Error writing file '<FILENAME>'/
--error 3
INSERT INTO t1 SELECT a+256, CONCAT(a, "-", REPEAT("x", 200)) FROM t1;
SET SESSION debug_dbug= @old_dbug;
SHOW STATUS LIKE "binlog_stmt_cache%";
# The actual number of rows left after the disk full error may change as
# binlog event sizes are modified. So here we just test that we get partial
# update from the last INSERT..SELECT that gets disk full error.
SELECT IF(COUNT(*) > 256 AND COUNT(*) < 512,
"ok",
CONCAT("ERROR! Row count ", COUNT(*), " not as expected for partially executed query"))
AS check_result
FROM t1;
# A random extra event that helped show the bug that a partial event
# group was binlogged.
ALTER TABLE t1 COMMENT '<mumble>';
--save_master_pos
--connection slave
--let $slave_sql_errno= 1590
--source include/wait_for_slave_sql_error_and_skip.inc
--sync_with_master
SELECT COUNT(*) FROM t1;
# Cleanup
--connection master
SET GLOBAL binlog_stmt_cache_size= @save_binlog_stmt_cache_size;
DROP TABLE t1;
--source include/rpl_end.inc
|