mariadb/storage/maria
unknown 5fbd5dafe7 * WL#4137 Maria- Framework for testing recovery in mysql-test-run
See test maria-recovery.test for a model; all include scripts have
an "API" section at start if they do take parameters from outside.
* Fixing bug reported by Jani and Monty (when two REDOs about the same
page in one group, see ma_blockrec.c). 
* Fixing small bugs in recovery


mysql-test/include/wait_until_connected_again.inc:
  be sure to enter the loop (the previous query by the caller may not have
  failed: it could be
  query;
  mysqladmin shutdown;
  call this script).
mysql-test/lib/mtr_process.pl:
  * Through the "expect" file a test can tell mtr that a server crash
  is expected. What the file contains is irrelevant. Now if its last
  line starts with "wait", mtr will wait before restarting (it will
  wait for the last line to not start with "wait"). This is for
  tests which need to mangle files under the feet of a dead mysqld.
  * Remove "expect" file before restarting; otherwise there could be a
  race condition: tests sees server restarted, does something, writes
  an "expect" file, and then mtr removes that file, then
  test kills mysqld, and then mtr will never restart it.
storage/maria/ma_blockrec.c:
  - when applying a REDO in recovery, we don't anymore put UNDO's LSN on the page
  at once; indeed if in this REDO's group there comes another REDO
  for the same page it would be wrongly skipped. Instead, we keep
  pages pinned, don't change their LSN. When done with all REDOs
  of the group we unpin them and stamp them with UNDO's LSN.
  - fixing bug in applying of REDO_PURGE_BLOCKS in recovery: page_range
  sometimes has TAIL_BIT set, need to turn it down to know the real page
  range.
  - Both bugs are covered in maria-recovery.test
storage/maria/ma_checkpoint.c:
  Capability to, in debug builds only, do some special operations
  (flush all bitmap and data pages, flush state, flush log)
  and crash mysqld, to later test recovery.
   Driven by some --debug=d, symbols.
storage/maria/ma_open.c:
  debugging info
storage/maria/ma_pagecache.c:
  Now that we can _ma_unpin_all_pages() during the REDO phase
  to set page's LSN, the assertion needs to be relaxed.
storage/maria/ma_recovery.c:
  - open trace file in append mode (useful when a test triggers several
  recoveries, we see them all).
  - fixing wrong error detection, it's possible that during recovery
  we want to open an already open table.
  - when applying a REDO in recovery, we don't anymore put UNDO's LSN on the page
  at once; indeed if in this REDO's group there comes another REDO
  for the same page it would be wrongly skipped. Instead, we keep
  pages pinned, don't change their LSN. When done with all REDOs
  of the group we unpin them and stamp them with UNDO's LSN.
  - we verify that all log records of a group are about the same table,
  for debugging.
mysql-test/r/maria-recovery.result:
  result
mysql-test/t/maria-recovery-master.opt:
  crash is expected, core file would take room, stack trace would
  wake pushbuild up.
mysql-test/t/maria-recovery.test:
  Test of recovery from mysql-test (it is already tested as unit tests
  in ma_test_recovery) (WL#4137)
  - test that, if recovery is made to start on an empty table it can
  replay the effects of committed and uncommitted statements (having only
  the committed ones in the end result). This should be the first test
  for someone writing code of new REDOs.
  - test that, if mysqld is crashed and recovery runs we have only
  committed statements in the end result. Crashes are done in different
  ways: flush nothing (so, uncommitted statement is often missing
  from the log => no rollback to do); flush pagecache (implicitely flushes
  log (WAL)) and flush log, both causes rollbacks; flush log can also
  flush state (state.records etc) to test recovery of the state
  (not tested well now as we repair the index anyway).
  - test of bug found by Jani and Monty in recovery (two REDO about
  the same page in one group).
mysql-test/include/maria_empty_logs.inc:
  removes logs, to have a clean sheet for testing recovery.
mysql-test/include/maria_make_snapshot.inc:
  copies a table to another directory, or back, or compares both
  (comparison is not implemented as physical comparison is impossible
  if an UNDO phase happened).
mysql-test/include/maria_make_snapshot_for_comparison.inc:
  copies tables to another directory so that they can later
  serve as a comparison reference (they are the good tables,
  recovery should produce similar ones).
mysql-test/include/maria_make_snapshot_for_feeding_recovery.inc:
  When we want to force recovery to start on old tables, we prepare
  old tables with this script: we put them in a spare directory.
  They are later copied back over mysqltest tables while mysqld is dead.
  We also need to copy back the control file, otherwise mysqld,
  in recovery, would start from the latest checkpoint: latest
  checkpoint plus old tables is not a recovery-possible scenario of course.
mysql-test/include/maria_verify_recovery.inc:
  causes mysqld to crash, restores old tables if requested,
  lets recovery run, compares resulting tables with reference tables
  by using CHECKSUM TABLE.
  We don't do any sanity checks on page's LSN in resulting tables, yet.
2007-11-13 17:12:29 +01:00
..
unittest Infinite loop in case of given address more then last LSN fixed. 2007-11-09 22:32:23 +02:00
CMakeLists.txt After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ft_maria.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ha_maria.cc WL#3071 - Maria checkpoint 2007-11-09 23:30:31 +01:00
ha_maria.h fixed typo in the comment. 2007-10-15 22:02:18 +03:00
lockman.c This patch is a collection of patches from from Sanja, Sergei and Monty. 2007-05-29 20:13:56 +03:00
lockman.h GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
ma_bitmap.c WL#3071 Maria checkpoint 2007-11-11 15:27:07 +01:00
ma_blockrec.c * WL#4137 Maria- Framework for testing recovery in mysql-test-run 2007-11-13 17:12:29 +01:00
ma_blockrec.h WL#3072 - Maria recovery. 2007-10-02 18:02:09 +02:00
ma_cache.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_changed.c GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
ma_check.c Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria 2007-10-04 23:33:55 +03:00
ma_check_standalone.h WL#3072 Maria recovery. 2007-10-03 18:10:32 +02:00
ma_checkpoint.c * WL#4137 Maria- Framework for testing recovery in mysql-test-run 2007-11-13 17:12:29 +01:00
ma_checkpoint.h WL#3071 - Maria checkpoint 2007-10-19 14:15:13 +02:00
ma_checksum.c Added applying of undo for updates 2007-09-09 19:15:10 +03:00
ma_close.c WL#3071 - Maria checkpoint 2007-11-09 23:30:31 +01:00
ma_commit.c WL#3072 - Maria recovery. 2007-10-02 18:02:09 +02:00
ma_commit.h - WL#3239 "log CREATE TABLE in Maria" 2007-06-22 14:49:37 +02:00
ma_control_file.c WL#3072 Maria recovery 2007-08-29 16:43:01 +02:00
ma_control_file.h WL#3072 Maria recovery 2007-08-29 16:43:01 +02:00
ma_create.c Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria 2007-10-04 23:33:55 +03:00
ma_dbug.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_delete.c Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria 2007-10-04 23:33:55 +03:00
ma_delete_all.c WL#3072 Maria recovery, cleanups, removing some out-of-date @todos 2007-10-16 16:22:13 +02:00
ma_delete_table.c WL#3072 - Maria recovery. 2007-10-02 18:02:09 +02:00
ma_dynrec.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_extra.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_ft_boolean_search.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_ft_eval.c Fixes after review of guilhem of block record patch 2007-04-19 13:18:56 +03:00
ma_ft_eval.h GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
ma_ft_nlq_search.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_ft_parser.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_ft_stem.c GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
ma_ft_test1.c Fixes after review of guilhem of block record patch 2007-04-19 13:18:56 +03:00
ma_ft_test1.h GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
ma_ft_update.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_ftdefs.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_fulltext.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_info.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_init.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_key.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_keycache.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_locking.c WL#3072 Maria recovery 2007-10-08 19:08:25 +02:00
ma_loghandler.c Infinite loop in case of given address more then last LSN fixed. 2007-11-09 22:32:23 +02:00
ma_loghandler.h WL#3072 - Maria recovery. 2007-10-02 18:02:09 +02:00
ma_loghandler_lsn.h WL#3072 Maria recovery 2007-10-16 14:56:38 +02:00
ma_open.c * WL#4137 Maria- Framework for testing recovery in mysql-test-run 2007-11-13 17:12:29 +01:00
ma_packrec.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_page.c Support of rec_lsn added to pagecache_write call. 2007-11-05 15:07:50 +02:00
ma_pagecache.c * WL#4137 Maria- Framework for testing recovery in mysql-test-run 2007-11-13 17:12:29 +01:00
ma_pagecache.h Support of rec_lsn added to pagecache_write call. 2007-11-05 15:07:50 +02:00
ma_pagecaches.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_panic.c - WL#3239 "log CREATE TABLE in Maria" 2007-06-22 14:49:37 +02:00
ma_preload.c Support of rec_lsn added to pagecache_write call. 2007-11-05 15:07:50 +02:00
ma_range.c fixes of bad merge (probably). Less duplication in ma_test_recovery. 2007-08-06 16:13:42 +02:00
ma_recovery.c * WL#4137 Maria- Framework for testing recovery in mysql-test-run 2007-11-13 17:12:29 +01:00
ma_recovery.h WL#3072 Maria recovery 2007-10-16 14:56:38 +02:00
ma_rename.c WL#3072 - Maria recovery. 2007-10-02 18:02:09 +02:00
ma_rfirst.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rkey.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_rlast.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rnext.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rnext_same.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rprev.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rrnd.c Fixes for bugs found by maria.test and event*tests: 2007-08-21 20:54:11 +03:00
ma_rsame.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rsamepos.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rt_index.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_rt_index.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rt_key.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_rt_key.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rt_mbr.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rt_mbr.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_rt_split.c merging MyISAM changes into Maria (not done in 5.1->maria merge of 2007-07-27 12:06:39 +02:00
ma_rt_test.c GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
ma_scan.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_search.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_sort.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_sp_defs.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_sp_key.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_sp_test.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_static.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_statrec.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_test1.c WL#3071 - Maria checkpoint 2007-10-19 14:15:13 +02:00
ma_test2.c WL#3071 - Maria checkpoint 2007-10-19 14:15:13 +02:00
ma_test3.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
ma_test_all.res After merge fixes 2007-01-26 13:32:02 +02:00
ma_test_all.sh Generalized the way update and redo extends the size of a directory record. 2007-08-31 10:19:54 +03:00
ma_test_recovery WL#3071 Maria checkpoint 2007-10-17 16:55:26 +02:00
ma_test_recovery.expected WL#3071 Maria checkpoint 2007-10-17 16:55:26 +02:00
ma_unique.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
ma_update.c Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria 2007-10-04 23:33:55 +03:00
ma_write.c comments 2007-11-11 19:01:53 +01:00
Makefile.am WL#3072 Maria recovery. 2007-10-03 18:10:32 +02:00
maria_chk.c Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-maria 2007-10-04 23:33:55 +03:00
maria_def.h after-merge fixes for 64bit 2007-10-06 11:39:26 +02:00
maria_ftdump.c Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
maria_pack.c After merge fixes. Applied changes made in myisam manually to maria. 2007-10-04 20:33:42 +03:00
maria_read_log.c WL#3072 Maria recovery 2007-10-16 14:56:38 +02:00
maria_rename.sh Added storage/maria (based on MyISAM). WL#3245 2006-04-11 16:45:10 +03:00
plug.in enable --with-maria-storage-engine 2007-09-07 19:45:33 +02:00
tablockman.c WL#3072 Maria recovery: 2007-08-01 15:52:57 +02:00
tablockman.h GPL license update (same change as was done for all files in 5.1). 2007-03-02 11:20:23 +01:00
test_pack Added storage/maria (based on MyISAM). WL#3245 2006-04-11 16:45:10 +03:00
trnman.c WL#3071 Maria checkpoint 2007-09-12 11:27:34 +02:00
trnman.h Merged with mysql-5.1 main tree. 2007-07-02 20:45:15 +03:00
trnman_public.h WL#3072 - Maria Recovery 2007-09-07 15:52:25 +02:00