1. 11 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Added HANDLER support for MEMORY tables · 0d01dd20
      Michael Widenius authored
      Added key and file version numbers to MEMORY tables so that we can detect if someone has changed them between HANDLER calls.
      
      
      mysql-test/suite/handler/aria.result:
        Fixed result after test changes
      mysql-test/suite/handler/handler.inc:
        Changed test to use combined key to ensure rows are returned in a pre-determinated order.
      mysql-test/suite/handler/heap.result:
        New result
      mysql-test/suite/handler/heap.test:
        Added test for HANDLER + HEAP
      mysql-test/suite/handler/innodb.result:
        Fixed result after test changes
      mysql-test/suite/handler/myisam.result:
        Fixed result after test changes
      sql/sql_handler.cc:
        Fixed wrong parameter to ha_index_next_same()
      storage/heap/ha_heap.cc:
        Abort key scan if table has changed.
        Abort table scan if table has been recreated.
      storage/heap/ha_heap.h:
        Added support for HANDLER
      storage/heap/hp_clear.c:
        Increase version number so that we can notice changes if using HANDLER
      storage/heap/hp_delete.c:
        Increase key data version number on key changes.
      storage/heap/hp_rfirst.c:
        Remember version of key data
        Give error if using read-first on hash key.
      storage/heap/hp_rkey.c:
        Remember version of key data
      storage/heap/hp_rlast.c:
        Remember version of key data
        Give error if using read-last on hash key.
      storage/heap/hp_rnext.c:
        Fixed that we get next key from last search.
      storage/heap/hp_rprev.c:
        Fixed that we get previous key from last search.
      storage/heap/hp_scan.c:
        Remember version of key and file data
      storage/heap/hp_update.c:
        Increase key data version number on key changes.
      storage/heap/hp_write.c:
        Increase key data version number on key changes.
      0d01dd20
    • Michael Widenius's avatar
      Merge with 5.1 · 050c004f
      Michael Widenius authored
      Fixes to get Aria handler tests to work.
      Fixes LP#697597 "HANDLER + Aria asserts in maria-5.3-handler" 
      050c004f
  2. 10 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Automatic merge with 5.1 · 2eaa76b8
      Michael Widenius authored
      2eaa76b8
    • Michael Widenius's avatar
      - Fixed that Aria works with HANDLER commands · 505c663a
      Michael Widenius authored
      - Added test case for Aria
      - Tested HANDLER with HEAP (changes to HEAP code will be pushed in 5.3)
      - Moved all HANDLER test to suite/handler.
      
      
      mysql-test/Makefile.am:
        Added suite/handler
      mysql-test/mysql-test-run.pl:
        Added suite/handler
      mysql-test/r/lock_multi.result:
        Remove test that is already in handler test suite
      mysql-test/suite/handler/aria.result:
        Test for HANDLER with Aria storage engine
      mysql-test/suite/handler/aria.test:
        Test for HANDLER with Aria storage engine
      mysql-test/suite/handler/handler.inc:
        Extended the general handler test
        Moved interface testing to 'interface.test'
      mysql-test/suite/handler/init.inc:
        Common init for handler tests.
      mysql-test/suite/handler/innodb.result:
        New results
      mysql-test/suite/handler/innodb.test:
        Update to use new include files
      mysql-test/suite/handler/interface.result:
        Test of HANDLER interface (not storage engine dependent parts)
      mysql-test/suite/handler/interface.test:
        Test of HANDLER interface (not storage engine dependent parts)
      mysql-test/suite/handler/myisam.result:
        New results
      mysql-test/suite/handler/myisam.test:
        Update to use new include files
      mysql-test/t/lock_multi.test:
        Remove test that is already in handler test suite
      mysys/tree.c:
        Added missing handling of read previous (showed up in HEAP testing)
      sql/handler.cc:
        Don't marka 'HA_ERR_RECORD_CHANGED' as fatal (can be used with HANDLER READ, especially with MEMORY ENGINE)
      sql/handler.h:
        Added prototype for can_continue_handler_scan()
      sql/sql_handler.cc:
        Re-initialize search if we switch from key to table search.
        Check if handler can continue searching between calls (via can_continue_handler_scan())
        Don't write common not fatal errors to log
      storage/maria/ma_extra.c:
        Don't set index 0 as default. This forces call to ma_check_index() to set up index variables.
      storage/maria/ma_ft_boolean_search.c:
        Ensure that info->last_key.keyinfo is set
      storage/maria/ma_open.c:
        Don't set index 0 as default. This forces call to ma_check_index() to set up index variables.
      storage/maria/ma_rkey.c:
        Trivial optimization
      storage/maria/ma_rnext.c:
        Added missing code from mi_rnext.c to ensure that handler next/prev works.
      storage/maria/ma_rsame.c:
        Simple optimizations
      storage/maria/ma_search.c:
        Initialize info->last_key once and for all when we change keys.
      storage/maria/ma_unique.c:
        Ensure that info->last_key.keyinfo is up to date.
      505c663a
  3. 07 Jan, 2011 6 commits
    • Michael Widenius's avatar
      merge with 5.1 · 934c57c7
      Michael Widenius authored
      934c57c7
    • Michael Widenius's avatar
      Don't do DBUG_ASSERT for checksum errors when using REPAIR · c0fc6d42
      Michael Widenius authored
      mysql_convert_table_format ignored --engine option.
      Fix that zerofill() doesn't write out wrong data to client if run with auto repair.
      Ensure that pagecache is properly flushed, even in case of errors.
      Handle checksum errors in BLOCK_RECORD format.
      
      
      scripts/mysql_convert_table_format.sh:
        Fixed that --engine option works
      storage/maria/ha_maria.cc:
        Fix that zerofill() doesn't write out wrong data to client if run with auto repair.
      storage/maria/ma_check.c:
        Set in_check_table when scanning table to not get DBUG_ASSERT for checksum error.
        Ensure that pagecache is properly flushed, even in case of errors.
        Handle checksum errors in BLOCK_RECORD format.
      storage/maria/ma_sort.c:
        Set in_check_table when scanning table to not get DBUG_ASSERT for checksum error.
      c0fc6d42
    • Michael Widenius's avatar
      Fixed typos · b2abd1cb
      Michael Widenius authored
      Patch provided by Dolf Schimmel
      b2abd1cb
    • Michael Widenius's avatar
      Merge with base 5.2 · 53407ecf
      Michael Widenius authored
      53407ecf
    • Michael Widenius's avatar
      Aria fixes: · 26f98859
      Michael Widenius authored
      - Don't delete pages without flushing that has had a tail or head information in pagecache_delete()
        This fixes a case where REPAIR could find old deleted rows.
      
      
      storage/maria/ha_maria.cc:
        Remove calls to depricated function ha_statistic_increment
      storage/maria/ma_blockrec.c:
        Don't delete pages without flushing that has had a tail or head information in pagecache_delete()
      storage/maria/ma_pagecache.c:
        Added possibility to mark pages to not be deleted by pagecache_delete() without beeing flushed.
      storage/maria/ma_pagecache.h:
        Added new prototype
      26f98859
    • Michael Widenius's avatar
      Merge with 5.1 · fdaaf48c
      Michael Widenius authored
      fdaaf48c
  4. 06 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Bug fixing in Aria: · 5b0afd8a
      Michael Widenius authored
      - Fixed some bugs in recovery of blobs
      - Don't ASSERT() on checksum errors when running check table
      - Added to maria_read_log option --tables-to-redo=list-of-tables to only recover some tables (good for debugging)
      
      
      storage/maria/ma_blockrec.c:
        Don't ASSERT() on checksum errors when running check table
        Fixed bug in recovery of blog page that was not in dirty pages list
      storage/maria/ma_check.c:
        Don't ASSERT() on checksum errors when running check table
      storage/maria/ma_recovery.c:
        Handling of --tables-to-redo
      storage/maria/ma_recovery.h:
        Handling of --tables-to-redo
      storage/maria/ma_recovery_util.c:
        Give better warning if table was not in dirty pages list
      storage/maria/maria_def.h:
        Added in_check_table
      storage/maria/maria_read_log.c:
        Added --tables-to-redo=list-of-tables to only recover some tables (good for debugging)
        Cleaned up message when wrong arguments
      5b0afd8a
    • unknown's avatar
  5. 05 Jan, 2011 4 commits
  6. 04 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Fixed recovery problem in Aria where bitmap had wrong information after recovery. · 1e0b42d9
      Michael Widenius authored
      LP#619731: Aria recovery corruption "Page 1: Row: 1 has an extent with wrong information in bitmap
      
      storage/maria/ma_bitmap.c:
        Don't send broadcast if no one is waiting for it
      storage/maria/ma_blockrec.c:
        Don't update bitmap if the page is not in the dirty_page list (or LSN is after checkpoint start)
        Fixes the case where we have in the log redo_free_block followed by another redo entry for the same page which is ignored.
        Also fixed that _ma_apply_redo_insert_row_blobs() doesn't update the bitmap in similar circumstances.
      storage/maria/ma_blockrec.h:
        Updated prototype
      storage/maria/ma_check.c:
        Added printing of bitmap information if used with maria_chk -vvv (for debugging)
      storage/maria/ma_recovery.c:
        Updated call parameters to _ma_apply_redo_free_blocks().
      1e0b42d9
    • Michael Widenius's avatar
      Updated README for MTR test suite · 427c6c78
      Michael Widenius authored
      427c6c78
  7. 03 Jan, 2011 2 commits
    • Michael Widenius's avatar
      Implementation of MWL#172: Add support for prepared statements to HANDLER READ · e63b5546
      Michael Widenius authored
      It includes speed optimizations for HANDLER READ by caching as much as possible in HANDLER OPEN
      Other things:
      - Added mysqld option --disable-thr-alarm to be able to benchmark things without thr_alarm
      - Changed 'Locked' state to 'System lock' and 'Table lock' (these where used in the code but never shown to end user)
      - Better error message if mysql_install_db.sh fails
      - Moved handler function prototypes to sql_handler.h
      - Remove not anymore used 'thd->locked' member
      
      
      include/thr_alarm.h:
        Added my_disable_thr_alarm
      include/thr_lock.h:
        Add new member to THR_LOCK_DATA to remember original lock type state. This is needed as thr_unlock() resets type to TL_UNLOCK.
      mysql-test/include/check_no_concurrent_insert.inc:
        Locked -> Table lock
      mysql-test/include/handler.inc:
        Locked -> Table lock
      mysql-test/r/handler_innodb.result:
        Updated results for new tests
      mysql-test/r/handler_myisam.result:
        Updated results for new tests
      mysql-test/r/sp-threads.result:
        Locked -> Table lock
      mysql-test/suite/binlog/t/binlog_stm_row.test:
        Locked -> Table lock
      mysql-test/suite/funcs_1/datadict/processlist_val.inc:
        Locked -> Table lock
      mysql-test/suite/pbxt/t/lock_multi.test:
        Locked -> Table lock
      mysql-test/suite/sys_vars/r/concurrent_insert_func.result:
        Locked -> Table lock
      mysql-test/suite/sys_vars/t/concurrent_insert_func.test:
        Locked -> Table lock
      mysql-test/suite/sys_vars/t/delayed_insert_limit_func.test:
        Locked -> Table lock
      mysql-test/suite/sys_vars/t/query_cache_wlock_invalidate_func.test:
        Locked -> Table lock
      mysql-test/suite/sys_vars/t/sql_low_priority_updates_func.test:
        Locked -> Table lock
      mysql-test/t/insert_notembedded.test:
        Locked -> Table lock
      mysql-test/t/lock_multi.test:
        Locked -> Table lock
      mysql-test/t/merge-big.test:
        Locked -> Table lock
      mysql-test/t/multi_update.test:
        Locked -> Table lock
      mysql-test/t/query_cache_28249.test:
        Locked -> Table lock
      mysql-test/t/sp_notembedded.test:
        Locked -> Table lock
      mysql-test/t/sp_sync.test:
        Locked -> Table lock
      mysql-test/t/status.test:
        Locked -> Table lock
      mysql-test/t/trigger_notembedded.test:
        Locked -> Table lock
      mysys/thr_alarm.c:
        Added option to disable thr_alarm
      mysys/thr_lock.c:
        Detect loops
      scripts/mysql_install_db.sh:
        Give better error message if something goes wrong
      sql/Makefile.am:
        Added sql_handler.h
      sql/lock.cc:
        Split functions to allow one to cache value if store_lock() (for HANDLER functions).
        - Split mysql_lock_tables() into two functions, where first one allocates MYSQL_LOCK and other other one uses it.
        - Made get_lock_data() an external function.
        - Added argument to mysql_unlock_tables() to not free sql_lock.
        - Added argument to reset_lock_data() to reset lock structure to initial state (as after get_lock_data())
      sql/mysql_priv.h:
        Moved handler function prototypes to sql_handler.h
        Added new lock functions.
      sql/mysqld.cc:
        Added --thread-alarm startup option
      sql/net_serv.cc:
        Don't call vio_blocking() if not needed
      sql/sql_base.cc:
        include sql_handler.h
      sql/sql_class.cc:
        include sql_handler.h
        Remove not anymore used 'thd->locked' member
      sql/sql_class.h:
        Remove not anymore used 'thd->locked' member
      sql/sql_db.cc:
        include sql_handler.h
      sql/sql_delete.cc:
        include sql_handler.h
      sql/sql_handler.cc:
        Rewrote all code to use SQL_HANDLER instead of TABLE_LIST (original interface)
        Rewrote mysql_ha_open() to cache all things from TABLE_LIST and items for field list, where etc.
        In mysql_ha_open() also cache MYSQL_LOCK structure from get_lock_data().
        Split functions into smaller sub functions (needed to be able to implement mysql_ha_read_prepare())
        Added mysql_ha_read_prepare() to allow one to prepare HANDLER READ.
      sql/sql_handler.h:
        Interface to sql_handler.cc
      sql/sql_parse.cc:
        include sql_handler.h
      sql/sql_prepare.cc:
        Added mysql_test_handler_read(), prepare for HANDLER READ
      sql/sql_rename.cc:
        include sql_handler.h
      sql/sql_show.cc:
        Removed usage of thd->locked
      sql/sql_table.cc:
        include sql_handler.h
      sql/sql_trigger.cc:
        include sql_handler.h
      e63b5546
    • unknown's avatar
      Speed up `mtr --parallel=<lots>` by scheduling some slow tests earlier. · 92fc4263
      unknown authored
      The patch also fixes a race in rpl_stop_slave.test.
      
      On machines with lots of CPU and memory, something like `mtr --parallel=10`
      can speed up the test suite enormously. However, we have a few test cases
      that run for long (several minutes), and if we are unlucky and happen to
      schedule those towards the end of the test suite, we end up with most
      workers idle while waiting for the last slow test to end, significantly
      delaying the finish of the entire suite.
      
      Improve this by marking the offending tests as taking "long", and trying
      to schedule those tests early. This reduces the time towards the end of
      the test suite run where some workers are waiting with nothing to do for
      the remaining workers each to finish their last test.
      
      Also, the rpl_stop_slave test had a race which could cause it to take
      a 300 seconds debug_sync timeout; this is fixed.
      
      Testing on a 4-core 8GB machine, this patch speeds up the test suite with
      around 30% for --parallel=10 (debug build), allowing to run the entire
      suite in 5 minutes.
      92fc4263
  8. 31 Dec, 2010 1 commit
    • Sergei Golubchik's avatar
      virtual columns: · 31a78529
      Sergei Golubchik authored
       * move a capability from a virtual handler method to table_flags()
       * rephrase error messages to avoid hard-coded English parts
       * admit in test cases that they need xtradb, not innodb
      
      mysql-test/suite/vcol/t/rpl_vcol.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_blocked_sql_funcs_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_column_def_options_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_handler_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_ins_upd_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_keys_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_non_stored_columns_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_partition_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_select_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_supported_sql_funcs_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_trigger_sp_innodb.test:
        this test needs xtradb, it will fail with innodb
      mysql-test/suite/vcol/t/vcol_view_innodb.test:
        this test needs xtradb, it will fail with innodb
      sql/ha_partition.h:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      sql/handler.h:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      sql/share/errmsg.txt:
        no hard-coded english parts in the error messages (ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN)
      sql/sql_table.cc:
        no hard-coded english parts in the error messages
      sql/table.cc:
        * check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
        * no "csv workaround" is needed
        * no hard-coded english parts in the error messages
      storage/maria/ha_maria.cc:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      storage/maria/ha_maria.h:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      storage/myisam/ha_myisam.cc:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      storage/myisam/ha_myisam.h:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      storage/xtradb/handler/ha_innodb.cc:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      storage/xtradb/handler/ha_innodb.h:
        check_if_supported_virtual_columns() -> HA_CAN_VIRTUAL_COLUMNS
      31a78529
  9. 27 Dec, 2010 1 commit
  10. 26 Dec, 2010 1 commit
  11. 25 Dec, 2010 1 commit
  12. 24 Dec, 2010 2 commits
    • Igor Babaev's avatar
      Fixed LP bug #639935 (bug #58727). · efbb3c6c
      Igor Babaev authored
      When the optimizer creates items out of other items it does
      not have to call the fix_fields method. Usually in these
      cases it calls quick_fix_field() that just marks the 
      created item as fixed. If the created item is an Item_func
      object then calling quick_fix_field() works fine if the
      arguments of the created functional item are already fixed.
      Otherwise some unfixed nodes remain in the item tree and
      it triggers an assertion failure whenever the item is 
      evaluated.
      
      Fixed the problem by making the method quick_fix_field
      virtual and providing an implementation for the class
      Item_func objects that recursively calls the method
      for unfixed arguments of any functional item.
      efbb3c6c
    • Igor Babaev's avatar
      Fixed LP bug#694092. · d9a81475
      Igor Babaev authored
      In some cases the function make_cond_for_index() was mistaken
      when detecting index only pushdown conditions for a table: 
      a pushdown condition that was not index only could be marked
      as such.
      It happened because the procedure erroneously used the markers
      for index only conditions that remained from the calls of
      this function that extracted the index conditions for other 
      tables.
      Fixed by erasing index only markers as soon as they are need
      anymore.
      d9a81475
  13. 22 Dec, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #670380. · a095346a
      Igor Babaev authored
      Lifted the limitation that hash join could not be used over 
      varchar fields with non-binary collation.
      a095346a
  14. 21 Dec, 2010 4 commits
  15. 20 Dec, 2010 2 commits
  16. 19 Dec, 2010 1 commit
  17. 17 Dec, 2010 3 commits
  18. 16 Dec, 2010 3 commits