1. 11 Dec, 2007 6 commits
    • unknown's avatar
      Logfile size put in allowed boumnds. · edfa1629
      unknown authored
      edfa1629
    • unknown's avatar
      Postmerge changes. · 894081ce
      unknown authored
      
      storage/maria/ma_loghandler.c:
        Fixed compiler warning.
        translog_mutex_unlock -> pthread_mutex_unlock: postmerge change.
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        Fixed forgoten log size out of bounds.
      894081ce
    • unknown's avatar
      Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria · b5b0d94d
      unknown authored
      into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-logpurge
      
      
      storage/maria/ma_checkpoint.c:
        Auto merged
      storage/maria/ma_loghandler.c:
        Auto merged
      storage/maria/ma_loghandler.h:
        Auto merged
      storage/maria/ma_recovery.c:
        Auto merged
      b5b0d94d
    • unknown's avatar
      Post review fix (serg). · fed1d21b
      unknown authored
      Added more checks.
      
      
      storage/maria/ha_maria.cc:
        Let control size to my_get_opts().
      storage/maria/ma_loghandler.c:
        Let control size to my_get_opts().
        Removed unused function.
        Assert to check log file size.
        Additional compilation warnings.
      storage/maria/ma_loghandler.h:
        New log size bounds.
        Removed unused function.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Fixed test to confirm new log size bounds.
      fed1d21b
    • unknown's avatar
      Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria · 81201758
      unknown authored
      into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-testfail
      
      
      storage/maria/ma_loghandler.c:
        Auto merged
      81201758
    • unknown's avatar
      Page number calculation fixed. · 6a6674a6
      unknown authored
      6a6674a6
  2. 10 Dec, 2007 9 commits
    • unknown's avatar
      WL#3072 Maria recovery: · 13f45b16
      unknown authored
      fix for bug: if a crash happened right after writing a REDO like this:
      REDO - UNDO - REDO*, then recovery would ignore the last REDO* (ok),
      rollback: REDO - UNDO - REDO* - REDO - CLR, and a next recovery would
      thus execute REDO* instead of skipping it again. Recovery now logs
      LOGREC_INCOMPLETE_GROUP when it meets REDO* for the first time,
      to draw a boundary and ensure it is always skipped. Tested by hand.
      Note: ma_test_all fails "maria_chk: error: Key 1 - Found too many records"
      not due to this patch (failed before).
      
      
      BitKeeper/triggers/post-commit:
        no truncation of the commit mail, or how to review patches?
      mysql-test/include/maria_verify_recovery.inc:
        let caller choose the statement used to crash (sometimes we
        want the crash to happen at special places)
      mysql-test/t/maria-recovery.test:
        user of maria_verify_recovery.inc now specifies statement which the
        script should use for crashing.
      storage/maria/ma_bitmap.c:
        it's easier to search for all places using functions from the bitmap
        module (like in ma_blockrec.c) if those exported functions all start
        with "_ma_bitmap": renaming some of them.
        Assertion that when we read a bitmap page, overwriting bitmap->map,
        we are not losing information (i.e. bitmap->changed is false).
      storage/maria/ma_blockrec.c:
        update to new names. Adding code (disabled, protected by a #ifdef)
        that I use to test certain crash scenarios (more to come).
      storage/maria/ma_blockrec.h:
        update to new names
      storage/maria/ma_checkpoint.c:
        update to new names
      storage/maria/ma_extra.c:
        update to new names
      storage/maria/ma_loghandler.c:
        new LOGREC_INCOMPLETE_GROUP
      storage/maria/ma_loghandler.h:
        new LOGREC_INCOMPLETE_GROUP
      storage/maria/ma_recovery.c:
        When at the end of the REDO phase we have identified some transactions
        with incomplete REDO groups (REDOs without an UNDO or CLR_END),
        for each of them we log LOGREC_INCOMPLETE_GROUP. This way, the
        upcoming UNDO phase can write more records for such transaction,
        a future recovery won't pair the incomplete group with the
        CLR_END (as there is LOGREC_INCOMPLETE_GROUP to draw a boundary).
      13f45b16
    • unknown's avatar
      ma_recovery.c: · 12a81c39
      unknown authored
        SCCS merged
      .del-ma_key_redo.c:
        Auto merged
      
      
      BitKeeper/deleted/.del-ma_key_redo.c:
        Auto merged
      storage/maria/ma_recovery.c:
        SCCS merged
      12a81c39
    • unknown's avatar
      Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-maria · 11d72916
      unknown authored
      into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria
      
      
      11d72916
    • unknown's avatar
      Fixed bug in first log file detecting function. · 29d18bf0
      unknown authored
      
      storage/maria/ma_loghandler.c:
        min_file should be for sure unexistant file for right search.
      29d18bf0
    • unknown's avatar
      Fixed bug in allocation of dynamic record buffer in Maria · e8b0bb47
      unknown authored
      Unified printing of mutex addresses to make them easier to compare
      
      
      mysys/thr_mutex.c:
        Unified printing of mutex addresses to make them easier to compare
      storage/maria/ma_dynrec.c:
        Fixed indentation
      storage/maria/ma_open.c:
        Fixed bug in allocation of dynamic record buffer
      e8b0bb47
    • unknown's avatar
      Fixed some compiler errors · abe1031e
      unknown authored
      
      mysys/my_thr_init.c:
        Added missing DBUG_OFF
      storage/maria/ma_loghandler.c:
        Fixed wrong macro
      abe1031e
    • unknown's avatar
      Fixed core dump when running myisamchk (as this doesn't call translog_init) · 8373b4de
      unknown authored
      Added option --transaction-log to maria_chk
      
      
      storage/maria/ma_init.c:
        Fixed core dump when running maria_chk (as this doesn't call translog_init)
      storage/maria/ma_test_all.sh:
        Added testing of --transaction-log
      storage/maria/maria_chk.c:
        Enable logging of repair commands if run with --transaction-log
      8373b4de
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-maria · 45714353
      unknown authored
      into  mysql.com:/home/my/mysql-maria
      
      
      storage/maria/ma_blockrec.c:
        Auto merged
      storage/maria/ma_loghandler.c:
        Auto merged
      storage/maria/ma_loghandler.h:
        Auto merged
      45714353
    • unknown's avatar
      Added MARIA_SHARE *share to a lot of places to make code simpler · 2f6f08ed
      unknown authored
      Changed info->s -> share to get more efficent code
      Updated arguments to page accessor functions to use MARIA_SHARE * instead of MARIA_HA *.
      Tested running tests in quick mode (no balance page on insert and only when critical on delete)
      Fixed bug in underflow handling in quick mode
      Fixed bug in log handler where it accessed not initialized variable
      Fixed bug in log handler where it didn't free mutex in unlikely error condition
      Removed double write of page in case of of some underflow conditions
      Added DBUG_PRINT in safemutex lock/unlock
      
      
      dbug/dbug.c:
        Compile without SAFE_MUTEX (to be able to use DBUG_PRINT in safe_mutex code)
        Use calls to get/set my_thread_var->dbug. (Make dbug independent of compile time options for mysys)
      include/my_pthread.h:
        Added prototypes for my_thread_var_get_dbug() & my_thread_var_set_dbug()
      mysql-test/lib/mtr_report.pl:
        Don't check warnings in log files if we are using --extern
      mysys/my_thr_init.c:
        Added my_thread_var_get_dbug() & my_thread_var_set_dbug()
      mysys/thr_mutex.c:
        Added DBUG printing of addresses to mutex for lock/unlock
      storage/maria/ma_blockrec.c:
        Fixed comment
      storage/maria/ma_check.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_close.c:
        Indentation fixes
      storage/maria/ma_create.c:
        Calculate min_key_length correctly
      storage/maria/ma_dbug.c:
        Indentation fixes
      storage/maria/ma_delete.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
        Removed some writing of key pages that underflow (will be written by caller)
        Fixed crashing bug in underflow handling when using quick mode
      storage/maria/ma_delete_all.c:
        Indentation fixes
      storage/maria/ma_dynrec.c:
        Indentation fixes
      storage/maria/ma_extra.c:
        Fixed indentation
        Removed old useless code
        Reset share->changed if we have written state
      storage/maria/ma_ft_update.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_info.c:
        Indentation fixes
      storage/maria/ma_key_recover.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_locking.c:
        Indentation fixes
      storage/maria/ma_loghandler.c:
        Removed wrapper functions translog_mutex_lock and translog_mutex_unlock (safemutex now does same kind of printing)
        Renamed LOGREC_REDO_INSERT_ROW_BLOB to LOGREC_REDO_INSERT_NOT_USED to mark it free
        Fixed some DBUG_PRINT to ensure that convert-dbug-for-diff works
        Fixed bug in translog_flush() that caused log to stop syncing to disk
        Added missing mutex_unlock in case of error
      storage/maria/ma_loghandler.h:
        Renamed LOGREC_REDO_INSERT_ROW_BLOB to LOGREC_REDO_INSERT_NOT_USED to mark it free
      storage/maria/ma_open.c:
        Indentation fixes
      storage/maria/ma_packrec.c:
        Indentation fixes
      storage/maria/ma_page.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
        Added check that we never write a key page without content (except in recovery where a key page may temporary be without content)
      storage/maria/ma_preload.c:
        Updated arguments to page accessor functions
      storage/maria/ma_range.c:
        Updated arguments to page accessor functions
      storage/maria/ma_rkey.c:
        Indentation fixes
      storage/maria/ma_rprev.c:
        Indentation fixes
      storage/maria/ma_rt_index.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_rt_index.h:
        Updated arguments to page accessor functions
      storage/maria/ma_rt_key.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_rt_mbr.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_rt_split.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_search.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/ma_sort.c:
        Indentation fixes
      storage/maria/ma_statrec.c:
        Indentation fixes
      storage/maria/ma_test1.c:
        Added extra undo test
        Flush also keys in -u1, to ensure that the full log is flushed
      storage/maria/ma_test2.c:
        Added extra undo test
        Flush also keys in -u1, to ensure that the full log is flushed
      storage/maria/ma_test_recovery.expected:
        Updated results
      storage/maria/ma_test_recovery:
        Added extra undo test
      storage/maria/ma_update.c:
        Indentation fixes
      storage/maria/ma_write.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
        Prepare for quick mode for insert (don't balance page)
      storage/maria/maria_chk.c:
        Added MARIA_SHARE *share to a lot of places to make code simpler
        info->s -> share
        Updated arguments to page accessor functions
      storage/maria/maria_def.h:
        Updated arguments to page accessor functions
      2f6f08ed
  3. 09 Dec, 2007 2 commits
    • unknown's avatar
      Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria · 1ec645bd
      unknown authored
      into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-logpurge
      
      
      mysql-test/r/maria.result:
        Auto merged
      storage/maria/ma_checkpoint.c:
        Auto merged
      storage/maria/ma_recovery.c:
        Auto merged
      storage/maria/ha_maria.cc:
        Merge
      storage/maria/ma_loghandler.c:
        Merge
      storage/maria/ma_loghandler.h:
        Merge
      1ec645bd
    • unknown's avatar
      Manageable transactional log purge and file size · 771296eb
      unknown authored
      support added to maria.
      
      
      mysql-test/r/maria.result:
        New variables added.
      storage/maria/ha_maria.cc:
        Variable for transactional log purge method added.
        Variable for transactional log size added.
        SHOW for engine logs added.
        Log flush purge logs in case of "ondemand" type of
          log processing.
      storage/maria/ma_checkpoint.c:
        log purge call enabled.
      storage/maria/ma_loghandler.c:
        Support for different methods of log purge added.
        Functions for getting information about logs state added.
        Functions for getting/setting log size.
      storage/maria/ma_loghandler.h:
        Fixed defines.
        Functions for for transactional log mannegment added.
      storage/maria/ma_recovery.c:
        Dependence on TRANSLOG_FILE_SIZE removed.
      mysql-test/r/maria-purge.result:
        New BitKeeper file ``mysql-test/r/maria-purge.result''
      mysql-test/t/maria-purge.test:
        New BitKeeper file ``mysql-test/t/maria-purge.test''
      771296eb
  4. 06 Dec, 2007 3 commits
    • unknown's avatar
      Post-review fixes + some locking cleanup. · f8b7f8be
      unknown authored
      
      storage/maria/ma_loghandler.c:
        translog_lock() made safe (non-mutex-protected operation is atomic now).
        Fixed translog_destroy() because it will not work to be
          called several times.
      f8b7f8be
    • unknown's avatar
      Merge desktop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-maria · 593bb24d
      unknown authored
      into  desktop.sanja.is.com.ua:/home/bell/mysql/bk/work-maria-controlfile
      
      
      593bb24d
    • unknown's avatar
      Trivial postreview changes. · 21f63e41
      unknown authored
      
      storage/maria/ma_blockrec.c:
        Layout fix.
      storage/maria/ma_loghandler.c:
        Renamed struct variable 'class' to avoid problems with c++ compiler.
        Renamed translog_init_scanner to fit othere init functions naming pattern.
        translog_relative_LSN_encode can't return error for now.
        Other trivial postreview changes.
      storage/maria/ma_loghandler_lsn.h:
        trivial postreview changes.
      storage/maria/ma_recovery.c:
        Renamed translog_init_scanner to fit othere init functions naming pattern.
      storage/maria/unittest/ma_loghandler_examples.c:
        Renamed struct variable 'class' to avoid problems with c++ compiler.
      storage/maria/unittest/ma_test_loghandler-t.c:
        Renamed translog_init_scanner to fit othere init functions naming pattern.
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Renamed translog_init_scanner to fit othere init functions naming pattern.
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Renamed translog_init_scanner to fit othere init functions naming pattern.
      21f63e41
  5. 05 Dec, 2007 5 commits
  6. 04 Dec, 2007 3 commits
    • unknown's avatar
      Don't give warnings when reading blocks when we know the block may not exist (in maria_read_log) · 74b8abc6
      unknown authored
      Don't give warnings when opening a wrong control file in ma_control_file_t (unit test)
      
      
      BitKeeper/deleted/.del-ma_key_redo.c:
        Delete: storage/maria/ma_key_redo.c
      storage/maria/ma_blockrec.c:
        Don't give warnings when reading blocks when we know the block may not exist
      storage/maria/ma_pagecache.c:
        Keep a convinience copy of readwrite_flags
      storage/maria/ma_pagecache.h:
        Keep a convinience copy of readwrite_flags
      storage/maria/unittest/ma_control_file-t.c:
        Don't give warnings when opening a wrong control file
      74b8abc6
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-maria · b9734f0d
      unknown authored
      into  mysql.com:/home/my/mysql-maria
      
      
      storage/maria/ha_maria.cc:
        Auto merged
      storage/maria/ma_loghandler.c:
        Auto merged
      storage/maria/ma_loghandler.h:
        Auto merged
      storage/maria/unittest/ma_test_loghandler-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_first_lsn-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_max_lsn-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        Auto merged
      storage/maria/unittest/ma_test_loghandler_purge-t.c:
        Auto merged
      storage/maria/unittest/test_file.c:
        Auto merged
      storage/maria/unittest/ma_pagecache_single.c:
        SCCS merged
      b9734f0d
    • 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
  7. 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
  8. 01 Dec, 2007 1 commit
  9. 30 Nov, 2007 1 commit
    • unknown's avatar
      Fix bug with skipped syncing. · b7ae94d8
      unknown authored
      Fix of unit tests.
      2 new tests for new features.
      
      
      storage/maria/ma_control_file.c:
        Getting the definition from the file for unit-test.
      storage/maria/ma_loghandler.c:
        Fix bug with skipped syncing.
      storage/maria/unittest/ma_control_file-t.c:
        Fix of unit test of control file.
        2 new tests for new features of control file.
      b7ae94d8
  10. 29 Nov, 2007 1 commit
  11. 28 Nov, 2007 2 commits
    • unknown's avatar
      Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-maria · decc0046
      unknown authored
      into  gbichot4.local:/home/mysql_src/mysql-maria-monty
      
      
      storage/maria/ma_recovery.c:
        Auto merged
      decc0046
    • unknown's avatar
      Fixed repair_by_sort to work with BLOCK_RECORD · 4e0964cb
      unknown authored
      Fixed bugs in undo logging
      Fixed bug where head block was split before min_row_length (caused Maria to believe row was crashed on read)
      Reserved place for reference-transid on key pages (for packing of transids)
      ALTER TABLE and INSERT ... SELECT now uses fast creation of index
          
      Known bugs:
      ma_test_recovery fails because of a bug in redo handling when log is cut directly after a redo (Guilhem knows how to fix)
      ma_test_recovery.excepted is not totally correct, because of the above bug
      mysqld sometimes fails to restart; Fails with error "end_of_redo_phase: Assertion `long_trid != 0' failed"; Guilhem to investigate
      
      
      include/maria.h:
        Prototype changes
        Added current_filepos to st_maria_sort_info
      mysql-test/r/maria.result:
        Updated results that changes as alter table and insert ... select now uses fast creation of index
      mysys/mf_iocache.c:
        Reset variable to gurard against double invocation
      storage/maria/ma_bitmap.c:
        Added _ma_bitmap_reset_cache() (needed for repair)
      storage/maria/ma_blockrec.c:
        Simplify code
        More initial allocations
        Fixed bug where head block was split before min_row_length (caused Maria to believe row was crashed on read)
      storage/maria/ma_blockrec.h:
        Moved TRANSID_SIZE to maria_def.h
        Added prototype for new functions
      storage/maria/ma_check.c:
        Simplicy code
        Fixed repair_by_sort to work with BLOCK_RECORD
        - When using BLOCK_RECORD or UNPACK create new Maria handle
        - Use common initializer function
        - Align code with maria_repair()
        
        Made some changes to maria_repair_parallel() to use common initializer function
        Removed ASK_MONTY section by fixing noted problem
      storage/maria/ma_close.c:
        Moved check for readonly to _ma_state_info_write()
      storage/maria/ma_key_recover.c:
        Use different log entries if key root changes or not.
        This fixed some bugs when tree grows
      storage/maria/ma_key_recover.h:
        Added keynr to st_msg_to_write_hook_for_undo_key
      storage/maria/ma_loghandler.c:
        Added INIT_LOGREC_UNDO_KEY_INSERT_WITH_ROOT
      storage/maria/ma_loghandler.h:
        Added INIT_LOGREC_UNDO_KEY_INSERT_WITH_ROOT
      storage/maria/ma_open.c:
        Added TRANSID to all key pages (for future compressing of trans id's)
        For compressed records, alloc a bit bigger buffer to avoid valgrind warnings
        If table is opened readonly, don't update state
      storage/maria/ma_packrec.c:
        Allocate bigger array for bit unpacking to avoid valgrind errors
      storage/maria/ma_recovery.c:
        Added UNDO_KEY_INSERT_WITH_ROOT & UNDO_KEY_DELETE_WITH_ROOT
      storage/maria/ma_sort.c:
        More logging
      storage/maria/ma_test_all.sh:
        More tests
      storage/maria/ma_test_recovery.expected:
        Update results
        Note that this is not complete becasue of a bug in recovery
      storage/maria/ma_test_recovery:
        Removed recreation of index (not needed when we have redo for index pages)
      storage/maria/maria_chk.c:
        When using flag --read-only, don't update status for files
        When using --unpack, don't use REPAIR_BY_SORT if other repair option is given
        Enable repair_by_sort for BLOCK records
        Removed not needed newline at start of --describe
      storage/maria/maria_def.h:
        Support for TRANSID_SIZE to key pages
      storage/maria/maria_read_log.c:
        renamed --only-display to --display-only
      4e0964cb
  12. 21 Nov, 2007 2 commits
    • unknown's avatar
      removing old file replaced by ma_key_recover.c · 3c3d518c
      unknown authored
      
      BitKeeper/deleted/.del-ma_key_redo.c:
        Delete: storage/maria/ma_key_redo.c
      storage/maria/ma_recovery.c:
        now that we have indices, when state is older we don't always
        update rows' count
      3c3d518c
    • unknown's avatar
      Fixed errors found by valgrind · 63cd7bdc
      unknown authored
      Changed bitmaps to be written before unpinning of pages in write_block_record()
      Log handler now assumes we never call it for not transactional tables
      Fixed bug in ma_test_all that caused it to fail
      
      
      sql/unireg.cc:
        Removed 'at', as this makes it hard to find valgrind errors from the debug log
      storage/maria/ma_blockrec.c:
        Changed bzero() of blocks to get rid of a (non critical) valgrind error
        Changed bitmaps to be written before unpinning of pages in write_block_record()
        fixed that we don't log tails if table isn't transactional
      storage/maria/ma_key_recover.c:
        Fixed wrong log_data[] that caused us to log uninitialized data
      storage/maria/ma_loghandler.c:
        Replaced not needed test with DBUG_ASSERT()
      storage/maria/ma_test_all.sh:
        Remove control file if block size changes
      63cd7bdc
  13. 20 Nov, 2007 2 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-maria · 9f1aaeff
      unknown authored
      into  mysql.com:/home/my/mysql-maria
      
      
      include/my_sys.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      storage/maria/ma_checkpoint.c:
        Auto merged
      storage/maria/ma_pagecache.c:
        Auto merged
      storage/maria/ma_pagecache.h:
        Auto merged
      storage/maria/maria_chk.c:
        Auto merged
      storage/maria/ma_recovery.c:
        SCCS merged
      9f1aaeff
    • unknown's avatar
      Fixes for redo/undo logging of key pages · 6b3743f0
      unknown authored
      New extendable format for maria_log_control file
      Fixed some compiler warnings
      
      
      include/maria.h:
        Added maria_disable_logging() and maria_enable_logging()
      mysql-test/include/maria_verify_recovery.inc:
        Updated tests now when key redo/undo works
      mysql-test/r/maria-recovery.result:
        Updated tests now when key redo/undo works
      storage/maria/ma_blockrec.c:
        Use unified CLR code
        Added rec_lsn for full pages
        Moved clr write hook to ma_key_recover.c
        Changed REDO code to keep pages pinned until undo
        Mark page_link's as changed
      storage/maria/ma_blockrec.h:
        Moved write_hook_for_clr_end() to ma_key_recover.c
      storage/maria/ma_check.c:
        Changed key check code to use PAGECACHE_READ_UNKNOWN_PAGE
        Fixed wrong warning when checking files after maria_pack
        When unpacking files, we have to use new keypos_to_recpos method
        When doing repair, we can disregard index key file pages in page cache
      storage/maria/ma_commit.c:
        Added simple enable/disable logging functions
        (Needed for recovery)
      storage/maria/ma_control_file.c:
        Make maria control file extendable without having to make it incompatible for older versions
      storage/maria/ma_control_file.h:
        New error messages
        Added CONTROL_FILE_VERSION
      storage/maria/ma_delete.c:
        Added redo/undo for key pages
        change_length -> changed_length to make things similar
        More comments & more DBUG
      storage/maria/ma_key_recover.c:
        Unified CLR method
        Moved here write_hook_for_clr_end() and common keypage log functions
        Changed REDO to keep pages pinned until undo
        Changed UNDO code to change key_root under log mutex
      storage/maria/ma_key_recover.h:
        New structures and functions
      storage/maria/ma_loghandler.c:
        Include needed files
      storage/maria/ma_open.c:
        Change maria_open() to use pread() instead of read()
      storage/maria/ma_page.c:
        Fixed bug in key_del handling
        Clear pages if IDENTICAL_PAGES_AFTER_RECOVERY is defined
      storage/maria/ma_pagecache.c:
        Indentation and spelling fixes
        More DBUG
        Added helper function: pagecache_block_link_to_buffer()
      storage/maria/ma_pagecache.h:
        Added pagecache_block_link_to_buffer()
      storage/maria/ma_recovery.c:
        Fixed state.changed
        Fixed that REDO keeps pages pinned until UNDO
        Some bug fixes from previous commit
        Fixes for UNDO/REDO of key pages
      storage/maria/ma_search.c:
        Fixed packing and storing of keys to provide more information to caller so
        that we can do efficent REDO logging of the changes.
      storage/maria/ma_test1.c:
        Fixed bug with not initialized variable
      storage/maria/ma_test2.c:
        Removed not used code
      storage/maria/ma_test_all.res:
        Updated results
      storage/maria/ma_test_all.sh:
        Changed one test to test more
        Removed timing tests as not relevant here
      storage/maria/ma_test_recovery.expected:
        Updated test result after redo/undo if key pages works
      storage/maria/ma_test_recovery:
        Updated test after redo/undo if key pages works
      storage/maria/ma_write.c:
        Moved some general log functions to ma_key_recover.c
        Fixed some bugs in undo
        Moved ma_log_split() to _ma_split_page()
        Small changes in some function arguments to be able to do redo logging
      storage/maria/maria_chk.c:
        disable logging while doing repair table
      storage/maria/maria_def.h:
        New function prototypes
        Move some structs and functions to ma_key_recover.c
      storage/maria/unittest/ma_control_file-t.c:
        Updated with patch from Sanja
        NOTE: This is not complete and need to be updated to new control file format
      storage/maria/unittest/ma_test_loghandler-t.c:
        Fixed compiler warning
      6b3743f0
  14. 16 Nov, 2007 2 commits
    • unknown's avatar
      WL#3071 Maria checkpoint, WL#3072 Maria recovery · fc0a25ec
      unknown authored
      instead of fprintf(stderr) when a task (with no user connected) gets
      an error, use my_printf_error(). Flags ME_JUST_WARNING and ME_JUST_INFO
      added to my_error()/my_printf_error(), which pass it to
      my_message_sql() which is modified to call the appropriate
      sql_print_*(). This way recovery can signal its start and end with
      [Note] and not [ERROR] (but failure with [ERROR]).
      Recovery's detailed progress (percents etc) still uses stderr as they
      have to stay on one single line.
      sql_print_error() changed to use my_progname_short (nicer display).
      mysql-test-run.pl --gdb/--ddd does not run mysqld, because
      a breakpoint in mysql_parse is too late to debug startup problems;
      instead, dev should set the breakpoints it wants and then "run" ("r").
      
      
      include/my_sys.h:
        new flags to tell error_handler_hook that this is not an error
        but an information or warning
      mysql-test/mysql-test-run.pl:
        when running with --gdb/--ddd to debug mysqld, breaking at mysql_parse
        is too late to debug startup problems; now, it does not run mysqld,
        does not set breakpoints, developer can set as early breakpoints
        as it wants and is responsible for typing "run" (or "r")
      mysys/my_init.c:
        set my_progname_short
      mysys/my_static.c:
        my_progname_short added
      sql/mysqld.cc:
        * my_message_sql() can now receive info or warning, not only error;
        this allows mysys to tell the user (or the error log if no user)
        about an info or warning. Used from Maria.
        * plugins (or engines like Maria) may want to call my_error(), so
        set up the error handler hook (my_message_sql) before initializing
        plugins; otherwise they get my_message_no_curses which is less
        integrated into mysqld (is just fputs())
        * using my_progname_short instead of my_progname, in my_message_sql()
        (less space on screen)
      storage/maria/ma_checkpoint.c:
        fprintf(stderr) -> ma_message_no_user()
      storage/maria/ma_checkpoint.h:
        function for any Maria task, not connected to a user (example:
        checkpoint, recovery; soon could be deleted records purger)
        to report a message (calls my_printf_error() which, when inside ha_maria,
        leads to sql_print_*(), and when outside, leads to
        my_message_no_curses i.e. stderr).
      storage/maria/ma_recovery.c:
        To tell that recovery starts and ends we use ma_message_no_user()
        (sql_print_*() in practice). Detailed progress info still uses
        stderr as sql_print() cannot put several messages on one line.
        071116 18:42:16 [Note] mysqld: Maria engine: starting recovery
        recovered pages: 0% 67% 100% (0.0 seconds); transactions to roll back: 1 0 (0.0
        seconds); tables to flush: 1 0 (0.0 seconds);
        071116 18:42:16 [Note] mysqld: Maria engine: recovery done
      storage/maria/maria_chk.c:
        my_progname_short moved to mysys
      storage/maria/maria_read_log.c:
        my_progname_short moved to mysys
      storage/myisam/myisamchk.c:
        my_progname_short moved to mysys
      fc0a25ec
    • unknown's avatar
      WL#3071 Maria checkpoint · ce2fbd9e
      unknown authored
      background page flushing was using dfile even when it wanted to flush
      the index file.
      
      
      storage/maria/ma_checkpoint.c:
        * filter_flush_data_file* functions are in fact for the index file too,
        renaming them.
        * flush of index file was using dfile (bad copy-paste)
      ce2fbd9e