--source include/have_innodb.inc --source include/have_debug.inc --source include/not_embedded.inc call mtr.add_suppression("Checksum mismatch in the first page of file"); let INNODB_PAGE_SIZE=`select @@innodb_page_size`; let MYSQLD_DATADIR=`select @@datadir`; show variables like 'innodb_doublewrite'; create table t1(f1 int not null, f2 int not null)engine=innodb; insert into t1 values (1, 1); # Slow shutdown and restart to make sure ibuf merge is finished SET GLOBAL innodb_fast_shutdown = 0; let $shutdown_timeout=; let $restart_parameters=--debug_dbug=+d,ib_log_checkpoint_avoid_hard --innodb_flush_sync=0; --source include/restart_mysqld.inc --source ../include/no_checkpoint_start.inc --echo # Make the first page dirty for undo tablespace set global innodb_saved_page_number_debug = 0; set global innodb_fil_make_page_dirty_debug = 1; SET GLOBAL innodb_buf_flush_list_now = 1; --let CLEANUP_IF_CHECKPOINT=drop table t1; --source ../include/no_checkpoint_end.inc perl; use IO::Handle; my $fname= "$ENV{'MYSQLD_DATADIR'}/undo001"; my $page_size = $ENV{INNODB_PAGE_SIZE}; die unless open(FILE, "+<", $fname); sysread(FILE, $page, $page_size)==$page_size||die "Unable to read $name\n"; substr($page, 49, 4) = pack("N", 1000); sysseek(FILE, 0, 0)||die "Unable to seek $fname\n"; die unless syswrite(FILE, $page, $page_size) == $page_size; close FILE; EOF --source include/start_mysqld.inc let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; let SEARCH_PATTERN= Recovered page \\[page id: space=1, page number=0\\] to '.*undo001' from the doublewrite buffer\\.; --source include/search_pattern_in_file.inc check table t1; drop table t1;