• unknown's avatar
    WL#3072 Maria Recovery · adac9798
    unknown authored
    - new program maria_read_log to display and apply log records
    found in a Maria log (see file's revision comment)
    - minor, misc fixes
    
    
    storage/maria/Makefile.am:
      new program maria_read_log
    storage/maria/ha_maria.cc:
      create control file if missing
    storage/maria/ma_blockrec.c:
      0 -> LSN_IMPOSSIBLE; comments
    storage/maria/ma_checkpoint.h:
      preparations for Checkpoint module
    storage/maria/ma_close.c:
      comment
    storage/maria/ma_control_file.c:
      renaming constants.
      Possibility to say "open control file but don't create it if it's
      missing" (used by maria_read_log which does not want to create
      anything)
    storage/maria/ma_control_file.h:
      renaming constants
    storage/maria/ma_create.c:
      I had duplicated "linkname" and "linkname_ptr", now I see it's not
      needed, reverting. Indeed those variables don't contain interesting
      information; fixing log record accordingly (the links are in
      ci->data/index_file_name). Storing keystart in log record is needed,
      to know at which size we must extend the file if we replay
      LOGREC_CREATE_TABLE.
    storage/maria/ma_loghandler.c:
      some structures need to be known to maria_read_log.c, taking
      them to ma_loghandler.h
    storage/maria/ma_loghandler.h:
      we have page_store, adding page_korr.
      translog_lock() made public, because Checkpoint will need it (to
      write to control file).
      Some structures moved from ma_loghandler.c because maria_read_log.c
      needs them (needs to know the execute-in-REDO-phase hooks of each
      record).
    storage/maria/ma_loghandler_lsn.h:
      constants defined in ma_control_file.h serve everywhere,
      and they relate to LSNs, so putting them in ma_loghandler_lsn.h.
      Stronger constraints in LSN_VALID().
    storage/maria/ma_pagecache.c:
      renaming constants
    storage/maria/ma_recovery.h:
      copyright
    storage/maria/ma_test1.c:
      new prototype
    storage/maria/ma_test2.c:
      new prototype
    storage/maria/trnman_public.h:
      double-inclusion safe
    storage/maria/unittest/ma_control_file-t.c:
      constants renamed, new prototype
    storage/maria/unittest/ma_test_loghandler-t.c:
      constants renamed, new prototype
    storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
      constants renamed, new prototype
    storage/maria/unittest/ma_test_loghandler_multithread-t.c:
      constants renamed, new prototype
    storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
      constants renamed, new prototype
    storage/myisam/mi_close.c:
      comment
    storage/maria/maria_read_log.c:
      program to read and print log records from a Maria transaction log,
      and optionally apply them to tables. Very basic, early version.
      Should serve as a base for Recovery's code. Designed to be idempotent.
      Create a log by running maria.test, then cd to var/master-data
      and run "maria_read_log --only-display" to see info about records;
      run "maria_read_log --display-and-apply" to also apply the records
      to tables (it's more interesting if you first wipe out the
      tables in var/master-data/test, to see how they get re-created).
      Only a few records are handled by now: LONG_TRANSACTION_ID,
      COMMIT, FILE_ID, REDO_CREATE_TABLE; place is ready for
      REDO_INSERT_ROW_HEAD where I could use Monty's help (search for
      "Monty" in the file). Note: changes to the index pages, index's header
      and bitmap pages are not properly logged yet, so don't expect
      the program to work with that.
    adac9798
ma_loghandler_lsn.h 1.97 KB