List:Maria Storage Engine« Previous MessageNext Message »
From:Guilhem Bichot Date:June 30 2008 9:35am
Subject:bzr commit into MySQL/Maria:mysql-maria branch (guilhem:2653)
View as plain text  
#At bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-maria/

 2653 Guilhem Bichot	2008-06-30
      cutting test in two because it takes many things
added:
  mysql-test/r/maria-recovery2.result
  mysql-test/t/maria-recovery2-master.opt
  mysql-test/t/maria-recovery2.test
modified:
  mysql-test/r/maria-recovery.result
  mysql-test/t/maria-recovery.test

per-file messages:
  mysql-test/r/maria-recovery.result
    cutting test in two
  mysql-test/r/maria-recovery2.result
    cutting test in two
  mysql-test/t/maria-recovery.test
    cutting test in two
  mysql-test/t/maria-recovery2-master.opt
    cutting test in two
  mysql-test/t/maria-recovery2.test
    cutting test in two
=== modified file 'mysql-test/r/maria-recovery.result'
--- a/mysql-test/r/maria-recovery.result	2008-06-26 05:18:28 +0000
+++ b/mysql-test/r/maria-recovery.result	2008-06-30 09:34:58 +0000
@@ -237,145 +237,6 @@ t1	CREATE TABLE `t1` (
 ) ENGINE=MARIA AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
 insert into t1 values(null, "f");
 drop table t1;
-* TEST of removing logs manually
-* shut down mysqld, removed logs, restarted it
-* TEST of UNDO_ROW_DELETE preserving rowid
-create table t1(a int) engine=maria;
-insert into t1 values(1),(2);
-flush table t1;
-* copied t1 for comparison
-lock tables t1 write;
-insert into t1 values(3);
-delete from t1 where a in (1,2,3);
-SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
-* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
-ERROR HY000: Lost connection to MySQL server during query
-* recovery happens
-check table t1 extended;
-Table	Op	Msg_type	Msg_text
-mysqltest.t1	check	status	OK
-* testing that checksum after recovery is as expected
-Checksum-check
-ok
-use mysqltest;
-drop table t1;
-* TEST of checkpoint
-set global debug="+d,info,query,enter,exit,loop,maria_checkpoint_indirect";
-set global maria_checkpoint_interval=10000;
-create table t1(a int, b varchar(10), index(a,b)) engine=maria;
-insert into t1 values(1,"a"),(2,"b"),(3,"c");
-delete from t1 where b="b";
-update t1 set b="d" where a=1;
-flush table t1;
-* copied t1 for comparison
-lock tables t1 write;
-insert into t1 values(4,"e"),(5,"f"),(6,"g");
-update t1 set b="h" where a=5;
-delete from t1 where b="g";
-show status like "Maria_pagecache_blocks_not_flushed";
-Variable_name	Value
-Maria_pagecache_blocks_not_flushed	3
-set global maria_checkpoint_interval=10000;
-update t1 set b="i" where a=5;
-SET SESSION debug="+d,maria_crash";
-* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
-ERROR HY000: Lost connection to MySQL server during query
-* recovery happens
-check table t1 extended;
-Table	Op	Msg_type	Msg_text
-mysqltest.t1	check	status	OK
-* testing that checksum after recovery is as expected
-Checksum-check
-ok
-use mysqltest;
-drop table t1;
-Test of REPAIR's implicit commit
-create table t1 (a varchar(100), key(a)) engine=maria;
-insert into t1 values(3);
-flush table t1;
-* copied t1 for comparison
-lock tables t1 write;
-insert into t1 values (1);
-repair table t1;
-Table	Op	Msg_type	Msg_text
-mysqltest.t1	repair	status	OK
-insert into t1 values(2);
-select * from t1;
-a
-1
-2
-3
-SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
-* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
-ERROR HY000: Lost connection to MySQL server during query
-* recovery happens
-check table t1 extended;
-Table	Op	Msg_type	Msg_text
-mysqltest.t1	check	status	OK
-* testing that checksum after recovery is as expected
-Checksum-check
-failure
-use mysqltest;
-select * from t1;
-a
-1
-3
-drop table t1;
-* TEST of recovery when crash before bulk-insert-with-repair is committed
-create table t1 (a varchar(100), key(a)) engine=maria;
-create table t2 (a varchar(100)) engine=myisam;
-set rand_seed1=12, rand_seed2=254;
-insert into t2 values (rand());
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t1 values(30);
-flush table t1;
-* copied t1 for comparison
-lock tables t1 write, t2 read;
-delete from t1 limit 1;
-insert into t1 select * from t2;
-SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
-* crashing mysqld intentionally
-set global maria_checkpoint_interval=1;
-ERROR HY000: Lost connection to MySQL server during query
-* recovery happens
-check table t1 extended;
-Table	Op	Msg_type	Msg_text
-mysqltest.t1	check	status	OK
-* testing that checksum after recovery is as expected
-Checksum-check
-ok
-use mysqltest;
-show keys from t1;
-Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment
-t1	1	a	1	a	A	1	NULL	NULL	YES	BTREE	
-drop table t1;
-* TEST of recovery when OPTIMIZE has replaced the index file and crash
-create table t_corrupted1 (a varchar(100), key(a)) engine=maria;
-insert into t_corrupted1 select (rand()) from t2;
-flush table t_corrupted1;
-* copied t_corrupted1 for comparison
-SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash_sort_index";
-* crashing mysqld intentionally
-optimize table t_corrupted1;
-ERROR HY000: Lost connection to MySQL server during query
-* recovery happens
-check table t_corrupted1 extended;
-Table	Op	Msg_type	Msg_text
-mysqltest.t_corrupted1	check	warning	Table is marked as crashed and last repair failed
-mysqltest.t_corrupted1	check	status	OK
-* testing that checksum after recovery is as expected
-Checksum-check
-ok
-use mysqltest;
-drop table t_corrupted1, t2;
 drop database mysqltest_for_feeding_recovery;
 drop database mysqltest_for_comparison;
 drop database mysqltest;

=== added file 'mysql-test/r/maria-recovery2.result'
--- a/mysql-test/r/maria-recovery2.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/r/maria-recovery2.result	2008-06-30 09:34:58 +0000
@@ -0,0 +1,145 @@
+set global maria_log_file_size=4294967295;
+drop database if exists mysqltest;
+create database mysqltest;
+use mysqltest;
+* TEST of removing logs manually
+* shut down mysqld, removed logs, restarted it
+* TEST of UNDO_ROW_DELETE preserving rowid
+create table t1(a int) engine=maria;
+insert into t1 values(1),(2);
+flush table t1;
+* copied t1 for comparison
+lock tables t1 write;
+insert into t1 values(3);
+delete from t1 where a in (1,2,3);
+SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
+* crashing mysqld intentionally
+set global maria_checkpoint_interval=1;
+ERROR HY000: Lost connection to MySQL server during query
+* recovery happens
+check table t1 extended;
+Table	Op	Msg_type	Msg_text
+mysqltest.t1	check	status	OK
+* testing that checksum after recovery is as expected
+Checksum-check
+ok
+use mysqltest;
+drop table t1;
+* TEST of checkpoint
+set global debug="+d,info,query,enter,exit,loop,maria_checkpoint_indirect";
+set global maria_checkpoint_interval=10000;
+create table t1(a int, b varchar(10), index(a,b)) engine=maria;
+insert into t1 values(1,"a"),(2,"b"),(3,"c");
+delete from t1 where b="b";
+update t1 set b="d" where a=1;
+flush table t1;
+* copied t1 for comparison
+lock tables t1 write;
+insert into t1 values(4,"e"),(5,"f"),(6,"g");
+update t1 set b="h" where a=5;
+delete from t1 where b="g";
+show status like "Maria_pagecache_blocks_not_flushed";
+Variable_name	Value
+Maria_pagecache_blocks_not_flushed	3
+set global maria_checkpoint_interval=10000;
+update t1 set b="i" where a=5;
+SET SESSION debug="+d,maria_crash";
+* crashing mysqld intentionally
+set global maria_checkpoint_interval=1;
+ERROR HY000: Lost connection to MySQL server during query
+* recovery happens
+check table t1 extended;
+Table	Op	Msg_type	Msg_text
+mysqltest.t1	check	status	OK
+* testing that checksum after recovery is as expected
+Checksum-check
+ok
+use mysqltest;
+drop table t1;
+Test of REPAIR's implicit commit
+create table t1 (a varchar(100), key(a)) engine=maria;
+insert into t1 values(3);
+flush table t1;
+* copied t1 for comparison
+lock tables t1 write;
+insert into t1 values (1);
+repair table t1;
+Table	Op	Msg_type	Msg_text
+mysqltest.t1	repair	status	OK
+insert into t1 values(2);
+select * from t1;
+a
+1
+2
+3
+SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
+* crashing mysqld intentionally
+set global maria_checkpoint_interval=1;
+ERROR HY000: Lost connection to MySQL server during query
+* recovery happens
+check table t1 extended;
+Table	Op	Msg_type	Msg_text
+mysqltest.t1	check	status	OK
+* testing that checksum after recovery is as expected
+Checksum-check
+failure
+use mysqltest;
+select * from t1;
+a
+1
+3
+drop table t1;
+* TEST of recovery when crash before bulk-insert-with-repair is committed
+create table t1 (a varchar(100), key(a)) engine=maria;
+create table t2 (a varchar(100)) engine=myisam;
+set rand_seed1=12, rand_seed2=254;
+insert into t2 values (rand());
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t1 values(30);
+flush table t1;
+* copied t1 for comparison
+lock tables t1 write, t2 read;
+delete from t1 limit 1;
+insert into t1 select * from t2;
+SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
+* crashing mysqld intentionally
+set global maria_checkpoint_interval=1;
+ERROR HY000: Lost connection to MySQL server during query
+* recovery happens
+check table t1 extended;
+Table	Op	Msg_type	Msg_text
+mysqltest.t1	check	status	OK
+* testing that checksum after recovery is as expected
+Checksum-check
+ok
+use mysqltest;
+show keys from t1;
+Table	Non_unique	Key_name	Seq_in_index	Column_name	Collation	Cardinality	Sub_part	Packed	Null	Index_type	Comment
+t1	1	a	1	a	A	1	NULL	NULL	YES	BTREE	
+drop table t1;
+* TEST of recovery when OPTIMIZE has replaced the index file and crash
+create table t_corrupted1 (a varchar(100), key(a)) engine=maria;
+insert into t_corrupted1 select (rand()) from t2;
+flush table t_corrupted1;
+* copied t_corrupted1 for comparison
+SET SESSION debug="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash_sort_index";
+* crashing mysqld intentionally
+optimize table t_corrupted1;
+ERROR HY000: Lost connection to MySQL server during query
+* recovery happens
+check table t_corrupted1 extended;
+Table	Op	Msg_type	Msg_text
+mysqltest.t_corrupted1	check	warning	Table is marked as crashed and last repair failed
+mysqltest.t_corrupted1	check	status	OK
+* testing that checksum after recovery is as expected
+Checksum-check
+ok
+use mysqltest;
+drop table t_corrupted1, t2;
+drop database mysqltest_for_comparison;
+drop database mysqltest;

=== modified file 'mysql-test/t/maria-recovery.test'
--- a/mysql-test/t/maria-recovery.test	2008-06-02 20:53:25 +0000
+++ b/mysql-test/t/maria-recovery.test	2008-06-30 09:34:58 +0000
@@ -195,129 +195,6 @@ show create table t1;
 insert into t1 values(null, "f");
 drop table t1;
 
-# Test of removing logs manually
---echo * TEST of removing logs manually
-let $mel_keep_control_file=1;
-# this will shut mysqld down cleanly (so, take a checkpoint) and
-# remove only logs; at restart Maria will create a new log with a high
-# number
--- source include/maria_empty_logs.inc
-let $mel_keep_control_file=0;
-# next test will help us verify that a next recovery is ok
-
---echo * TEST of UNDO_ROW_DELETE preserving rowid
-# we want recovery to use the tables as they were at time of crash
-let $mvr_restore_old_snapshot=0;
-# UNDO phase prevents physical comparison, normally,
-# so we'll only use checksums to compare.
-let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
-create table t1(a int) engine=maria;
-insert into t1 values(1),(2);
--- source include/maria_make_snapshot_for_comparison.inc
-lock tables t1 write;
-insert into t1 values(3);
-delete from t1 where a in (1,2,3);
--- source include/maria_verify_recovery.inc
-drop table t1;
-
-# A basic checkpoint test
---echo * TEST of checkpoint
-# Don't take a full checkpoints, we want to test checkpoint vs dirty pages
-set global debug="+d,info,query,enter,exit,loop,maria_checkpoint_indirect";
-# restart checkpoint thread for it to notice the above
-set global maria_checkpoint_interval=10000;
-create table t1(a int, b varchar(10), index(a,b)) engine=maria;
-insert into t1 values(1,"a"),(2,"b"),(3,"c");
-delete from t1 where b="b";
-update t1 set b="d" where a=1;
--- source include/maria_make_snapshot_for_comparison.inc
-lock tables t1 write;
-insert into t1 values(4,"e"),(5,"f"),(6,"g");
-update t1 set b="h" where a=5;
-delete from t1 where b="g";
-show status like "Maria_pagecache_blocks_not_flushed";
-# force a checkpoint; there should be dirty pages and an open transaction
-set global maria_checkpoint_interval=10000;
-# do some more work
-update t1 set b="i" where a=5;
-let $mvr_restore_old_snapshot=0;
-let $mms_compare_physically=0;
-let $mvr_debug_option="+d,maria_crash";
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
-# Now we have a recovery, which should use the checkpoint record
-# and its dirty pages list.
--- source include/maria_verify_recovery.inc
-drop table t1;
-
---echo Test of REPAIR's implicit commit
-let $mms_tables=1;
-create table t1 (a varchar(100), key(a)) engine=maria;
-let $mvr_restore_old_snapshot=0;
-let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
-
-let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
-insert into t1 values(3);
--- source include/maria_make_snapshot_for_comparison.inc
-lock tables t1 write;
-insert into t1 values (1);
-repair table t1;
-insert into t1 values(2);
-select * from t1;
-
-# checksum comparison failure is expected, SELECT output matters
--- source include/maria_verify_recovery.inc
-# 2 should be missing (rolled back) but 1 should be committed
-select * from t1;
-drop table t1;
-
---echo * TEST of recovery when crash before bulk-insert-with-repair is committed
-create table t1 (a varchar(100), key(a)) engine=maria;
-create table t2 (a varchar(100)) engine=myisam;
-let $mvr_restore_old_snapshot=0;
-let $mms_compare_physically=0;
-let $mvr_crash_statement= set global maria_checkpoint_interval=1;
-let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
-set rand_seed1=12, rand_seed2=254; # repeatable
-insert into t2 values (rand());
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t2 select (rand()) from t2;
-insert into t1 values(30);
--- source include/maria_make_snapshot_for_comparison.inc
-lock tables t1 write, t2 read;
-delete from t1 limit 1;
-# 127 rows in t2, >100, so this will use repair-at-end
-insert into t1 select * from t2;
--- source include/maria_verify_recovery.inc
-show keys from t1; # should be enabled
-drop table t1;
-
---echo * TEST of recovery when OPTIMIZE has replaced the index file and crash
-create table t_corrupted1 (a varchar(100), key(a)) engine=maria;
-# we use a special name because this test portion will generate
-# corruption warnings, which we tell mtr_report.pl to ignore by
-# putting the message in mtr_report.pl, but we don't want to it ignore
-# corruption messages of other tests, hence the special name
-# 't_corrupted' and not just 't'.
-let $mms_tname=t_corrupted;
-let $mvr_restore_old_snapshot=0;
-let $mms_compare_physically=0;
-let $mvr_crash_statement= optimize table t_corrupted1;
-let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash_sort_index";
-insert into t_corrupted1 select (rand()) from t2;
--- source include/maria_make_snapshot_for_comparison.inc
-# Recovery will not fix the table, but we expect to see it marked
-# "crashed on repair".
-# Because crash is mild, the table is actually not corrupted, so the
-# "check table extended" done below fixes the table.
--- source include/maria_verify_recovery.inc
-drop table t_corrupted1, t2;
-
 # clean up everything
 let $mms_purpose=feeding_recovery;
 eval drop database mysqltest_for_$mms_purpose;

=== added file 'mysql-test/t/maria-recovery2-master.opt'
--- a/mysql-test/t/maria-recovery2-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/maria-recovery2-master.opt	2008-06-30 09:34:58 +0000
@@ -0,0 +1 @@
+--skip-stack-trace --skip-core-file --maria-log-dir-path=../tmp

=== added file 'mysql-test/t/maria-recovery2.test'
--- a/mysql-test/t/maria-recovery2.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/t/maria-recovery2.test	2008-06-30 09:34:58 +0000
@@ -0,0 +1,159 @@
+--source include/not_embedded.inc
+# Don't test this under valgrind, memory leaks will occur as we crash
+--source include/not_valgrind.inc
+# Binary must be compiled with debug for crash to occur
+--source include/have_debug.inc
+--source include/have_maria.inc
+
+set global maria_log_file_size=4294967295;
+let $MARIA_LOG=../tmp;
+
+--disable_warnings
+drop database if exists mysqltest;
+--enable_warnings
+create database mysqltest;
+let $mms_tname=t;
+
+# Include scripts can perform SQL. For it to not influence the main test
+# they use a separate connection. This way if they use a DDL it would
+# not autocommit in the main test.
+connect (admin, 127.0.0.1, root,,mysqltest,,);
+--enable_reconnect
+
+connection default;
+use mysqltest;
+--enable_reconnect
+
+let $mms_tables=1;
+let $mvr_restore_old_snapshot=0;
+let $mms_compare_physically=0;
+let $mvr_debug_option="+d,maria_flush_whole_log,maria_crash";
+let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+
+# Test of removing logs manually
+--echo * TEST of removing logs manually
+let $mel_keep_control_file=1;
+# this will shut mysqld down cleanly (so, take a checkpoint) and
+# remove only logs; at restart Maria will create a new log with a high
+# number
+-- source include/maria_empty_logs.inc
+let $mel_keep_control_file=0;
+# next test will help us verify that a next recovery is ok
+
+--echo * TEST of UNDO_ROW_DELETE preserving rowid
+# we want recovery to use the tables as they were at time of crash
+let $mvr_restore_old_snapshot=0;
+# UNDO phase prevents physical comparison, normally,
+# so we'll only use checksums to compare.
+let $mms_compare_physically=0;
+let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+create table t1(a int) engine=maria;
+insert into t1 values(1),(2);
+-- source include/maria_make_snapshot_for_comparison.inc
+lock tables t1 write;
+insert into t1 values(3);
+delete from t1 where a in (1,2,3);
+-- source include/maria_verify_recovery.inc
+drop table t1;
+
+# A basic checkpoint test
+--echo * TEST of checkpoint
+# Don't take a full checkpoints, we want to test checkpoint vs dirty pages
+set global debug="+d,info,query,enter,exit,loop,maria_checkpoint_indirect";
+# restart checkpoint thread for it to notice the above
+set global maria_checkpoint_interval=10000;
+create table t1(a int, b varchar(10), index(a,b)) engine=maria;
+insert into t1 values(1,"a"),(2,"b"),(3,"c");
+delete from t1 where b="b";
+update t1 set b="d" where a=1;
+-- source include/maria_make_snapshot_for_comparison.inc
+lock tables t1 write;
+insert into t1 values(4,"e"),(5,"f"),(6,"g");
+update t1 set b="h" where a=5;
+delete from t1 where b="g";
+show status like "Maria_pagecache_blocks_not_flushed";
+# force a checkpoint; there should be dirty pages and an open transaction
+set global maria_checkpoint_interval=10000;
+# do some more work
+update t1 set b="i" where a=5;
+let $mvr_restore_old_snapshot=0;
+let $mms_compare_physically=0;
+let $mvr_debug_option="+d,maria_crash";
+let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+# Now we have a recovery, which should use the checkpoint record
+# and its dirty pages list.
+-- source include/maria_verify_recovery.inc
+drop table t1;
+
+--echo Test of REPAIR's implicit commit
+let $mms_tables=1;
+create table t1 (a varchar(100), key(a)) engine=maria;
+let $mvr_restore_old_snapshot=0;
+let $mms_compare_physically=0;
+let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+
+let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
+insert into t1 values(3);
+-- source include/maria_make_snapshot_for_comparison.inc
+lock tables t1 write;
+insert into t1 values (1);
+repair table t1;
+insert into t1 values(2);
+select * from t1;
+
+# checksum comparison failure is expected, SELECT output matters
+-- source include/maria_verify_recovery.inc
+# 2 should be missing (rolled back) but 1 should be committed
+select * from t1;
+drop table t1;
+
+--echo * TEST of recovery when crash before bulk-insert-with-repair is committed
+create table t1 (a varchar(100), key(a)) engine=maria;
+create table t2 (a varchar(100)) engine=myisam;
+let $mvr_restore_old_snapshot=0;
+let $mms_compare_physically=0;
+let $mvr_crash_statement= set global maria_checkpoint_interval=1;
+let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash";
+set rand_seed1=12, rand_seed2=254; # repeatable
+insert into t2 values (rand());
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t2 select (rand()) from t2;
+insert into t1 values(30);
+-- source include/maria_make_snapshot_for_comparison.inc
+lock tables t1 write, t2 read;
+delete from t1 limit 1;
+# 127 rows in t2, >100, so this will use repair-at-end
+insert into t1 select * from t2;
+-- source include/maria_verify_recovery.inc
+show keys from t1; # should be enabled
+drop table t1;
+
+--echo * TEST of recovery when OPTIMIZE has replaced the index file and crash
+create table t_corrupted1 (a varchar(100), key(a)) engine=maria;
+# we use a special name because this test portion will generate
+# corruption warnings, which we tell mtr_report.pl to ignore by
+# putting the message in mtr_report.pl, but we don't want to it ignore
+# corruption messages of other tests, hence the special name
+# 't_corrupted' and not just 't'.
+let $mms_tname=t_corrupted;
+let $mvr_restore_old_snapshot=0;
+let $mms_compare_physically=0;
+let $mvr_crash_statement= optimize table t_corrupted1;
+let $mvr_debug_option="+d,maria_flush_whole_log,maria_flush_whole_page_cache,maria_crash_sort_index";
+insert into t_corrupted1 select (rand()) from t2;
+-- source include/maria_make_snapshot_for_comparison.inc
+# Recovery will not fix the table, but we expect to see it marked
+# "crashed on repair".
+# Because crash is mild, the table is actually not corrupted, so the
+# "check table extended" done below fixes the table.
+-- source include/maria_verify_recovery.inc
+drop table t_corrupted1, t2;
+
+# clean up everything
+let $mms_purpose=comparison;
+eval drop database mysqltest_for_$mms_purpose;
+drop database mysqltest;

Thread
bzr commit into MySQL/Maria:mysql-maria branch (guilhem:2653) Guilhem Bichot30 Jun