An error occurred fetching the project authors.
  1. 13 Aug, 2007 1 commit
    • unknown's avatar
      First LSN calls added for transaction log. · 4cf6756e
      unknown authored
      storage/maria/ma_checkpoint.c:
        Definitions of LSN should be collected in
        the one file (ma_loghandler_lsn.h)
      storage/maria/ma_loghandler.c:
        New calls to get first theoretical and first real LSN.
      storage/maria/ma_loghandler.h:
        New calls to get first theoretical and first real LSN.
      storage/maria/ma_loghandler_lsn.h:
        Defined yet another impossible LSN to indicate error.
      storage/maria/ma_recovery.c:
        The first LSN call changed.
      storage/maria/maria_read_log.c:
        The first LSN call changed.
      storage/maria/unittest/Makefile.am:
        New unittest added.
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        New BitKeeper file ``storage/maria/unittest/ma_test_loghandler_first_lsn-t.c''
      4cf6756e
  2. 02 Aug, 2007 1 commit
    • unknown's avatar
      WL#3072 Maria checkpoint · 91f03a4d
      unknown authored
      Preparation: for the two-checkpoint rule we will flush all pages
      which have block->rec_lsn <= last_checkpoint_lsn. Pages with
      rec_lsn not yet set (i.e. ==0) were dirtied very recently and so should
      not be flushed (otherwise it's not efficient: we should try to let
      a page be modified several times in memory before we flush it to disk).
      To make this easy, "block->rec_lsn not yet set" is now expressed
      with block->rec_lsn==LSN_MAX, not block->rec_lsn==0 anymore.
      It is easier this way because LSN_MAX>last_checkpoint_lsn whereas
      0<=last_checkpoint_lsn.
      
      
      storage/maria/ma_blockrec.c:
        typo
      storage/maria/ma_loghandler.c:
        typo
      storage/maria/ma_loghandler_lsn.h:
        LSN_MAX
      storage/maria/ma_pagecache.c:
        "block->rec_lsn not yet set" is now expressed by block->rec_lsn==LSN_MAX,
        not block_rec_lsn==0.
      91f03a4d
  3. 03 Jul, 2007 1 commit
    • unknown's avatar
      Implement applying of REDO entries for · 85da5133
      unknown authored
      - LOGREC_REDO_INSERT_ROW_HEAD
      - LOGREC_REDO_INSERT_ROW_TAIL
      - LOGREC_REDO_PURGE_ROW_HEAD
      - LOGREC_REDO_PURGE_ROW_TAIL
      
      
      sql/sql_yacc.yy:
        Fixed typo in previous push
      storage/maria/ma_bitmap.c:
        Ensure we flush the new bitmap on close
      storage/maria/ma_blockrec.c:
        Implement applying of REDO entries for
        - LOGREC_REDO_INSERT_ROW_HEAD
        - LOGREC_REDO_INSERT_ROW_TAIL
        - LOGREC_REDO_PURGE_ROW_HEAD
        - LOGREC_REDO_PURGE_ROW_TAIL
        Split some functions into subfunctions to be able to reuse code
      storage/maria/ma_blockrec.h:
        Added prototypes for REDO applying functions
      storage/maria/ma_loghandler.h:
        Safety fix
      storage/maria/ma_loghandler_lsn.h:
        Avoid compiler warnings
      storage/maria/maria_read_log.c:
        Added hocks for:
        - REDO_INSERT_ROW_HEAD
        - REDO_INSERT_ROW_TAIL
        - REDO_PURGE_ROW_HEAD
        - REDO_PURGE_ROW_TAIL
        
        Added dummy hooks for:
        - UNDO_ROW_INSERT
        - UNDO_ROW_DELETE
        
        Changed to use maria_pagecache instead of own pagecache (fixed problem with unitialized share->pagecache)
        Use maria_panic() at end to ensure that all files are closed properly.
        Fixed option handling for --debug
      85da5133
  4. 02 Jul, 2007 1 commit
    • unknown's avatar
      Merged with mysql-5.1 main tree. · 631ecaab
      unknown authored
      BUILD/compile-pentium-debug-max:
        Added definition after macro was removed from main tree. This will
        be fixed back in main tree later.
      631ecaab
  5. 26 Jun, 2007 2 commits
    • unknown's avatar
      WL#3072 - Maria recovery · 1e73169a
      unknown authored
      fixes for build failures; copyrights; small bugfixes and comments
      
      
      mysys/Makefile.am:
        missing .h breaks building from tarball
      storage/maria/ma_loghandler.c:
        applying Serg's bugfix of trnman_new_trid() to translog_assign_id_to_share()
      storage/maria/ma_loghandler.h:
        copyright
      storage/maria/ma_loghandler_lsn.h:
        copyright
      storage/maria/maria_read_log.c:
        fix for compiler warnings. Comments.
        Close tables when program ends.
      1e73169a
    • 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. 22 Jun, 2007 1 commit
    • unknown's avatar
      - WL#3239 "log CREATE TABLE in Maria" · 1a962591
      unknown authored
      - WL#3240 "log DROP TABLE in Maria"
      - similarly, log RENAME TABLE, REPAIR/OPTIMIZE TABLE, and
      DELETE no_WHERE_clause (== the DELETE which just truncates the files)
      - create_rename_lsn added to MARIA_SHARE's state
      - all these operations (except DROP TABLE) also update the table's
      create_rename_lsn, which is needed for the correctness of
      Recovery (see function comment of _ma_repair_write_log_record()
      in ma_check.c)
      - write a COMMIT record when transaction commits.
      - don't log REDOs/UNDOs if this is an internal temporary table
      like inside ALTER TABLE (I expect this to be a big win). There was
      already no logging for user-created "CREATE TEMPORARY" tables.
      - don't fsync files/directories if the table is not transactional
      - in translog_write_record(), autogenerate a 2-byte-id for the table
      and log the "id->name" pair (LOGREC_FILE_ID); log
      LOGREC_LONG_TRANSACTION_ID; automatically store
      the table's 2-byte-id in any log record.
      - preparations for Checkpoint: translog_get_horizon(); pausing Checkpoint
      when some dirty pages are unknown; capturing trn->rec_lsn,
      trn->first_undo_lsn for Checkpoint and log's low-water-mark computing.
      - assertions, comments.
      
      
      storage/maria/Makefile.am:
        more files to build
      storage/maria/ha_maria.cc:
        - logging a REPAIR log record if REPAIR/OPTIMIZE was successful.
        - ha_maria::data_file_type does not have to be set in every info()
        call, just do it once in open().
        - if caller said that transactionality can be disabled (like if
        caller is ALTER TABLE) i.e. thd->transaction.on==FALSE, then we
        temporarily disable transactionality of the table in external_lock();
        that will ensure that no REDOs/UNDOs are logged for this possibly
        massive write operation (they are not needed, as if any write fails,
        the table will be dropped). We re-enable in external_lock(F_UNLCK),
        which in ALTER TABLE happens before the tmp table replaces the original
        one (which is good, as thus the final table will have a REDO RENAME
        and a correct create_rename_lsn).
        - when we commit we also have to write a log record, so
        trnman_commit_trn() calls become ma_commit() calls
        - at end of engine's initialization, we are potentially entering a
        multi-threaded dangerous world (clients are going to be accepted)
        and so some assertions of mutex-owning become enforceable, for that
        we set maria_multi_threaded=TRUE (see ma_control_file.c)
      storage/maria/ha_maria.h:
        new member ha_maria::save_transactional (see also ha_maria.cc)
      storage/maria/ma_blockrec.c:
        - fixing comments according to discussion with Monty
        - if a table is transactional but temporarily non-transactional
        (like in ALTER TABLE), we need to give a sensible LSN to the pages
        (and, if we give 0, pagecache asserts).
        - translog_write_record() now takes care of storing the share's
        2-byte-id in the log record
      storage/maria/ma_blockrec.h:
        fixing comment according to discussion with Monty
      storage/maria/ma_check.c:
        When REPAIR/OPTIMIZE modify the data/index file, if this is a
        transactional table, they must sync it; if they remove files or rename
        files, they must sync the directory, so that everything is durable.
        This is just applying to REPAIR/OPTIMIZE the logic already implemented
        in CREATE/DROP/RENAME a few months ago.
        Adding a function to write a LOGREC_REPAIR_TABLE at end of
        REPAIR/OPTIMIZE (called only by ha_maria, not by maria_chk), and
        to update the table's create_rename_lsn.
      storage/maria/ma_close.c:
        fix for a future bug
      storage/maria/ma_control_file.c:
        ensuring that if Maria is running in multi-threaded mode, anybody
        wanting to write to the control file and update
        last_checkpoint_lsn/last_logno owns the log's lock.
      storage/maria/ma_control_file.h:
        see ma_control_file.c
      storage/maria/ma_create.c:
        when creating a table:
        - sync it and its directory only if this is a transactional table
        and there is a log (no point in syncing in maria_chk)
        - decouple the two uses of linkname/linkname_ptr (for index file and
        for data file) into more variables, as we need to know all links
        until the moment we write the LOGREC_CREATE_TABLE.
        - set share.data_file_type early so that _ma_initialize_data_file()
        knows it (Monty's bugfix so that a table always has at least a bitmap
        page when it is created; so data-file is not 0 bytes anymore).
        - log a LOGREC_CREATE_TABLE; it contains the bytes which we have
        just written to the index file's header. Update table's
        create_rename_lsn.
        - syncing of kfile had been bugified in a previous merge, correcting
        - syncing of dfile is now needed as it's not empty anymore
        - in _ma_initialize_data_file(), use share's block_size and not the
        global one. This is a gratuitous change, both variables are equal,
        just that I find it more future-proof to use share-bound variable
        rather than global one.
      storage/maria/ma_delete_all.c:
        log a LOGREC_DELETE_ALL record when doing ma_delete_all_rows();
        update create_rename_lsn then.
      storage/maria/ma_delete_table.c:
        - logging LOGREC_DROP_TABLE; knowing if this is needed, requires
        knowing if the table is transactional, which requires opening the
        table.
        - we need to sync directories only if the table is transactional
      storage/maria/ma_extra.c:
        questions
      storage/maria/ma_init.c:
        when maria_end() is called, engine is not multithreaded
      storage/maria/ma_loghandler.c:
        - translog_inited has to be visible to ma_create() (see how it is used
        in ma_create())
        - checkpoint record will be a single record, not three
        - no REDO for TRUNCATE (TRUNCATE calls ma_create() internally so will
        log a REDO_CREATE)
        - adding REDO for DELETE no_WHERE_clause (fast DELETE of all rows by
        truncating the files), REPAIR.
        - MY_WAIT_IF_FULL to wait&retry if a log write hits a full disk
        - in translog_write_record(), if MARIA_SHARE does not yet have a
        2-byte-id, generate one for it and log LOGREC_FILE_ID; automatically
        store this short id into log records.
        - in translog_write_record(), if transaction has not logged its
        long trid, log LOGREC_LONG_TRANSACTION_ID.
        - For Checkpoint, we need to know the current end-of-log: adding
        translog_get_horizon().
        - For Control File, adding an assertion that the thread owns the
        log's lock (control file is protected by this lock)
      storage/maria/ma_loghandler.h:
        Changes in log records (see ma_loghandler.c).
        new prototypes, new functions.
      storage/maria/ma_loghandler_lsn.h:
        adding a type LSN_WITH_FLAGS especially for TRN::first_undo_lsn,
        where the most significant byte is used for flags.
      storage/maria/ma_open.c:
        storing the create_rename_lsn in the index file's header (in the
        state, precisely) and retrieving it from there.
      storage/maria/ma_pagecache.c:
        - my set_if_bigger was wrong, correcting it
        - if the first_in_switch list is not empty, it means that
        changed_blocks misses some dirty pages, so Checkpoint cannot run and
        needs to wait. A variable missing_blocks_in_changed_list is added to
        tell that (should it be named missing_blocks_in_changed_blocks?)
        - pagecache_collect_changed_blocks_with_lsn() now also tells the
        minimum rec_lsn (needed for low-water mark computation).
      storage/maria/ma_pagecache.h:
        see ma_pagecache.c
      storage/maria/ma_panic.c:
        comment
      storage/maria/ma_range.c:
        comment
      storage/maria/ma_rename.c:
        - logging LOGREC_RENAME_TABLE; knowing if this is needed, requires
        knowing if the table is transactional, which requires opening the
        table.
        - update create_rename_lsn
        - we need to sync directories only if the table is transactional
      storage/maria/ma_static.c:
        comment
      storage/maria/ma_test_all.sh:
        - tip for Valgrind-ing ma_test_all
        - do "export maria_path=somepath" before calling ma_test_all,
        if you want to run ma_test_all out of storage/maria (useful
        to have parallel runs, like one normal and one Valgrind, they
        must not use the same tables so need to run in different directories)
      storage/maria/maria_def.h:
        - state now contains, in memory and on disk, the create_rename_lsn
        - share now contains a 2-byte-id
      storage/maria/trnman.c:
        preparations for Checkpoint: capture trn->rec_lsn, trn->first_undo_lsn;
        minimum first_undo_lsn needed to know log's low-water-mark
      storage/maria/trnman.h:
        using most significant byte of first_undo_lsn to hold miscellaneous
        flags, for now TRANSACTION_LOGGED_LONG_ID.
        dummy_transaction_object is already declared in ma_static.c.
      storage/maria/trnman_public.h:
        dummy_transaction_object was declared in all files including
        trnman_public.h, while in fact it's a single object.
        new prototype
      storage/maria/unittest/ma_test_loghandler-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        update for new prototype
      storage/maria/ma_commit.c:
        function which wraps:
        - writing a LOGREC_COMMIT record (==commit on disk)
        - calling trnman_commit_trn() (=commit in memory)
      storage/maria/ma_commit.h:
        new header file
      .tree-is-private:
        this file is now needed to keep our tree private (don't push it
        to public trees). When 5.1 is merged into mysql-maria, we can abandon
        our maria-specific post-commit trigger; .tree_is_private will take
        care of keeping commit mails private. Don't push this file to public
        trees.
      1a962591
  7. 27 Feb, 2007 1 commit
    • unknown's avatar
      comments fixed · fdf847fb
      unknown authored
      storage/maria/ma_loghandler.c:
        The function comment fixed.
      storage/maria/ma_loghandler_lsn.h:
        Comment of LSN/TRANSLOG_ADDRESS type fixed
      fdf847fb
  8. 19 Feb, 2007 1 commit
    • unknown's avatar
      Postreview changes. · 3bc8f629
      unknown authored
      Fixed befaviour when loghandler flags changed from one
      run to another one.
      Description of maria transaction log and control file
      added to the file commandÍs magic number file.
      
      
      mysys/mf_pagecache.c:
        postreview changes
      storage/maria/ma_control_file.c:
        Postreview changes.
      storage/maria/ma_control_file.h:
        Postreview changes.
      storage/maria/ma_loghandler.c:
        Postreview changes.
        Fixed befaviour when loghandler flags changed from
        one run to another one.
      storage/maria/ma_loghandler.h:
        Postreview changes.
        Functions comment left only near the function body.
      storage/maria/ma_loghandler_lsn.h:
        Postreview changes.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Postreview changes.
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Postreview changes.
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Postreview changes.
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Postreview changes.
      support-files/magic:
        Description of maria transaction log and control file
        added to the file commandÕs magic number file.
      3bc8f629
  9. 12 Feb, 2007 1 commit
    • unknown's avatar
      Postmerge fix (including changing type of LSN) · 91a81997
      unknown authored
      Some debug info and comments added
      
      
      include/pagecache.h:
        postmerge fix
      mysys/mf_pagecache.c:
        Postmerge fix (including changing type of LSN)
        Additional DBUG_ASSERTs added
        Comment about pinning mechanism added
      storage/maria/ma_control_file.c:
        Used the same LSN storing procedure everywhere
        Postmerge fix (including changing type of LSN)
      storage/maria/ma_control_file.h:
        Postmerge fix (including changing type of LSN)
      storage/maria/ma_loghandler.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/ma_loghandler.h:
        Postmerge fix (including changing type of LSN)
      storage/maria/ma_loghandler_lsn.h:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/Makefile.am:
        Postmerge fix
      storage/maria/unittest/ma_control_file-t.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/ma_test_loghandler-t.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/mf_pagecache_consist.c:
        Postmerge fix (including changing type of LSN)
      storage/maria/unittest/mf_pagecache_single.c:
        Postmerge fix (including changing type of LSN)
      91a81997
  10. 02 Feb, 2007 1 commit
    • unknown's avatar
      postreview changes for page cache and pre review commit for loghandler · 02540092
      unknown authored
      storage/maria/unittest/test_file.c:
        Rename: unittest/mysys/test_file.c -> storage/maria/unittest/test_file.c
      storage/maria/unittest/test_file.h:
        Rename: unittest/mysys/test_file.h -> storage/maria/unittest/test_file.h
      include/pagecache.h:
        A waiting queue mechanism moved to separate file wqueue.*
        Pointer name changed for compatibility
      mysys/Makefile.am:
        A waiting queue mechanism moved to separate file wqueue.*
      mysys/mf_keycache.c:
        fixed unsigned comparison
      mysys/mf_pagecache.c:
        A waiting queue mechanism moved to separate file wqueue.*
        Fixed bug in unregistering block during write
      storage/maria/Makefile.am:
        The loghandler files added
      storage/maria/ma_control_file.h:
        Now we have loghandler and can compile control file
      storage/maria/maria_def.h:
        Including files need for compilation of maria
      storage/maria/unittest/Makefile.am:
        unit tests of loghandler
      storage/maria/unittest/ma_control_file-t.c:
        Used maria def
      storage/maria/unittest/mf_pagecache_consist.c:
        fixed memory overrun
      storage/maria/unittest/mf_pagecache_single.c:
        fixed used uninitialized memory
      unittest/mysys/Makefile.am:
        unittests of pagecache moved to maria becase pagecache need loghandler
      include/wqueue.h:
        New BitKeeper file ``include/wqueue.h''
      mysys/wqueue.c:
        New BitKeeper file ``mysys/wqueue.c''
      storage/maria/ma_loghandler.c:
        New BitKeeper file ``storage/maria/ma_loghandler.c''
      storage/maria/ma_loghandler.h:
        New BitKeeper file ``storage/maria/ma_loghandler.h''
      storage/maria/ma_loghandler_lsn.h:
        New BitKeeper file ``storage/maria/ma_loghandler_lsn.h''
      storage/maria/unittest/ma_test_loghandler-t.c:
        New BitKeeper file ``storage/maria/unittest/ma_test_loghandler-t.c''
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        New BitKeeper file ``storage/maria/unittest/ma_test_loghandler_multigroup-t.c''
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        New BitKeeper file ``storage/maria/unittest/ma_test_loghandler_multithread-t.c''
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        New BitKeeper file ``storage/maria/unittest/ma_test_loghandler_pagecache-t.c''
      02540092