1. 20 Feb, 2011 1 commit
    • Michael Widenius's avatar
      Added HandlerSocket plugin · 2c7d6f12
      Michael Widenius authored
      - Fixed compiler errors
      - Modified Makefiles to be part of plugin directory
      - Some minor changes in database.cpp to use the new MariaDB handler interface
      2c7d6f12
  2. 14 Jan, 2011 1 commit
  3. 13 Jan, 2011 1 commit
    • Michael Widenius's avatar
      Updated test results for 5.3 · bda130e6
      Michael Widenius authored
      Changed handler.inc to make test row order independent
      
      mysql-test/r/table_elim.result:
        Updated test results for 5.3
      mysql-test/suite/handler/aria.result:
        Updated result
      mysql-test/suite/handler/handler.inc:
        Changed handler.inc to make test row order independent
      mysql-test/suite/handler/heap.result:
        Updated result
      mysql-test/suite/handler/innodb.result:
        Updated result
      mysql-test/suite/handler/myisam.result:
        Updated result
      bda130e6
  4. 12 Jan, 2011 8 commits
  5. 11 Jan, 2011 10 commits
    • Michael Widenius's avatar
      Fixed bug in Maria page cache that caused assert if block->request != 0 in free_block() · 3e77b1da
      Michael Widenius authored
      
      storage/maria/ma_pagecache.c:
        - Ensure that we write also the last buffer in flush if buffer overflows.
        - Don't set PCBLOCK_IN_FLUSH if we don't flush the page
        - Added some new safety asserts.
      3e77b1da
    • Michael Widenius's avatar
      Allow one to decrease page-buffer-size down to 1M (from 128M) for maria_read_log · 713999a4
      Michael Widenius authored
      Don't allow too low value of pagecache_buffer_size for mysqld
      
      storage/maria/ha_maria.cc:
        Don't allow too low value of pagecache_buffer_size (as it will stop mysqld from starting)
      storage/maria/maria_read_log.c:
        Allow one to decrease page-buffer-size down to 1M (from 128M)
      713999a4
    • Michael Widenius's avatar
      b32bed74
    • 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
    • Michael Widenius's avatar
      Allow smaller size for page-buffer-size · a008186f
      Michael Widenius authored
      storage/maria/maria_read_log.c:
        Allow smaller size for page-buffer-size (down to 1M)
        Sorted options for --help
      a008186f
    • Michael Widenius's avatar
      automatic merge with 5.1 · e6ba9d28
      Michael Widenius authored
      e6ba9d28
    • Michael Widenius's avatar
      Fixed wrong test in maria_rsame() that caused ma_test_all to fail. · 9ae7fb96
      Michael Widenius authored
      storage/maria/ma_rsame.c:
        Fixed wrong test of index usage
      storage/maria/ma_search.c:
        Fixed test to avoid compiler warnings.
        Safety fix to ensure that my_error is properly set in case of errors.
      9ae7fb96
    • Sergey Petrunya's avatar
      BUG#675118: Elimination of a table results in an invalid execution plan · ef623209
      Sergey Petrunya authored
      - Fix for MySQL BUG#52357 added NESTED_JOIN::is_fully_covered() which would 
        not take into account that MariaDB's table elimination could eliminate tables
        from join plan (and so, from join nest).
        Fixed the check in the function to compare post-table-elimination numbers.
      ef623209
    • Michael Widenius's avatar
      Safety fix for Aria: · fcd3f2cd
      Michael Widenius authored
      - Set lastinx= ~0 when last_key.keyinfo is set.
      
      
      storage/maria/ma_check.c:
        Set lastinx= ~0 when last_key.keyinfo is set
      storage/maria/ma_ft_boolean_search.c:
        Set lastinx= ~0 when last_key.keyinfo is set
      storage/maria/ma_rt_index.c:
        Remove setting of info->lastkey.keyinfo, as this should already be set by caller
      storage/maria/ma_search.c:
        Added ASSERT to ensure that info->last_key.keyinfo is properly set
      storage/maria/ma_unique.c:
         Set lastinx= ~0 when last_key.keyinfo is set
      fcd3f2cd
  6. 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
  7. 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
  8. 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
  9. 05 Jan, 2011 4 commits
  10. 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
  11. 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
  12. 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