1. 22 Oct, 2010 1 commit
    • Igor Babaev's avatar
      Fixed LP bug #663840. · c451ace9
      Igor Babaev authored
      When adding a new record into the join buffer that is employed by
      BNLH join algorithm the writing procedure JOIN_CACHE::write_record_data 
      checks whether there is enough space for the record in the buffer.
      When doing this it must take into account a possible new key entry
      added to the buffer. It might happen, as it has been demonstrated by
      the bug test case, that there is enough remaining space in the buffer
      for the record, but not for the additional key entry for this record.
      In this case the key entry overwrites the end of the record that might
      cause a crash or wrong results.
      Fixed by taking into account a possible addition of new key entry when
      estimating the remaining free space in the buffer.
      c451ace9
  2. 18 Oct, 2010 3 commits
  3. 08 Oct, 2010 1 commit
  4. 07 Oct, 2010 1 commit
  5. 06 Oct, 2010 1 commit
  6. 04 Oct, 2010 1 commit
    • Igor Babaev's avatar
      Applied the fix for bug #54235 taken from one of the mysql trees. · eecf033d
      Igor Babaev authored
      The fix aligns join_null_complements() with join_matching_records()
      making both call generate_full_extensions().
      There should not be any difference between how the WHERE clause
      is applied to NULL-complemented records from a partial join and how
      it is applied to other partially joined records:the latter happens in
      join_matching_records(), precisely in generate_full_extensions().
      eecf033d
  7. 02 Oct, 2010 1 commit
  8. 01 Oct, 2010 3 commits
    • Igor Babaev's avatar
      Merge · 7be21334
      Igor Babaev authored
      7be21334
    • Igor Babaev's avatar
      Fixed bug #54539. · 415a9860
      Igor Babaev authored
      Added a possibility not to factor out the condition pushed to
      the access index out of the condition pushed to a joined table.
      This is useful for the condition pushed to the index when a hashed
      join buffer for BKA is employed. In this case the index condition
      may be false for some, but for all records with the same key.
      So the condition must be checked not only after index lookup,
      but after fetching row data as well, and it makes sense not to 
      factor out the condition from the condition checked after reading
      row data,
      The bug happened because the condition pushed to an index always
      was factor out from the condition pushed to the accessed table. 
      
      ******
      Fixed bug #54539.
      Added a possibility not to factor out the condition pushed to
      the access index out of the condition pushed to a joined table.
      This is useful for the condition pushed to the index when a hashed
      join buffer for BKA is employed. In this case the index condition
      may be false for some, but for all records with the same key.
      So the condition must be checked not only after index lookup,
      but after fetching row data as well, and it makes sense not to 
      factor out the condition from the condition checked after reading
      row data,
      The bug happened because the condition pushed to an index always
      was factor out from the condition pushed to the accessed table. 
      415a9860
    • Igor Babaev's avatar
      Fixed bug #54539. · d48bec7b
      Igor Babaev authored
      Added a possibility not to factor out the condition pushed to
      the access index out of the condition pushed to a joined table.
      This is useful for the condition pushed to the index when a hashed
      join buffer for BKA is employed. In this case the index condition
      may be false for some, but for all records with the same key.
      So the condition must be checked not only after index lookup,
      but after fetching row data as well, and it makes sense not to 
      factor out the condition from the condition checked after reading
      row data,
      The bug happened because the condition pushed to an index always
      was factor out from the condition pushed to the accessed table. 
      d48bec7b
  9. 28 Sep, 2010 1 commit
    • Igor Babaev's avatar
      Fixed bug #52636. · ad4271d0
      Igor Babaev authored
      Applied the fix for bug #47217 from the mysql-6.0 codebase.
      The patch adds not null predicates generated for the left parts
      of the equality predicates used for ref accesses. This is done
      for such predicates both in where conditions and on conditions.
      For the where conditions the not null predicates were generated
      but in 5.0/5.1 they actually never were used due to some lame
      merge from 4.1 to 5.0. The fix for bug #47217 made these 
      predicates to be used in the condition pushed to the tables.
      Yet only this patch generates not null predicates for equality
      predicated from on conditions of outer joins.
      This patch introduces a performance regression that can be
      observed on a test case from null_key.test. The regression
      will disappear after the fix for bug #57024 from mariadb-5.1
      is pulled into mariadb-5.3.
      The patch contains many changes in the outputs of the EXPLAIN 
      commands since generated not null predicates are considered as
      parts of the conditions pushed to join tables and may add
      'Usingwhere' in some rows of EXPLAINs where there used
      to be no such comments.
      ad4271d0
  10. 23 Sep, 2010 2 commits
  11. 22 Sep, 2010 1 commit
  12. 21 Sep, 2010 1 commit
    • Igor Babaev's avatar
      Fixed bug #52394 / LP bug #623209. · 3719c1dd
      Igor Babaev authored
      When an incremental join cache is used to join a table whose
      fields are not referenced anywhere in the query the association
      pointer to the last record in the such cache can be the same
      as the pointer to the end of the buffer. 
      The function JOIN_CACHE_BKA::get_next_key must take into 
      consideration this when iterating over the keys of the records
      from the join buffer. 
      The assertion in JOIN_TAB_SCAN_MRR::next also must take this
      into consideration.
      Borrowed a slightly changed test case from a patch attached to the
      bug #52394.
      3719c1dd
  13. 03 Sep, 2010 1 commit
  14. 02 Sep, 2010 2 commits
  15. 01 Sep, 2010 3 commits
  16. 31 Aug, 2010 2 commits
  17. 30 Aug, 2010 1 commit
    • unknown's avatar
      Fixed LP bug #608744 · 3b948d74
      unknown authored
      The bug is a result of the following change by Monty:
        Revision Id: monty@askmonty.org-20100716073301-gstby2062nqd42qv
        Timestamp: Fri 2010-07-16 10:33:01 +0300
      Where Monty changed the queues interface and implementation.
      
      The fix adjusts the queue_remove call to the new interface.
      
      
      mysql-test/r/subselect_partial_match.result:
        Added new file for tests related to MWL#89.
      mysql-test/t/subselect_partial_match.test:
        Added new file for tests related to MWL#89.
      3b948d74
  18. 09 Aug, 2010 2 commits
  19. 05 Aug, 2010 1 commit
  20. 30 Jul, 2010 1 commit
    • unknown's avatar
      Fix for luanchpad bug#609043 · 9ac35734
      unknown authored
      Removed indirect reference in equalities for cache index lookup.
      
      We should use a direct reference because some optimization of the
      query may optimize out a condition predicate and if the outer reference
      is the only element of the condition predicate the indirect reference
      becomes NULL.
      
      We can resolve correctly the indirect reference in
      Expression_cache_tmptable::make_equalities because it is called before
      optimization of the cached subquery.
      
      
      mysql-test/r/subquery_cache.result:
        The test suite for the bug added.
      mysql-test/t/subquery_cache.test:
        The test suite for the bug added.
      sql/sql_expression_cache.cc:
        Removed indirect reference in equalities for cache index lookup.
      9ac35734
  21. 29 Jul, 2010 1 commit
    • unknown's avatar
      Bugfix for lounchpad bug#608834 (608824, 609045, 609052). · f02c6f3f
      unknown authored
      Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).
      
      mysql-test/r/subquery_cache.result:
        Tests for bugs fixed.
      mysql-test/t/subquery_cache.test:
        Tests for bugs fixed.
      sql/item.cc:
        Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).
      sql/item.h:
        Added get_tmp_table_item() to cache wrapper as it has all not simple Items (Item_func, Item_field, Item_subquery).
      f02c6f3f
  22. 23 Jul, 2010 1 commit
    • unknown's avatar
      Removed dead code that was made obsolete by the introduction of · 234de549
      unknown authored
      check_join_cache_usage() by the change:
      
      Revno: 2793
      Revision Id: igor@askmonty.org-20091221022615-kx5ieiu0okmiupuc
      Timestamp: Sun 2009-12-20 18:26:15 -0800
      
      Backport into MariaDB-5.2 the following:
      WL#2771 "Block Nested Loop Join and Batched Key Access Join"
      234de549
  23. 16 Jul, 2010 5 commits
    • unknown's avatar
      Fixed a problem where the temp table of a materialized subquery · ce0b598a
      unknown authored
      was not cleaned up between PS re-executions. The reason was two-fold:
      - a merge with mysql-6.0 missed select_union::cleanup() that should
        have cleaned up the temp table, and
      - the subclass of select_union used by materialization didn't call
        the base class cleanup() method.
      ce0b598a
    • Sergey Petrunya's avatar
      Merge · 201e124d
      Sergey Petrunya authored
      201e124d
    • Sergey Petrunya's avatar
      Fix @@optimizer_switch support · aed88ae2
      Sergey Petrunya authored
      - Let "mysqld  --help --verbose" list all optimizer options
      - Make it possible to add new @@optimizer_switch flags w/o causing .result 
        changes all over the testsuite:
        = Remove "select @@optimizer_switch" from tests that do not need all switches
        = Move @@optimizer_switch-specific tests to t/optimizer_switch.test
      aed88ae2
    • Michael Widenius's avatar
      Merge with new queue code. · 6b161f65
      Michael Widenius authored
      Updated configure.in to have version 5.3
      
      configure.in:
        Updated to version 5.3.0
      6b161f65
    • Michael Widenius's avatar
      Improved speed of thr_alarm from O(N) to O(1). thr_alarm is used to handle... · 772afcc4
      Michael Widenius authored
      Improved speed of thr_alarm from O(N) to O(1). thr_alarm is used to handle timeouts and kill of connections.
      Fixed compiler warnings.
      queues.h and queues.c are now based on the UNIREG code and thus made BSD.
      Fix code to use new queue() interface. This mostly affects how you access elements in the queue.
      If USE_NET_CLEAR is not set, don't clear connection from unexpected characters. This should give a speed up when doing a lot of fast queries.
      Fixed some code in ma_ft_boolean_search.c that had not made it from myisam/ft_boolean_search.c
      
      
      include/queues.h:
        Use UNIREG code base (BSD)
        Changed init_queue() to take all initialization arguments.
        New interface to access elements in queue
      include/thr_alarm.h:
        Changed to use time_t instead of ulong (portability)
        Added index_in_queue, to be able to remove random element from queue in O(1)
      mysys/queues.c:
        Use UNIREG code base (BSD)
        init_queue() and reinit_queue() now takes more initialization arguments. (No need for init_queue_ex() anymore)
        Now one can tell queue_insert() to store in the element a pointer to where element is in queue. This allows one to remove elements from queue in O(1) instead of O(N)
      mysys/thr_alarm.c:
        Use new option in queue() to allow fast removal of elements.
        Do less inside LOCK_alarm mutex.
        This should give a major speed up of thr_alarm usage when there is many threads
      sql/create_options.cc:
        Fixed wrong printf
      sql/event_queue.cc:
        Use new queue interface()
      sql/filesort.cc:
        Use new queue interface()
      sql/ha_partition.cc:
        Use new queue interface()
      sql/ha_partition.h:
        Fixed compiler warning
      sql/item_cmpfunc.cc:
        Fixed compiler warning
      sql/item_subselect.cc:
        Use new queue interface()
        Removed not used variable
      sql/net_serv.cc:
        If USE_NET_CLEAR is not set, don't clear connection from unexpected characters.
        This should give a speed up when doing a lot of fast queries at the disadvantage that if there is a bug in the client protocol the connection will be dropped instead of being unnoticed.
      sql/opt_range.cc:
        Use new queue interface()
        Fixed compiler warnings
      sql/uniques.cc:
        Use new queue interface()
      storage/maria/ma_ft_boolean_search.c:
        Copy code from myisam/ft_boolean_search.c
        Use new queue interface()
      storage/maria/ma_ft_nlq_search.c:
        Use new queue interface()
      storage/maria/ma_sort.c:
        Use new queue interface()
      storage/maria/maria_pack.c:
        Use new queue interface()
        Use queue_fix() instead of own loop to fix queue.
      storage/myisam/ft_boolean_search.c:
        Use new queue interface()
      storage/myisam/ft_nlq_search.c:
        Use new queue interface()
      storage/myisam/mi_test_all.sh:
        Remove temporary file from last run
      storage/myisam/myisampack.c:
        Use new queue interface()
        Use queue_fix() instead of own loop to fix queue.
      storage/myisam/sort.c:
        Use new queue interface()
      storage/myisammrg/myrg_queue.c:
        Use new queue interface()
      storage/myisammrg/myrg_rnext.c:
        Use new queue interface()
      storage/myisammrg/myrg_rnext_same.c:
        Use new queue interface()
      storage/myisammrg/myrg_rprev.c:
        Use new queue interface()
      772afcc4
  24. 15 Jul, 2010 2 commits
  25. 10 Jul, 2010 1 commit
    • unknown's avatar
      Subquery cache (MWL#66) added. · ea1b32a3
      unknown authored
      
      libmysqld/Makefile.am:
        The new file added.
      mysql-test/r/index_merge_myisam.result:
        subquery_cache optimization option added.
      mysql-test/r/myisam_mrr.result:
        subquery_cache optimization option added.
      mysql-test/r/subquery_cache.result:
        The subquery cache tests added.
      mysql-test/r/subselect3.result:
        Subquery cache switched off to avoid changing read statistics.
      mysql-test/r/subselect3_jcl6.result:
        Subquery cache switched off to avoid changing read statistics.
      mysql-test/r/subselect_no_mat.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_no_opts.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_no_semijoin.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_sj.result:
        subquery_cache optimization option added.
      mysql-test/r/subselect_sj_jcl6.result:
        subquery_cache optimization option added.
      mysql-test/t/subquery_cache.test:
        The subquery cache tests added.
      mysql-test/t/subselect3.test:
        Subquery cache switched off to avoid changing read statistics.
      sql/CMakeLists.txt:
        The new file added.
      sql/Makefile.am:
        The new files added.
      sql/item.cc:
        Expression cache item (Item_cache_wrapper) added.
        Item_ref and Item_field fixed for correct usage of result field and fast resolwing in SP.
      sql/item.h:
        Expression cache item (Item_cache_wrapper) added.
        Item_ref and Item_field fixed for correct usage of result field and fast resolwing in SP.
      sql/item_cmpfunc.cc:
        Subquery cache added.
      sql/item_cmpfunc.h:
        Subquery cache added.
      sql/item_subselect.cc:
        Subquery cache added.
      sql/item_subselect.h:
        Subquery cache added.
      sql/item_sum.cc:
        Registration of subquery parameters added.
      sql/mysql_priv.h:
        subquery_cache optimization option added.
      sql/mysqld.cc:
        subquery_cache optimization option added.
      sql/opt_range.cc:
        Fix due to subquery cache.
      sql/opt_subselect.cc:
        Parameters of the function cahnged.
      sql/procedure.h:
        .h file guard added.
      sql/sql_base.cc:
        Registration of subquery parameters added.
      sql/sql_class.cc:
        Option to allow add indeces to temporary table.
      sql/sql_class.h:
        Item iterators added.
        Option to allow add indeces to temporary table.
      sql/sql_expression_cache.cc:
        Expression cache for caching subqueries added.
      sql/sql_expression_cache.h:
        Expression cache for caching subqueries added.
      sql/sql_lex.cc:
        Registration of subquery parameters added.
      sql/sql_lex.h:
        Registration of subqueries and subquery parameters added.
      sql/sql_select.cc:
        Subquery cache added.
      sql/sql_select.h:
        Subquery cache added.
      sql/sql_union.cc:
        A new parameter to the function added.
      sql/sql_update.cc:
        A new parameter to the function added.
      sql/table.cc:
        Procedures to manage temporarty tables index added.
      sql/table.h:
        Procedures to manage temporarty tables index added.
      storage/maria/ha_maria.cc:
        Fix of handler to allow destoy a table in case of error during the table creation.
      storage/maria/ha_maria.h:
        .h file guard added.
      storage/myisam/ha_myisam.cc:
        Fix of handler to allow destoy a table in case of error during the table creation.
      ea1b32a3