mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-17049 Enable innodb_undo tests on buildbot
Remove the innodb_undo suite, and move and adapt the tests. Remove unnecessary restarts, and add innodb_page_size_small.inc for combinations. innodb.undo_truncate is the merge of innodb_undo.truncate and innodb_undo.truncate_multi_client. Add the global status variable innodb_undo_truncations. Without this, the test innodb.undo_truncate would occasionally report that truncation did not happen. The test was only waiting for the history list length to reach 0, but the undo tablespace truncation would only take place some time after that. Undo tablespace truncation will only occasionally occur with innodb_page_size=32k, and typically never occur (with this amount of undo log operations) with innodb_page_size=64k. We disable these combinations. innodb.undo_truncate_recover was formerly called innodb_undo.truncate_recover.
This commit is contained in:
50
mysql-test/suite/innodb/t/undo_truncate_recover.test
Normal file
50
mysql-test/suite/innodb/t/undo_truncate_recover.test
Normal file
@ -0,0 +1,50 @@
|
||||
#
|
||||
# WL#6965: Truncate UNDO logs.
|
||||
#
|
||||
|
||||
# With larger innodb_page_size, the undo log tablespaces do not grow enough.
|
||||
--source include/innodb_page_size_small.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
--source include/have_undo_tablespaces.inc
|
||||
|
||||
# Valgrind would complain about memory leaks when we crash on purpose.
|
||||
--source include/not_valgrind.inc
|
||||
# Embedded server does not support crashing
|
||||
--source include/not_embedded.inc
|
||||
# Avoid CrashReporter popup on Mac
|
||||
--source include/not_crashrep.inc
|
||||
|
||||
SET GLOBAL innodb_undo_logs = 4;
|
||||
SET GLOBAL innodb_undo_log_truncate = 1;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
|
||||
|
||||
let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
|
||||
create table t1(keyc int primary key, c char(100)) engine = innodb;
|
||||
begin;
|
||||
--disable_query_log
|
||||
let $i=30000;
|
||||
while ($i) {
|
||||
eval insert into t1 values(30000-$i, '');
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
commit;
|
||||
|
||||
let SEARCH_PATTERN = ib_undo_trunc;
|
||||
begin;
|
||||
update t1 set c = 'MariaDB';
|
||||
update t1 set c = 'InnoDB';
|
||||
eval set global debug_dbug = '+d,$SEARCH_PATTERN';
|
||||
commit;
|
||||
# FIXME: remove this work-around, and generate less log!
|
||||
call mtr.add_suppression("InnoDB: The transaction log size is too large");
|
||||
SET GLOBAL innodb_fast_shutdown=0;
|
||||
--source include/shutdown_mysqld.inc
|
||||
--source include/search_pattern_in_file.inc
|
||||
# FIXME: remove this work-around, and generate less log!
|
||||
--let $restart_parameters= --innodb-buffer-pool-size=16m
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
drop table t1;
|
Reference in New Issue
Block a user