An error occurred fetching the project authors.
  1. 20 Sep, 2007 1 commit
    • unknown's avatar
      fix for non-debug compilation errors. · 95420b94
      unknown authored
      Note that non-debug build fails in log handler functions, mail sent.
      
      
      storage/maria/ma_blockrec.c:
        fix for compiler warning
      storage/maria/ma_checkpoint.c:
        Debug build does not catch this situation
        static int f();
        ...
        f(2);
        ...
        static int f(int a, int b);
        Maybe this is because it believes the declaration is K&R. Non-debug
        build catches it. Adding (void) as an habit to avoid such errors.
      storage/maria/ma_checkpoint.h:
        adding (void)
      storage/maria/ma_recovery.c:
        adding (void)
      storage/maria/ma_recovery.h:
        adding (void)
      95420b94
  2. 15 Sep, 2007 1 commit
    • unknown's avatar
      WL#3072 Maria Recovery · 9c2ff270
      unknown authored
      * recovery from ha_maria now skips replaying DDLs (too dangerous)
      * maria_read_log still replays DDLs, print warning about issues
      * fixes to replaying of REDO_RENAME
      * don't replay DDLs on corrupted tables (safer)
      * print a one-line message when really doing a recovery (applies to
      ha_maria, not maria_read_log) i.e. some REDOs or UNDOs are read.
      
      
      storage/maria/ma_checkpoint.c:
        fix for assertion failure
      storage/maria/ma_recovery.c:
        * Recovery from ha_maria now skips replaying DDLs (as the initial
        plan said) as this is unsafe in case of crashes during the DDL;
        applying the records may do harm (destroy important files)
        so we prefer to leave the "mess" of files untouched. A proper
        recovery of DDLs requires very careful thinking, probably testing
        separately the existence of the data and index file instead of
        using maria_open() which tests the existence of both, and maybe
        storing create_rename_lsn in the data file too.
        * maria_read_log still replays DDLs, we print a warning about dangers
        (due to ALTER TABLE not logging insertions into the tmp table; we
        will maybe need an option to have logging of those insertions).
        * fixes to replaying of REDO_RENAME (test create_rename_lsn of 'new_name'
        table if it exists; if that table exists and is more recent than the
        record, remove the 'old_name' table).
        * don't replay DDLs on corrupted tables (play safe)
        * fail also in non-debug builds if table is open when it should not be
        (when creating it for example, it should not be already open).
        * when the trace file is not stdout (i.e. when this is ha_maria),
        if really doing a recovery (reading REDOs or UNDOs), print a one-line
        message to stderr to inform about start and end of recovery
        (useful to know what mysqld is doing, especially if it takes long
        or crashes).
      storage/maria/ma_recovery.h:
        parameter to replay DDLs or not
      storage/maria/maria_read_log.c:
        replay DDLs in maria_read_log, to be able to recreate tables from
        scratch.
      9c2ff270
  3. 29 Aug, 2007 1 commit
    • unknown's avatar
      WL#3072 Maria recovery · e27890ca
      unknown authored
      * create page cache before initializing engine and not after, because
      Maria's recovery needs a page cache
      * make the creation of a bitmap page more crash-resistent
      * bugfix (see ma_blockrec.c)
      * back to old way: create an 8k bitmap page when creating table
      * preparations for the UNDO phase: recreate TRNs
      * preparations for Checkpoint: list of dirty pages, testing
      of rec_lsn to know if page should be skipped during Recovery
      (unused in this patch as no Checkpoint module pushed yet)
      * maria_chk tags repaired table with a special LSN
      * reworking all around in ma_recovery.c (less duplication)
      
      
      mysys/my_realloc.c:
        noted an issue in my_realloc()
      sql/mysqld.cc:
        page cache needs to be created before engines are initialized,
        because Maria's initialization may do a recovery which needs
        the page cache.
      storage/maria/ha_maria.cc:
        update to new prototype
      storage/maria/ma_bitmap.c:
        when creating the first bitmap page we used chsize to 8192 bytes then 
        pwrite (overwrite) the last 2 bytes (8191-8192). If crash between
        the two operations, this leaves a bitmap page full without its end
        marker. A later recovery may try to read this page and find it
        exists and misses a marker and conclude it's corrupted and fail.
        Changing the chsize to only 8190 bytes: recovery will then find
        the page is too short and recreate it entirely.
      storage/maria/ma_blockrec.c:
        Fix for a bug: when executing a REDO, if the data page is created,
        data_file_length was increased before _ma_bitmap_set():
        _ma_bitmap_set() called _ma_read_bitmap_page() which, due to the
        increased data_file_length, expected to find a bitmap page on disk
        with a correct end marker; if the bitmap page didn't exist already
        in fact, this failed. Fixed by increasing data_file_length only after
        _ma_read_bitmap_page() has created the new bitmap page correctly.
        This bug could happen every time a REDO is about creating a new
        bitmap page.
      storage/maria/ma_check.c:
        empty data file has a bitmap page
      storage/maria/ma_control_file.c:
        useless parameter to ma_control_file_create_or_open(), just
        test if this is recovery.
      storage/maria/ma_control_file.h:
        new prototype
      storage/maria/ma_create.c:
        Back to how it was before: maria_create() creates an 8k bitmap page.
        Thus (bugfix) data_file_length needs to reflect this instead of being 0.
      storage/maria/ma_loghandler.c:
        as ma_test1 and ma_test2 now use real transactions and not
        dummy_transaction_object, REDO for INSERT/UPDATE/DELETE are always
        about real transactions, can assert this.
        A function for Recovery to assign a short id to a table.
      storage/maria/ma_loghandler.h:
        new function
      storage/maria/ma_loghandler_lsn.h:
        maria_chk tags repaired tables with this LSN
      storage/maria/ma_open.c:
        * enforce that DMLs on transactional tables use real transactions
        and not dummy_transaction_object.
        * test if table was repaired with maria_chk (which has to been
        seen as an import of an external table into the server), test
        validity of create_rename_lsn (header corruption detection)
        * comments.
      storage/maria/ma_recovery.c:
        * preparations for the UNDO phase: recreate TRNs
        * preparations for Checkpoint: list of dirty pages, testing
        of rec_lsn to know if page should be skipped during Recovery
        (unused in this patch as no Checkpoint module pushed yet)
        * reworking all around (less duplication)
      storage/maria/ma_recovery.h:
        a parameter to say if the UNDO phase should be skipped
      storage/maria/maria_chk.c:
        tag repaired tables with a special LSN
      storage/maria/maria_read_log.c:
        * update to new prototype
        * no UNDO phase in maria_read_log for now
      storage/maria/trnman.c:
        * a function for Recovery to create a transaction (TRN), needed
        in the UNDO phase
        * a function for Recovery to grab an existing transaction, needed
        in the UNDO phase (rollback all existing transactions)
      storage/maria/trnman_public.h:
        new functions
      e27890ca
  4. 26 Jul, 2007 1 commit
    • unknown's avatar
      WL#3072 - Maria recovery · 6bbca54d
      unknown authored
      Unit test for recovery: runs ma_test1 and ma_test2 (both only with
      INSERTs and DELETEs; UPDATEs disabled as not handled by recovery)
      then moves the tables elswhere; recreates tables from the log, and
      compares and fails if there is a difference. Passes now.
      Most of maria_read_log.c moved to ma_recovery.c, as it will be re-used
      for recovery-from-ha_maria.
      Bugfixes of applying of REDO_INSERT, REDO_PURGE_ROW.
      Applying of REDO_PURGE_BLOCKS, REDO_DELETE_ALL, REDO_DROP_TABLE,
      UNDO_ROW_INSERT (in REDO phase only, i.e. just doing records++),
      UNDO_ROW_DELETE, UNDO_ROW_PURGE.
      Code cleanups.
      Monty: please look for "QQ". Sanja: please look for "Sanja".
      Future tasks: recovery of the bitmap (easy), recovery of the state
      (make it idempotent), more REDOs (Monty to work on
      REDO_UPDATE?), UNDO phase...
      Pushing this cset as it looks safe, contains test and bugfixes which
      will help Monty implement applying of REDO_UPDATE.
      
      
      sql/handler.cc:
        typo
      storage/maria/Makefile.am:
        Adding ma_test_recovery (which ma_test_all invokes, and which can
        also be run alone). Most of maria_read_log.c moved to ma_recovery.c
      storage/maria/ha_maria.cc:
        comments
      storage/maria/ma_bitmap.c:
        fixing comments. 2 -> sizeof(maria_bitmap_marker).
        Bitmap-related part of _ma_initialize_datafile() moves in bitmap module.
        Now putting the "bm" signature when creating the first bitmap page
        (it used to happen only at next open, but that
        caused an annoying difference when testing Recovery if the original
        run didn't open the table, and it looks more
        logical like this: it goes to disk only with its signature correct);
        see the "QQ" comment towards the _ma_initialize_data_file() call
        in ma_create.c for more).
        When reading a bitmap page, verify its signature (happens when normally
        using the table or when CHECKing it; not when REPAIRing it).
      storage/maria/ma_blockrec.c:
        * no need to sync the data file if table is not transactional
        * Comments, code cleanup (log-related data moved to log-related code
        block, int5store->page_store).
        * Store the table's short id into LOGREC_UNDO_ROW_PURGE, like we
        do for other records (though this record will soon be replaced
        with a CLR).
        * If "page" is 1 it means the page which extends from byte
        page*block_size+1 to (page+1)*block_size (byte number 1 being
        the first byte of the file). The last byte of the file is
        data_file_length (same convention).
        A new page needs to be created if the last byte of the page is
        beyond the last byte of the file, i.e.
         (page+1)*block_size+1 > data_file_length, so we correct the test
        (bug found when testing log applying for ma_test1 -M -T --skip-update).
        * update the page's LSN when removing a row from it during
        execution of a REDO_PURGE_ROW record (bug found when testing log
        applying for ma_test1 -M -T --skip-update).
        * applying of REDO_PURGE_BLOCKs (limited to a one-page range for now).
      storage/maria/ma_blockrec.h:
        new functions. maria_bitmap_marker does not need to be exported.
      storage/maria/ma_close.c:
        we can always flush the table's state when closing the last instance
        of the table. And it is needed for maria_read_log (as it does
        not use maria_lock_database()).
      storage/maria/ma_control_file.c:
        when in Recovery, some assertions should not be used.
      storage/maria/ma_control_file.h:
        double-inclusion safe
      storage/maria/ma_create.c:
        during recovery, don't log records. Comments.
        Moving the creation of the first bitmap page to ma_bitmap.c
      storage/maria/ma_delete_table.c:
        during recovery, don't log records. Log the end-zero of the dropped
        table's name, so that recovery can use the string in place without
        extending it to fit an end zero.
      storage/maria/ma_loghandler.c:
        * inwrite_rec_hook also needs access to the MARIA_SHARE, like
        prewrite_rec_hook. This will be needed to update
        share->records_diff (in the upcoming patch "recovery of the state").
        * LOG_DESC::record_ends_group changed to an enum.
        * LOG_DESC for LOGREC_REDO_PURGE_BLOCKS and LOGREC_UNDO_ROW_PURGE
        corrected
        * Sanja please see the @todo LOG BUG
        * avoiding DBUG_RETURN(func()) as it gives confusing debug traces.
      storage/maria/ma_loghandler.h:
        - log write hooks called while the log's lock is held (inwrite_rec_hook)
        now need the MARIA_SHARE, like prewrite_rec_hook already had
        - instead of a bool saying if this record's type ends groups or not,
        we refine: it may not end a group, it may end a group, or it may
        be a group in itself. Imagine that we had a physical write failure
        to a table before we log the UNDO, we still end up in
        external_lock(F_UNLCK) and then we log a COMMIT: we don't want
        to consider this COMMIT as ending the group of REDOs (don't want
        to execute those REDOs during Recovery), that's why we say "COMMIT
        is a group in itself, it aborts any previous group". This also
        gives one more sanity check in maria_read_log.
      storage/maria/ma_recovery.c:
        New Recovery code, replacing the old pseudocode.
        Most of maria_read_log moved here.
        Call-able from ha_maria, but not enabled yet.
        Compared to the previous version of maria_read_log, some bugs have
        been fixed, debugging output can go to stdout or a disk file (for now
        it's useful for me, later it can be changed), execution of
        REDO_DROP_TABLE, REDO_DELETE_ALL, REDO_PURGE_BLOCKS has been added. Duplicate code
        has been factored into functions. We abort an unfinished group
        of records if we see a record which is a group in itself (like COMMIT).
        No need for maria_panic() after a bug (which caused tables to not
        be closed) was fixed; if there is yet another bug I prefer to see it.
        When opening a table for Recovery, set data_file_length
        and key_file_length to their real physical value (these are the
        easiest state members to restore :). Warn us if the last page
        was truncated (but Recovery handles it).
        MARIA_SHARE::state::state::records is now partly recovered (not
        idempotent, but works if recreating tables from scracth).
        When applying a REDO to a page, stamp it with the UNDO's LSN
        (current_group_end_lsn), not with the REDO's LSN; it makes
        the table more identical to the original table (easier to compare
        the two tables in the end).
        Big thing missing: some types of REDOs are not handled,
        and the UNDO phase does not exist (missing functions to execute UNDOs
        to actually rollback). So for now tests are only inserting/deleting
        a few 100 rows, closing the table and seeing if the log is applied ok;
        it works. UPDATE not handled.
      storage/maria/ma_recovery.h:
        new functions: ma_recover() for recovery from inside ha_maria;
        _ma_apply_log() for maria_read_log (ma_recover() calls _ma_apply_log()).
        Btw, we need to not use the word "recover" for REPAIR/maria_chk anymore.
      storage/maria/ma_rename.c:
        don't write log records during recovery
      storage/maria/ma_test2.c:
        - fail if maria_info() or other subtests find some wrong information
        - new option -g to skip updates.
        - init the translog before creating the table, so that log applying
        can work.
        - in "#if 0" you'll see some fixed bugs (will be removed).
      storage/maria/ma_test_all.sh:
        cleanup files. Test log applying.
      storage/maria/maria_read_log.c:
        most of the logic moves to ma_recovery.c to be shared between
        maria_read_log and recovery-from-inside-mysqld.
        See ma_recovery.c for additional changes made to the moved code.
      storage/maria/ma_test_recovery:
        unit test for Recovery. Tests insert and delete,
        REDO_UPDATE not yet coded.
        Script is called from ma_test_all. Can run standalone.
      6bbca54d
  5. 26 Jun, 2007 1 commit
    • 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
  6. 02 Mar, 2007 1 commit
    • unknown's avatar
      GPL license update (same change as was done for all files in 5.1). · 46922b51
      unknown authored
      storage/maria/Makefile.am:
        GPL license update
      storage/maria/ft_maria.c:
        GPL license update
      storage/maria/ha_maria.cc:
        GPL license update
      storage/maria/ha_maria.h:
        GPL license update
      storage/maria/lockman.c:
        GPL license update
      storage/maria/lockman.h:
        GPL license update
      storage/maria/ma_bitmap.c:
        GPL license update
      storage/maria/ma_blockrec.c:
        GPL license update
      storage/maria/ma_blockrec.h:
        GPL license update
      storage/maria/ma_cache.c:
        GPL license update
      storage/maria/ma_changed.c:
        GPL license update
      storage/maria/ma_check.c:
        GPL license update
      storage/maria/ma_checkpoint.c:
        GPL license update
      storage/maria/ma_checkpoint.h:
        GPL license update
      storage/maria/ma_checksum.c:
        GPL license update
      storage/maria/ma_close.c:
        GPL license update
      storage/maria/ma_control_file.c:
        GPL license update
      storage/maria/ma_control_file.h:
        GPL license update
      storage/maria/ma_create.c:
        GPL license update
      storage/maria/ma_dbug.c:
        GPL license update
      storage/maria/ma_delete.c:
        GPL license update
      storage/maria/ma_delete_all.c:
        GPL license update
      storage/maria/ma_delete_table.c:
        GPL license update
      storage/maria/ma_dynrec.c:
        GPL license update
      storage/maria/ma_extra.c:
        GPL license update
      storage/maria/ma_ft_boolean_search.c:
        GPL license update
      storage/maria/ma_ft_eval.c:
        GPL license update
      storage/maria/ma_ft_eval.h:
        GPL license update
      storage/maria/ma_ft_nlq_search.c:
        GPL license update
      storage/maria/ma_ft_parser.c:
        GPL license update
      storage/maria/ma_ft_stem.c:
        GPL license update
      storage/maria/ma_ft_test1.c:
        GPL license update
      storage/maria/ma_ft_test1.h:
        GPL license update
      storage/maria/ma_ft_update.c:
        GPL license update
      storage/maria/ma_ftdefs.h:
        GPL license update
      storage/maria/ma_fulltext.h:
        GPL license update
      storage/maria/ma_info.c:
        GPL license update
      storage/maria/ma_init.c:
        GPL license update
      storage/maria/ma_key.c:
        GPL license update
      storage/maria/ma_keycache.c:
        GPL license update
      storage/maria/ma_least_recently_dirtied.c:
        GPL license update
      storage/maria/ma_least_recently_dirtied.h:
        GPL license update
      storage/maria/ma_locking.c:
        GPL license update
      storage/maria/ma_open.c:
        GPL license update
      storage/maria/ma_packrec.c:
        GPL license update
      storage/maria/ma_page.c:
        GPL license update
      storage/maria/ma_panic.c:
        GPL license update
      storage/maria/ma_preload.c:
        GPL license update
      storage/maria/ma_range.c:
        GPL license update
      storage/maria/ma_recovery.c:
        GPL license update
      storage/maria/ma_recovery.h:
        GPL license update
      storage/maria/ma_rename.c:
        GPL license update
      storage/maria/ma_rfirst.c:
        GPL license update
      storage/maria/ma_rkey.c:
        GPL license update
      storage/maria/ma_rlast.c:
        GPL license update
      storage/maria/ma_rnext.c:
        GPL license update
      storage/maria/ma_rnext_same.c:
        GPL license update
      storage/maria/ma_rprev.c:
        GPL license update
      storage/maria/ma_rrnd.c:
        GPL license update
      storage/maria/ma_rsame.c:
        GPL license update
      storage/maria/ma_rsamepos.c:
        GPL license update
      storage/maria/ma_rt_index.c:
        GPL license update
      storage/maria/ma_rt_index.h:
        GPL license update
      storage/maria/ma_rt_key.c:
        GPL license update
      storage/maria/ma_rt_key.h:
        GPL license update
      storage/maria/ma_rt_mbr.c:
        GPL license update
      storage/maria/ma_rt_mbr.h:
        GPL license update
      storage/maria/ma_rt_split.c:
        GPL license update
      storage/maria/ma_rt_test.c:
        GPL license update
      storage/maria/ma_scan.c:
        GPL license update
      storage/maria/ma_search.c:
        GPL license update
      storage/maria/ma_sort.c:
        GPL license update
      storage/maria/ma_sp_defs.h:
        GPL license update
      storage/maria/ma_sp_key.c:
        GPL license update
      storage/maria/ma_sp_test.c:
        GPL license update
      storage/maria/ma_static.c:
        GPL license update
      storage/maria/ma_statrec.c:
        GPL license update
      storage/maria/ma_test1.c:
        GPL license update
      storage/maria/ma_test2.c:
        GPL license update
      storage/maria/ma_test3.c:
        GPL license update
      storage/maria/ma_unique.c:
        GPL license update
      storage/maria/ma_update.c:
        GPL license update
      storage/maria/ma_write.c:
        GPL license update
      storage/maria/maria_chk.c:
        GPL license update
      storage/maria/maria_def.h:
        GPL license update
      storage/maria/maria_ftdump.c:
        GPL license update
      storage/maria/maria_pack.c:
        GPL license update
      storage/maria/tablockman.c:
        GPL license update
      storage/maria/tablockman.h:
        GPL license update
      storage/maria/trnman.c:
        GPL license update
      storage/maria/trnman.h:
        GPL license update
      46922b51
  7. 14 Sep, 2006 1 commit
    • unknown's avatar
      WL#3071 Maria checkpoint: · cdf831cf
      unknown authored
          changing pseudocode to use the structures of the Maria pagecache
          ("pagecache->changed_blocks" etc) and other Maria structures
          inherited from MyISAM (THR_LOCK_maria etc).
      
      
      mysys/mf_pagecache.c:
        comment
      storage/maria/ma_checkpoint.c:
        changing pseudocode to use the structures of the Maria pagecache
        ("pagecache->changed_blocks" etc) and other Maria structures
        inherited from MyISAM (THR_LOCK_maria etc).
      storage/maria/ma_checkpoint.h:
        copyright
      storage/maria/ma_control_file.c:
        copyright
      storage/maria/ma_control_file.h:
        copyright
      storage/maria/ma_least_recently_dirtied.c:
        copyright
      storage/maria/ma_least_recently_dirtied.h:
        copyright
      storage/maria/ma_recovery.c:
        copyright
      storage/maria/ma_recovery.h:
        copyright
      storage/maria/unittest/Makefile.am:
        copyright
      cdf831cf
  8. 01 Sep, 2006 1 commit
    • unknown's avatar
      WL#3234 "Maria - control file manager" · a1f25544
      unknown authored
      - fixes to the control file module
      - unit test for it
      - renames of all Maria files I created to start with ma_
      
      
      storage/maria/ma_checkpoint.c:
        Rename: storage/maria/checkpoint.c -> storage/maria/ma_checkpoint.c
      storage/maria/ma_checkpoint.h:
        Rename: storage/maria/checkpoint.h -> storage/maria/ma_checkpoint.h
      storage/maria/ma_least_recently_dirtied.c:
        Rename: storage/maria/least_recently_dirtied.c -> storage/maria/ma_least_recently_dirtied.c
      storage/maria/ma_least_recently_dirtied.h:
        Rename: storage/maria/least_recently_dirtied.h -> storage/maria/ma_least_recently_dirtied.h
      storage/maria/ma_recovery.c:
        Rename: storage/maria/recovery.c -> storage/maria/ma_recovery.c
      storage/maria/ma_recovery.h:
        Rename: storage/maria/recovery.h -> storage/maria/ma_recovery.h
      storage/maria/Makefile.am:
        control file module and its unit test program
      storage/maria/ma_control_file.c:
        DBUG_ tags. Fix for gcc warnings.
        log_no -> logno (I felt "_no" sounded like a standalone "No" word).
        ma_ prefix for some functions.
        last_checkpoint_lsn_at_startup -> last_checkpoint_lsn (no need
        to make special vars for the values at startup). Same for last_logno.
        ma_control_file_write_and_force() now updates last_checkpoint_lsn
        and last_logno, the idea being that they belong to the module,
        others should not update them.
        And thus when the module shuts down, it zeroes those vars.
      storage/maria/ma_control_file.h:
        importing structs from Sanja to get the control file module to compile;
        we'll remove that when Sanja pushes the log handler.
        CONTROL_FILE_IMPOSSIBLE_LOGNO is 0, not FFFFFFFF.
      storage/maria/ma_control_file_test.c:
        Unit test program for the Maria control file module.
        Modelled after other ma_test* files in this directory (so, does
        not follow the unit test framework recently introduced with libtap;
        TODO as a task on all ma_test* programs).
        We test that writing to the control file works, and re-reading from it
        too, we check (by reading the file by ourselves) that its content
        on disk is correct, and check that a corrupted control file is detected.
      a1f25544
  9. 27 Apr, 2006 1 commit
    • unknown's avatar
      Maria: first version of checkpoint (WL#3071), least-recently-dirtied page... · 06f7675b
      unknown authored
      Maria: first version of checkpoint (WL#3071), least-recently-dirtied page flushing (WL#3261), recovery (WL#3072),
      control file (WL#3234), to serve as a detailed LLD. It looks like C code, but does not compile (no point in making it compile,
      as other modules on which I depend are not yet fully speficied or written); some pieces are not coded and just marked in comments.
      Files' organization (names, directories of C files) does not matter at this point.
      I don't think I had to commit so early, but it feels good to publish something, gives me the impression of moving forward :)
      
      
      storage/maria/checkpoint.c:
        WL#3071 Maria checkpoint, implementation
      storage/maria/checkpoint.h:
        WL#3071 Maria checkpoint, interface
      storage/maria/control_file.c:
        WL#3234 Maria control file, implementation
      storage/maria/control_file.h:
        WL#3234 Maria control file, interface
      storage/maria/least_recently_dirtied.c:
        WL#3261 Maria background flushing of least-recently-dirtied pages, implementation
      storage/maria/least_recently_dirtied.h:
        WL#3261 Maria background flushing of least-recently-dirtied pages, interface
      storage/maria/recovery.c:
        WL#3072 Maria recovery, implementation
      storage/maria/recovery.h:
        WL#3072 Maria recovery, interface
      06f7675b