An error occurred fetching the project authors.
  1. 21 Dec, 2007 1 commit
  2. 20 Dec, 2007 1 commit
  3. 15 Dec, 2007 3 commits
    • unknown's avatar
      Pagecache callbacks support added. · 7b19ba34
      unknown authored
      Page CRC check based on pagecache support added.
      Loghandler pagecache callbacks support added.
      Loghandler filecache rewritten.
      Support of deletting all logs added.
      
      
      storage/maria/Makefile.am:
        New file with functions for CRC calculation.
      storage/maria/ma_bitmap.c:
        Page CRC support.
      storage/maria/ma_blockrec.c:
        Removed code replaced by pagecache callbacks.
      storage/maria/ma_check.c:
        Page CRC support.
      storage/maria/ma_create.c:
        Page CRC support.
      storage/maria/ma_loghandler.c:
        Pagecache callbacks support.
        New file cache support.
        Removing log files support.
      storage/maria/ma_loghandler.h:
        CRC_LENGTH replaced with CRC_SIZE
      storage/maria/ma_open.c:
        Page CRC support.
      storage/maria/ma_page.c:
        Page CRC support.
      storage/maria/ma_pagecache.c:
        Pagecache callbacks support.
      storage/maria/ma_pagecache.h:
        Pagecache callbacks support.
      storage/maria/ma_panic.c:
        Page CRC support.
      storage/maria/maria_chk.c:
        Page CRC support.
      storage/maria/maria_def.h:
        Page CRC support.
      storage/maria/unittest/Makefile.am:
        New test of removing logs.
      storage/maria/unittest/ma_maria_log_cleanup.c:
        Memory leack fixed.
      storage/maria/unittest/ma_pagecache_consist.c:
        Pagecache callbacks support.
      storage/maria/unittest/ma_pagecache_single.c:
        Pagecache callbacks support.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Fixed the test error processing.
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        Fixed the test error processing.
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        Fixed the test error processing.
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Fixed the test error processing.
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Fixed the test error processing.
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        Fixed the test error processing.
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Pagecache callbacks support.
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        Fixed the test error processing.
      storage/maria/unittest/test_file.c:
        Removed unneeded sync.
      7b19ba34
    • unknown's avatar
      Postmerge fix. · fabdf6df
      unknown authored
      storage/maria/ma_loghandler.c:
        Postmerge fix.
        New state of the log added to proicess correctly shutdown.
      storage/maria/ma_loghandler.h:
        New state of the log added to proicess correctly shutdown.
      fabdf6df
    • unknown's avatar
      Transaction log behaviour in case of write · d225521c
      unknown authored
        error fixed (switching to the read only mode).
      Added read only mode of transactions log handler.
      
      
      storage/maria/ha_maria.cc:
        Transaction log initialization parameters change.
      storage/maria/ma_check.c:
        New status variable of transactional log.
      storage/maria/ma_create.c:
        New status variable of transactional log.
      storage/maria/ma_loghandler.c:
        - New status variable added.
        - Checking the status variable in the loghandler
        interface functions added
        - All fails of loghandler functions revised.
        - UNRECOVERABLE_ERROR() removed.
        - Switching to read only mode added where it nead.
        - Checking of log state added before writes log content
          and changing status variables like sent_to_file, n_buffers_only, flushed.
        - Readonly loghandler initialization added.
        - Fixed problem with example table transactional log initialization.
      storage/maria/ma_loghandler.h:
        Readonly loghandler initialization added.
        Fixed problem with example table transactional log initialization.
        New status variable added.
      storage/maria/ma_open.c:
        New status variable of transactional log.
      storage/maria/ma_test1.c:
        Transaction log initialization parameters change.
      storage/maria/ma_test2.c:
        Transaction log initialization parameters change.
      storage/maria/maria_read_log.c:
        Transaction loghandler initialization in read only mode in
        case of only dysplay parameter.
      storage/maria/unittest/Makefile.am:
        Test of readonly mode added.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
        Fixed incorrect fprintf call parameters.
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Useing this test also as read only loghandler test.
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        Transaction log initialization parameters change.
        Fixed problem with example table transactional log initialization.
      d225521c
  4. 04 Dec, 2007 1 commit
    • unknown's avatar
      Added error HA_ERR_FILE_TOO_SHORT to be used when files are shorter than... · ebf7ab7b
      unknown authored
      Added error HA_ERR_FILE_TOO_SHORT to be used when files are shorter than expected (by my_read/my_pread)
      Added debugger hook _my_dbug_put_break_here() that is called if we get a CRC that matches --debug-crc-break (my_crc_dbug_break)
      Fixed REDO_REPAIR to use all repair modes (repair, repair_by_sort, repair_paralell
      REDO_REPAIR now also logs used key map
      Fixed some bugs in REDO logging of key pages
      Better error messages from maria_read_log
      Added my_readwrite_flags to init_pagecache() to be able to get better error messages and simplify code.
      Don't allow pagecaches with less than 8 blocks (Causes strange crashes)
      Added EXTRA_DEBUG_KEY_CHANGES. When this is defined some REDO_INDEX entries contains page checksums (these are calculated and checked in DBUG mode, ignored otherwise)
      Fixed bug in ma_pagecache unit tests that caused program to sometimes fail
      Added some missing calls to MY_INIT() that caused some unit tests to fail
      Fixed that TRUNCATE works properly on temporary MyISAM files
      Updates some result files to new table checksums results (checksum when NULL fields are ignored)
      perl test-insert can be replayed with maria_read_log!
      
      
      sql/share/Makefile.am:
        Change mode to -rw-rw-r--
      BitKeeper/etc/ignore:
        added storage/maria/unittest/page_cache_test_file_1 storage/maria/unittest/pagecache_debug.log
      include/maria.h:
        Added maria_tmpdir
      include/my_base.h:
        Added error HA_ERR_FILE_TOO_SHORT
      include/my_sys.h:
        Added variable my_crc_dbug_check
        Added function my_dbug_put_break_here()
      include/myisamchk.h:
        Added org_key_map (Needed for writing REDO record for REPAIR)
      mysql-test/r/innodb.result:
        Updated to new checksum algorithm (NULL ignored)
      mysql-test/r/mix2_myisam.result:
        Updated to new checksum algorithm (NULL ignored)
      mysql-test/r/myisam.result:
        Updated to new checksum algorithm (NULL ignored)
      mysql-test/t/myisam.test:
        Added used table
      mysys/checksum.c:
        Added DBUG for checksum results
        Added debugger hook so that _my_dbug_put_break_here() is called if we get matching CRC
      mysys/lf_alloc-pin.c:
        Fixed compiler warning
      mysys/my_handler.c:
        Added new error message
      mysys/my_init.c:
        If my_progname is not given, use 'unknown' form my_progname_short
        Added debugger function my_debug_put_break_here()
      mysys/my_pread.c:
        In case of too short file when MY_NABP or MY_FNABP is specified, give error HA_ERR_FILE_TO_SHORT
      mysys/my_read.c:
        In case of too short file when MY_NABP or MY_FNABP is specified, give error HA_ERR_FILE_TO_SHORT
      sql/mysqld.cc:
        Added debug option --debug-crc-break
      sql/sql_parse.cc:
        Trivial optimization
      storage/maria/ha_maria.cc:
        Renamed variable to be more logical
        Ensure that param.testflag is correct when calling repair
        Added extra argument to init_pagecache
        Set default value for maria_tempdir
      storage/maria/ma_blockrec.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      storage/maria/ma_cache.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      storage/maria/ma_check.c:
        Set param->testflag to match how repair is run (needed for REDO logging)
        Simple optimization
        Moved flag if page is node from pagelength to keypage-flag byte
        Log used key map in REDO log.
      storage/maria/ma_delete.c:
        Remember previous UNDO entry when writing undo (for future CLR records)
        Moved flag if page is node from pagelength to keypage-flag byte
        Fixed some bugs in redo logging
        Added CRC for some translog REDO_INDEX entries
      storage/maria/ma_dynrec.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      storage/maria/ma_ft_update.c:
        Fixed call to _ma_store_page_used()
      storage/maria/ma_key_recover.c:
        Added CRC for some translog REDO_INDEX entries
        Removed not needed pagecache_write() in _ma_apply_redo_index()
      storage/maria/ma_locking.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      storage/maria/ma_loghandler.c:
        Added used key map to REDO_REPAIR_TABLE
      storage/maria/ma_loghandler.h:
        Added operation for checksum of key pages
      storage/maria/ma_open.c:
        Allocate storage for undo lsn pointers
      storage/maria/ma_pagecache.c:
        Remove not needed include file
        Change logging to use fd: for file descritors as other code
        Added my_readwrite_flags to init_pagecache() to be able to get better error messages for maria_chk/maria_read_log
        Don't allow pagecaches with less than 8 blocks
        Remove wrong DBUG_ASSERT()
      storage/maria/ma_pagecache.h:
        Added readwrite_flags
      storage/maria/ma_recovery.c:
        Better error messages for maria_read_log:
        - Added eprint() for printing error messages
        - Print extra \n before error message if we are printing %0 %10 ...
        
        Added used key_map to REDO_REPAIR log entry
        More DBUG
        Call same repair method that was used by mysqld
      storage/maria/ma_rt_index.c:
        Moved flag if page is node from pagelength to keypage-flag byte
      storage/maria/ma_rt_key.c:
        Fixed call to _ma_store_page_used()
      storage/maria/ma_rt_split.c:
        Moved flag if page is node from pagelength to keypage-flag byte
      storage/maria/ma_static.c:
        Added maria_tmpdir
      storage/maria/ma_test1.c:
        Updated call to init_pagecache()
      storage/maria/ma_test2.c:
        Updated call to init_pagecache()
      storage/maria/ma_test3.c:
        Updated call to init_pagecache()
      storage/maria/ma_write.c:
        Removed #ifdef NOT_YET
        Moved flag if page is node from pagelength to keypage-flag byte
        Fixed bug in  _ma_log_del_prefix()
      storage/maria/maria_chk.c:
        Fixed wrong min limit for page_buffer_size
        Updated call to init_pagecache()
      storage/maria/maria_def.h:
        Added EXTRA_DEBUG_KEY_CHANGES. When this is defined some REDO_INDEX entries contains page checksums
        Moved flag if page is node from pagelength to keypage-flag byte
      storage/maria/maria_ftdump.c:
        Updated call to init_pagecache()
      storage/maria/maria_pack.c:
        Updated call to init_pagecache()
        Reset share->state.create_rename_lsn & share->state.is_of_horizon
      storage/maria/maria_read_log.c:
        Better error messages
        Added --tmpdir option (needed to set temporary directory for REDO_REPAIR)
        Added --start-from-lsn
        Changed option for --display-only to 'd' (wanted to use -o for 'offset')
      storage/maria/unittest/lockman2-t.c:
        Added missing call to MY_INIT()
      storage/maria/unittest/ma_pagecache_consist.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_pagecache_single.c:
        Fixed bug that caused program to sometimes fail
        Added some DBUG_ASSERTS()
        Changed some calls to malloc()/free() to my_malloc()/my_free()
        Create extra file to expose original hard-to-find bug
      storage/maria/unittest/ma_test_loghandler-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        Updated call to init_pagecache()
      storage/maria/unittest/test_file.c:
        Changed malloc()/free() to my_malloc()/my_free()
        Fixed memory leak
        Changd logic a bit while trying to find bug in reset_file()
      storage/maria/unittest/trnman-t.c:
        Added missing call to MY_INIT()
      storage/myisam/mi_cache.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      storage/myisam/mi_create.c:
        Removed O_EXCL to get TRUNCATE to work for temporary files
      storage/myisam/mi_dynrec.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      storage/myisam/mi_locking.c:
        Test for HA_ERR_FILE_TOO_SHORT instead for -1
      mysql-test/r/old-mode.result:
        New BitKeeper file ``mysql-test/r/old-mode.result''
      mysql-test/t/old-mode-master.opt:
        New BitKeeper file ``mysql-test/t/old-mode-master.opt''
      mysql-test/t/old-mode.test:
        New BitKeeper file ``mysql-test/t/old-mode.test''
      ebf7ab7b
  5. 03 Dec, 2007 1 commit
    • unknown's avatar
      Added variable to control log directory syncs. · 3e90f0d8
      unknown authored
      Part of postreview fixes added.
      
      
      mysql-test/r/maria.result:
        Added variable to control log directory syncs.
      storage/maria/ha_maria.cc:
        Added variable to control log directory syncs.
      storage/maria/ma_loghandler.h:
        Added variable to control log directory syncs.
      storage/maria/ma_loghandler_lsn.h:
        postreview fix
      storage/maria/unittest/Makefile.am:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        New file with logrecord descriptors for tests.
      storage/maria/unittest/ma_loghandler_examples.c:
        New BitKeeper file ``storage/maria/unittest/ma_loghandler_examples.c''
      3e90f0d8
  6. 05 Nov, 2007 1 commit
  7. 02 Oct, 2007 1 commit
    • unknown's avatar
      WL#3072 - Maria recovery. · d0b9387b
      unknown authored
      * Recovery of the table's live checksum (CREATE TABLE ... CHECKSUM=1)
      is achieved in this patch. The table's live checksum
      (info->s->state.state.checksum) is updated in inwrite_rec_hook's
      under the log mutex when writing UNDO_ROW_INSERT|UPDATE|DELETE
      and REDO_DELETE_ALL. The checksum variation caused by the operation
      is stored in these UNDOs, so that the REDO phase, when it sees such
      UNDOs, can update the live checksum if it is older (state.is_of_lsn is
      lower) than the record. It is also used, as a nice add-on with no
      cost, to do less row checksum computation during the UNDO phase
      (as we have it in the record already).
      Doing this work, it became pressing to move in-write hooks
      (write_hook_for_redo() et al) to ma_blockrec.c.
      The 'parts' argument of inwrite_rec_hook is unpredictable (it comes
      mangled at this stage, for example by LSN compression) so it is
      replaced by a 'void* hook_arg', which is used to pass down information,
      currently only to write_hook_for_clr_end() (previous undo_lsn and
      type of undone record).
      * If from ha_maria, we print to stderr how many seconds (with one
      fractional digit) the REDO phase took, same for UNDO phase and for
      final table close. Just to give an indication for debugging and maybe
      also for Support.
      
      
      storage/maria/ha_maria.cc:
        question for Monty
      storage/maria/ma_blockrec.c:
        * log in-write hooks (write_hook_for_redo() etc) move from
        ma_loghandler.c to here; this is natural: the hooks are coupled
        to their callers (functions in ma_blockrec.c).
        * translog_write_record() now has a new argument "hook_arg";
        using it to pass down to write_hook_for_clr_end() the transaction's
        previous_undo_lsn and the type of the being undone record, and also
        to pass down to all UNDOs the live checksum variation caused by the
        operation.
        * If table has live checksum, store in UNDO_ROW_INSERT|UPDATE|DELETE
        and in CLR_END the checksum variation ("delta") caused by the
        operation. For example if a DELETE caused the table's live checksum
        to change from 123 to 456, we store in the UNDO_ROW_DELETE, in 4 bytes,
        the value 333 (456-123).
        * Instead of hard-coded "1" as length of the place where we store
        the undone record's type in CLR_END, use a symbol CLR_TYPE_STORE_SIZE;
        use macros clr_type_store and clr_type_korr.
        * write_block_record() has a new parameter 'old_record_checksum'
        which is the pre-computed checksum of old_record; that value is used
        to update the table's live checksum when writing UNDO_ROW_UPDATE|CLR_END.
        * In allocate_write_block_record(), if we are executing UNDO_ROW_DELETE
        the row's checksum is already computed.
        * _ma_update_block_record2() now expect the new row's checksum into
        cur_row.checksum (was already true) and the old row's checksum into
        new_row.checksum (that's new). Its two callers, maria_update() and
        _ma_apply_undo_row_update(), honour this.
        * When executing an UNDO_ROW_INSERT|UPDATE|DELETE in UNDO phase, pick
        up the checksum delta from the log record. It is then used to update
        the table's live checksum when writing CLR_END, and saves us a
        computation of record.
      storage/maria/ma_blockrec.h:
        in-write hooks move from ma_loghandler.c
      storage/maria/ma_check.c:
        more straightforward size of buffer
      storage/maria/ma_checkpoint.c:
        <= is enough
      storage/maria/ma_commit.c:
        new prototype of translog_write_record()
      storage/maria/ma_create.c:
        new prototype of translog_write_record()
      storage/maria/ma_delete.c:
        The row's checksum must be computed before calling(*delete_record)(),
        not after, because it must be known inside _ma_delete_block_record()
        (to update the table's live checksum when writing UNDO_ROW_DELETE).
        If deleting from a transactional table, live checksum was already updated
        when writing UNDO_ROW_DELETE.
      storage/maria/ma_delete_all.c:
        @todo is now done (in ma_loghandler.c)
      storage/maria/ma_delete_table.c:
        new prototype of translog_write_record()
      storage/maria/ma_loghandler.c:
        * in-write hooks move to ma_blockrec.c.
        * translog_write_record() gets a new argument 'hook_arg' which is
        passed down to pre|inwrite_rec_hook. It is more useful that 'parts'
        for those hooks, because when those hooks are called, 'parts' has
        possibly been mangled (like with LSN compression) and is so
        unpredictable.
        * fix for compiler warning (unused buffer_start when compiling without
        debug support)
        * Because checksum delta is stored into UNDO_ROW_INSERT|UPDATE|DELETE
        and CLR_END, but only if the table has live checksum, these records
        are not PSEUDOFIXEDLENGTH anymore, they are now VARIABLE_LENGTH (their
        length is X if no live checksum and X+4 otherwise).
        * add an inwrite_rec_hook for UNDO_ROW_UPDATE, which updates the
        table's live checksum. Update it also in hooks of UNDO_ROW_INSERT|
        DELETE and REDO_DELETE_ALL and CLR_END.
        * Bugfix: when reading a record in translog_read_record(), it happened
        that "length" became negative, because the function assumed that
        the record extended beyond the page's end, whereas it may be shorter.
      storage/maria/ma_loghandler.h:
        * Instead of hard-coded "1" and "4", use symbols and macros
        to store/retrieve the type of record which the CLR_END corresponds
        to, and the checksum variation caused by the operation which logs the
        record
        * translog_write_record() gets a new argument 'hook_arg' which is
        passed down to pre|inwrite_rec_hook. It is more useful that 'parts'
        for those hooks, because when those hooks are called, 'parts' has
        possibly been mangled (like with LSN compression) and is so
        unpredictable.
      storage/maria/ma_open.c:
        fix for "empty body in if() statement" (when compiling without safemutex)
      storage/maria/ma_pagecache.c:
        <= is enough
      storage/maria/ma_recovery.c:
        * print the time that each recovery phase (REDO/UNDO/flush) took;
        this is enabled only when recovering from ha_maria. Is it printed
        n seconds with a fractional part of one digit (like 123.4 seconds).
        * In the REDO phase, update the table's live checksum by using
        the checksum delta stored in UNDO_ROW_INSERT|DELETE|UPDATE and CLR_END.
        Update it too when seeing REDO_DELETE_ALL.
        * In the UNDO phase, when executing UNDO_ROW_INSERT, if the table does
        not have live checksum then reading the record's header (as done by
        the master loop of run_undo_phase()) is enough; otherwise we
        do a translog_read_record() to have the checksum delta ready
        for _ma_apply_undo_row_insert().
        * When at the end of the REDO phase we notice that there is an unfinished
        group of REDOs, don't assert in debug binaries, as I verified that it
        can happen in real life (with kill -9)
        * removing ' in #error as it confuses gcc3
      storage/maria/ma_rename.c:
        new prototype of translog_write_record()
      storage/maria/ma_test_recovery.expected:
        Change in output of ma_test_recovery: now all live checksums of
        original tables equal those of tables recreated by the REDO phase
        and those of tables fixed by the UNDO phase. I.e. recovery of
        the live checksum looks like working (which was after all the only
        goal of this changeset).
        I checked by hand that it's not just all live checksums which are
        now 0 and that's why they match. They are the old values like
        3757530372. maria.test has hard-coded checksum values in its result
        file so checks this too.
      storage/maria/ma_update.c:
        * It's useless to put up HA_STATE_CHANGED in 'key_changed',
        as we put up HA_STATE_CHANGED in info->update anyway.
        * We need to compute the old and new rows' checksum before calling
        (*update_record)(), as checksum delta must be known when logging
        UNDO_ROW_UPDATE which is done by _ma_update_block_record(). Note that
        some functions change the 'newrec' record (at least _ma_check_unique()
        does) so we cannot move the checksum computation too early in the
        function.
      storage/maria/ma_write.c:
        If inserting into a transactional table, live's checksum was
        already updated when writing UNDO_ROW_INSERT. The multiplication
        is a trick to save an if().
      storage/maria/unittest/ma_test_loghandler-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        new prototype of translog_write_record()
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        new prototype of translog_write_record()
      storage/myisam/sort.c:
        fix for compiler warnings in pushbuild (write_merge_key* functions
        didn't have their declaration match MARIA_HA::write_key).
      d0b9387b
  8. 04 Sep, 2007 1 commit
    • unknown's avatar
      Check of transaction log descriptor table consistance added. · 73b073ff
      unknown authored
      Small fixes made.
      
      
      storage/maria/ma_loghandler.c:
        Check of transaction log descriptor table consistance added.\
        Incorrect record description fixed.
        Compiler warning fixed.
      storage/maria/ma_loghandler.h:
        fixed ident.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Suppressing of automatic record writing
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        Suppressing of automatic record writing
      73b073ff
  9. 03 Aug, 2007 1 commit
    • unknown's avatar
      Log handler's unit test were broken by me on June 22, fixing this: · 3d0f42a9
      unknown authored
      don't auto-log LOGREC_LONG_TRANSACTION_ID in log handler's unit tests,
      as they read their log and expect to find only the records they asked
      for, and so not LOGREC_LONG_TRANSACTION_ID. All log handler's unit
      tests pass. A way to run them faster: when their LONG_BUFFER_SIZE is
      too big (1GB) I divide it by ten and then I can run them on /dev/shm
      - they are then "instant".
      By the way, pushbuild was not displaying anymore "unit: failed" in
      the list of all pushes, which participates to the reasons why I didn't
      notice the breakage earlier. The other reason being that I was too lazy
      to run log handler unit tests on my machine as they took long (hadn't
      yet thought about the /dev/shm idea) and so I relied on pushbuild;
      Danny has now quickly fixed pushbuild - thanks :)
      
      
      storage/maria/unittest/ma_test_loghandler-t.c:
        don't auto-log LOGREC_LONG_TRANSACTION_ID in log handler's unit tests,
        as they read their log and expect to find only the records they asked
        for
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        don't auto-log LOGREC_LONG_TRANSACTION_ID in log handler's unit tests,
        as they read their log and expect to find only the records they asked
        for
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        don't auto-log LOGREC_LONG_TRANSACTION_ID in log handler's unit tests,
        as they read their log and expect to find only the records they asked
        for
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        don't auto-log LOGREC_LONG_TRANSACTION_ID in log handler's unit tests,
        as they read their log and expect to find only the records they asked
        for
      3d0f42a9
  10. 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
  11. 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
  12. 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
  13. 14 Jun, 2007 1 commit
    • unknown's avatar
      Fixed LSN codding to allow code all · c548715c
      unknown authored
        relative LSN independed on "distance".
      Added support for test record descriptors to avoid
        interfere woth real record descriptors.
      Fixed descriptor of pseudofixed length record length,
        now it is length of record passed from/to client of
        the loghandler.
      
      
      BitKeeper/etc/ignore:
        Added storage/maria/unittest/ma_test_loghandler_long-t-big to the ignore list
      storage/maria/ma_init.c:
        Removed loghandler_init call because it is present in translog_init()
      storage/maria/ma_loghandler.c:
        Fixed LSN codding to allow code all
          relative LSN independed on "distance".
        Added support for test record descriptors to avoid
          interfere woth real record descriptors.
        Fixed length of LOGREC_REDO_INSERT_ROW_TAIL.
        Fixed descriptor of pseudofixed length record length,
          now it is length of record passed from/to client of
          the loghandler.
      storage/maria/ma_loghandler.h:
        Added support for test record descriptors to avoid
          interfere woth real record descriptors.
      storage/maria/unittest/Makefile.am:
        Made new test for log with reference over 63 files.
        Layout fixed.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Added support for test record descriptors to avoid
          interfere woth real record descriptors.
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Added support for test record descriptors to avoid
          interfere woth real record descriptors.
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Added support for test record descriptors to avoid
          interfere woth real record descriptors.
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Added support for test record descriptors to avoid
          interfere woth real record descriptors.
      c548715c
  14. 11 Jun, 2007 1 commit
    • unknown's avatar
      - moving pagecache.h from include/ to storage/maria as it is Maria- · 704b39a1
      unknown authored
      specific
      - adding TRN::first_undo_lsn, needed to know when a log can be deleted;
      this variable must be set under log's mutex and that leads to setting
      TRN::rec_lsn, TRN::undo_lsn and TRN::first_undo_lsn in a
      inwrite_rec_hook; adding implementation of one hook for REDOs and one
      for UNDOs. Thus translog_write_record() always uses TRN and so does
      not need a short_id argument, can find it from TRN.
      - Monty's patch for the last Valgrind error in the tree.
      - Log handler's unit tests fail but Sanja says it's known
      
      
      include/Makefile.am:
        pagecache.h moved and renamed
      include/maria.h:
        pagecache.h moved and renamed
      sql/handler.h:
        pagecache.h moved and renamed
      storage/maria/Makefile.am:
        pagecache.h moved and renamed
      storage/maria/ha_maria.cc:
        adding an assertion which sounds logical
      storage/maria/ma_blockrec.c:
        trn->rec_lsn and trn->undo_lsn are now set via hooks inside the log
        record's writing; this allows to also set trn->first_undo_lsn
        needed to compute the log's low-water mark.
        The PAGERANGE_STORE_SIZE -> PAGE_STORE_SIZE is Monty's fix to a
        Valgrind error.
      storage/maria/ma_loghandler.c:
        "tcb" renamed to "trn". Log handler now knows what is a transaction,
        and finds short_id from trn. trn's rec_lsn, undo_lsn, first_undo_lsn
        are now set by some inwrite_rec_hookS (one for REDOs, one for UNDOs).
        The HAVE_purify blocks are Monty's fix to a Valgrind error.
      storage/maria/ma_loghandler.h:
        Log handler functions use TRN, that needs a forward declaration
      storage/maria/ma_pagecache.c:
        pagecache.h was moved and renamed
      storage/maria/ma_pagecache.h:
        pagecache.h was moved and renamed
      storage/maria/ma_pagecaches.c:
        pagecache.h was moved and renamed
      storage/maria/trnman.c:
        initializing some members of TRN.
      storage/maria/trnman.h:
        TRN::first_undo_lsn needed for log's low-water mark calculation
        (which will serve to know which logs can be deleted)
      storage/maria/unittest/ma_test_loghandler-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        translog_write_record() now needs a valid TRN
      storage/maria/unittest/test_file.h:
        pagecache.h was moved and renamed
      704b39a1
  15. 09 Jun, 2007 1 commit
    • unknown's avatar
      Fixed compiler warnings · fdfb5148
      unknown authored
      Fixed bug in ma_dbug.c that gave valgrind warning (only relevant when using --debug)
      Fixed bug in blob logging (Fixes valgrind warning)
      maria_getint() -> maria_data_on_page()
      
      
      mysys/safemalloc.c:
        Added debug function to print out where a piece of memory was allocated
      sql/opt_range.cc:
        Remove DBUG_PRINT of unitailized memory
      storage/maria/ma_blockrec.c:
        Fixed bug in blob logging
      storage/maria/ma_check.c:
        Fixed compiler warning
      storage/maria/ma_dbug.c:
        Added missed end++; Caused usage of unitialized memory for nullable keys that was not NULL
      storage/maria/ma_delete.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_init.c:
        Added header file to get rid of warning
      storage/maria/ma_key.c:
        More debugging
      storage/maria/ma_loghandler.c:
        Removed some wrong ';' to get rid of compiler errors when compiling without debugging
        Indentation fixes
        Removed not needed 'break's
        Fixed some compiler warnings
        Added code to detect logging of unitialized memory
      storage/maria/ma_page.c:
        maria_getint() -> maria_data_on_page()
        Clear rest of index page before writing when used with valgrind
        (Fixes warning of writing pages with unitialized data)
      storage/maria/ma_range.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_index.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_index.h:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_key.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_rt_split.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_search.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/ma_test1.c:
        Fixed compiler warning
      storage/maria/ma_write.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/maria_chk.c:
        maria_getint() -> maria_data_on_page()
      storage/maria/maria_def.h:
        maria_getint() -> maria_data_on_page()
      storage/maria/unittest/ma_pagecache_consist.c:
        Fixed compiler warning
      storage/maria/unittest/ma_pagecache_single.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler-t.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Fixed compiler warning
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Fixed compiler warning
      storage/myisam/mi_dbug.c:
        Added missed end++; Caused usage of unitialized memory for nullable keys that was not NULL
      fdfb5148
  16. 29 May, 2007 1 commit
    • unknown's avatar
      This patch is a collection of patches from from Sanja, Sergei and Monty. · 8f39541e
      unknown authored
      Added logging and pinning of pages to block format.
      Integration of transaction manager, log handler.
      Better page cache intergration
      Split trnman.h into two files, so that we don't have to include my_atomic.h into C++ programs.
      Renaming of structures, more comments, more debugging etc.
      Fixed problem with small head block + long varchar.
      Added extra argument to delete_record() and update_record() (needed for UNDO logging)
      Small changes to interface of pagecache and log handler.
      Change initialization of log_record_type_descriptors to not be depending on enum order.
      Use array of LEX_STRING's to send data to log handler
      Added 'dummy' transaction option to MARIA_INFO so that we can always assume 'trn' exists.
      
      
      include/lf.h:
        Interface fixes
        Rename of structures
        (Patch from Sergei via Sanja)
      include/my_atomic.h:
        More comments
      include/my_global.h:
        Added MY_ERRPTR
      include/pagecache.h:
        Added undo LSN when unlocking pages
      mysql-test/r/maria.result:
        Updated results
      mysql-test/t/maria.test:
        Added autocommit around lock tables
        (Patch from Sanja)
      mysys/lf_alloc-pin.c:
        Post-review fixes, simple optimizations
        More comments
        Struct slot renames
        Check amount of memory on stack
        (Patch from Sergei)
      mysys/lf_dynarray.c:
        More comments
      mysys/lf_hash.c:
        More comments
        After review fixes
        (Patch from Sergei)
      storage/maria/ha_maria.cc:
        Split trnman.h into two files, so that we don't have to include my_atomic.h into the .cc program.
        (Temporary fix to avoid bug in gcc)
        Move out all deferencing of the transaction structure.
        Transaction manager integrated (Patch from Sergei)
      storage/maria/ha_maria.h:
        Added prototype for start_stmt()
      storage/maria/lockman.c:
        Function call rename
      storage/maria/ma_bitmap.c:
        Mark deleted pages free from page cache
      storage/maria/ma_blockrec.c:
        Offset -> rownr
        More debugging
        Fixed problem with small head block + long varchar
        Added logging of changed pages
        Added logging of undo (Including only loggging of changed fields in case of update)
        Added pinning/unpinning of all changed pages
        More comments
        Added free_full_pages() as the same code was used in several places.
        fill_rows_parts() renamed as fill_insert_undo_parts()
        offset -> rownr
        Added some optimization of not transactional tables
        _ma_update_block_record() has new parameter, as we need original row to do efficent undo for update
      storage/maria/ma_blockrec.h:
        Added ROW_EXTENTS_ON_STACK
        Changed prototype for update and delete of row
      storage/maria/ma_check.c:
        Added original row to delete_record() call
      storage/maria/ma_control_file.h:
        Added ifdefs for C++
      storage/maria/ma_delete.c:
        Added original row to delete_record() call
        (Needed for efficent undo logging)
      storage/maria/ma_dynrec.c:
        Added extra argument to delete_record() and update_record()
        Removed not used variable
      storage/maria/ma_init.c:
        Initialize log handler
      storage/maria/ma_loghandler.c:
        Removed not used variable
        Change initialization of log_record_type_descriptors to not be depending on enum order
        Use array of LEX_STRING's to send data to log handler
      storage/maria/ma_loghandler.h:
        New defines
        Use array of LEX_STRING's to send data to log handler
      storage/maria/ma_open.c:
        Added 'dummy' transaction option to MARIA_INFO so that we can always assume 'trn' exists.
        Store in MARIA_SHARE->page_type if pages will have up to date LSN's
      storage/maria/ma_pagecache.c:
        Don't decrease number of readers when using pagecache_write()/pagecache_read()
        In pagecache_write() decrement request count if page was left pinned
        Added pagecache_delete_pages()
        Removed some casts
        Make trace output consistent with rest of code
        Simplify calling of DBUG_ASSERT(0)
        Only update LSN if the LSN is bigger than what's already on the page
        Added LSN parameter pagecache_unpin_page(), pagecache_unpin(), and pagecache_unlock()
        (Part of patch from Sanja)
      storage/maria/ma_static.c:
        Added 'dummy' transaction option to MARIA_INFO so that we can always assume 'trn' exists.
        Added default page cache
      storage/maria/ma_statrec.c:
        Added extra argument to delete_record() and update_record()
      storage/maria/ma_test1.c:
        Added option -T for transactions
      storage/maria/ma_test2.c:
        Added option -T for transactions
      storage/maria/ma_test_all.sh:
        Test with transactions
      storage/maria/ma_update.c:
        Changed prototype for update of row
      storage/maria/maria_def.h:
        Changed prototype for update & delete of row as block records need to access the old row
        Store in MARIA_SHARE->page_type if pages will have up to date LSN's
        Added MARIA_MAX_TREE_LEVELS to allow us to calculate the number of possible pinned pages we may need.
        Removed not used 'empty_bits_buffer'
        Added pointer to transaction object
        Added array for pinned pages
        Added log_row_parts array for logging of field data.
        Added MARIA_PINNED_PAGE to store pinned pages
      storage/maria/trnman.c:
        Added accessor functions to transaction object
        Added missing DBUG_RETURN()
        More debugging
        More comments
        Changed // comment of code to #ifdef NOT_USED
        Transaction manager integrated.
        Post review fixes
        Part of patch originally from Sergei
      storage/maria/trnman.h:
        Split trnman.h into two files, so that we don't have to include my_atomic.h into the .cc program.
        (Temporary fix to avoid bug in gcc)
      storage/maria/unittest/ma_pagecache_single.c:
        Added missing argument
        Added SKIP_BIG_TESTS
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Test logging with new LEX_STRING parameter
        (Patch from Sanja)
      storage/maria/unittest/trnman-t.c:
        Stack overflow detection
        (Patch from Sergei)
      unittest/unit.pl:
        Command-line options --big and --verbose
        (Patch from Sergei)
      unittest/mytap/tap.c:
        Detect --big
        (Patch from Sergei)
      unittest/mytap/tap.h:
        Skip_big_tests and SKIP_BIG_TESTS
        (Patch from Sergei)
      storage/maria/trnman_public.h:
        New BitKeeper file ``storage/maria/trnman_public.h''
      8f39541e
  17. 01 Mar, 2007 1 commit
    • unknown's avatar
      merge from MyISAM into Maria (last step of merge of 5.1 into Maria). · 3411bfe0
      unknown authored
      Tests: "maria" and "ps_maria" fail like before merge (assertions),
      "ma_test_all" fails like before merge (ma_test2 segfaults, I'll try
      to find out why).
      
      
      mysys/mf_pagecache.c:
        using a more distinctive tag
      storage/maria/ha_maria.cc:
        merge from MyISAM into Maria
      storage/maria/ma_check.c:
        merge from MyISAM into Maria
      storage/maria/ma_close.c:
        TODO as a word
      storage/maria/ma_create.c:
        merge from MyISAM into Maria
      storage/maria/ma_delete_all.c:
        TODO as a word
      storage/maria/ma_delete_table.c:
        TODO as a word
      storage/maria/ma_dynrec.c:
        merge from MyISAM into Maria
      storage/maria/ma_extra.c:
        merge from MyISAM into Maria
      storage/maria/ma_ft_boolean_search.c:
        merge from MyISAM into Maria
      storage/maria/ma_locking.c:
        merge from MyISAM into Maria
      storage/maria/ma_loghandler.c:
        fix for compiler warning
      storage/maria/ma_open.c:
        merge from MyISAM into Maria.
        I will ask Monty to check the ASKMONTY-marked piece of code.
      storage/maria/ma_packrec.c:
        merge from MyISAM into Maria
      storage/maria/ma_range.c:
        merge from MyISAM into Maria
      storage/maria/ma_rename.c:
        TODO as a word
      storage/maria/ma_rt_index.c:
        merge from MyISAM into Maria
      storage/maria/ma_rt_split.c:
        merge from MyISAM into Maria
      storage/maria/ma_search.c:
        merge from MyISAM into Maria
      storage/maria/ma_sort.c:
        merge from MyISAM into Maria
      storage/maria/ma_update.c:
        merge from MyISAM into Maria
      storage/maria/ma_write.c:
        merge from MyISAM into Maria
      storage/maria/maria_chk.c:
        merge from MyISAM into Maria
      storage/maria/maria_def.h:
        merge from MyISAM into Maria
      storage/maria/maria_pack.c:
        merge from MyISAM into Maria
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        fix for compiler warning
      storage/myisam/ha_myisam.cc:
        merge from MyISAM into Maria
      storage/myisammrg/ha_myisammrg.cc:
        merge from MyISAM into Maria
      3411bfe0
  18. 21 Feb, 2007 1 commit
    • unknown's avatar
      unittest fixed · 3b0e794a
      unknown authored
      storage/maria/unittest/Makefile.am:
        Unittest cleunup added
      storage/maria/unittest/ma_control_file-t.c:
        Unittest fixed according new file format
      storage/maria/unittest/ma_test_loghandler-t.c:
        Unittest cleunup added
        Unittest progress report added
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Unittest cleunup added
        Unittest progress report added
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Unittest cleunup added
        Unittest progress report added
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Unittest cleunup added
        Unittest progress report added
      storage/maria/unittest/ma_maria_log_cleanup.c:
        New BitKeeper file ``storage/maria/unittest/ma_maria_log_cleanup.c''
      3b0e794a
  19. 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
  20. 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
  21. 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