1. 24 Dec, 2011 1 commit
    • Igor Babaev's avatar
      Back-ported the patch of the mysql-5.6 code line that · 1333c9b2
      Igor Babaev authored
      fixed several defects in the greedy optimization:
      
      1) The greedy optimizer calculated the 'compare-cost' (CPU-cost)
         for iterating over the partial plan result at each level in
         the query plan as 'record_count / (double) TIME_FOR_COMPARE'
      
         This cost was only used locally for 'best' calculation at each
         level, and *not* accumulated into the total cost for the query plan.
      
         This fix added the 'CPU-cost' of processing 'current_record_count'
         records at each level to 'current_read_time' *before* it is used as
         'accumulated cost' argument to recursive 
         best_extension_by_limited_search() calls. This ensured that the
         cost of a huge join-fanout early in the QEP was correctly
         reflected in the cost of the final QEP.
      
         To get identical cost for a 'best' optimized query and a
         straight_join with the same join order, the same change was also
         applied to optimize_straight_join() and get_partial_join_cost()
      
      2) Furthermore to get equal cost for 'best' optimized query and a
         straight_join the new code substrcated the same '0.001' in
         optimize_straight_join() as it had been already done in
         best_extension_by_limited_search()
      
      3) When best_extension_by_limited_search() aggregated the 'best' plan a
         plan was 'best' by the check :
      
         'if ((search_depth == 1) || (current_read_time < join->best_read))'
      
         The term '(search_depth == 1' incorrectly caused a new best plan to be
         collected whenever the specified 'search_depth' was reached - even if
         this partial query plan was more expensive than what we had already
         found.
      1333c9b2
  2. 20 Dec, 2011 2 commits
  3. 19 Dec, 2011 6 commits
    • unknown's avatar
      Backport of WL#5953 from MySQL 5.6 · 4880bfa0
      unknown authored
      The patch differs from the original MySQL patch as follows:
      - All test case differences have been reviewed one by one, and
        care has been taken to restore the original plan so that each
        test case executes the code path it was designed for.
      - A bug was found and fixed in MariaDB 5.3 in
        Item_allany_subselect::cleanup().
      - ORDER BY is not removed because we are unsure of all effects,
        and it would prevent enabling ORDER BY ... LIMIT subqueries.
      - ref_pointer_array.m_size is not adjusted because we don't do
        array bounds checking, and because it looks risky.
      
      Original comment by Jorgen Loland:
      -------------------------------------------------------------
      WL#5953 - Optimize away useless subquery clauses
            
      For IN/ALL/ANY/SOME/EXISTS subqueries, the following clauses are 
      meaningless:
            
      * ORDER BY (since we don't support LIMIT in these subqueries)
      * DISTINCT
      * GROUP BY if there is no HAVING clause and no aggregate 
        functions
            
      This WL detects and optimizes away these useless parts of the
      query during JOIN::prepare()
      4880bfa0
    • Sergey Petrunya's avatar
      BUG#906385: EXPLAIN EXTENDED crashes in TABLE_LIST::print with limited max_join_size · c85a43ed
      Sergey Petrunya authored
      - Take into account that subquery's optimization can fail because of @@max_join_size error.
      c85a43ed
    • Sergey Petrunya's avatar
      BUG#904432: Wrong result with LEFT JOIN, constant table, semijoin=ON,materialization=ON · eb4ba54b
      Sergey Petrunya authored
      - Correct handling for SJ-Materialization + outer joins (details in the comments in the code)
      eb4ba54b
    • Sergey Petrunya's avatar
      Remove garbage comments · d4817dac
      Sergey Petrunya authored
      d4817dac
    • unknown's avatar
    • Igor Babaev's avatar
      Fixed LP bug #904832. · cef05202
      Igor Babaev authored
      Do not perform index condition pushdown for conditions containing subqueries
      and stored functions.
      cef05202
  4. 18 Dec, 2011 1 commit
  5. 16 Dec, 2011 3 commits
    • Igor Babaev's avatar
      Adjusted test cases of the suite funcs_1. · e846b1a6
      Igor Babaev authored
      e846b1a6
    • Sergey Petrunya's avatar
      Update test results for previous push · b6fabd0f
      Sergey Petrunya authored
      b6fabd0f
    • Alexey Botchkov's avatar
      GIS issues fixed. · 1c9f5ec4
      Alexey Botchkov authored
      Failures on SUN Solaris. Buggy compiler there required some extra initialization
      for variables. Then the 02 optimization leads to bugs when values set through the
      pointer are not always taken into account. Finally, the (long long) / (long)
      crashes there, the explicit typeconverstion added.
      Failing innodb_plunin.innodb_gis.test fixed.
      
      per-file comments:
        mysql-test/suite/innodb_plugin/t/innodb_gis.test
      GIS issues fixed.
        sql/gcalc_slicescan.cc
      GIS issues fixed.
        sql/gcalc_tools.cc
      GIS issues fixed.
      1c9f5ec4
  6. 15 Dec, 2011 9 commits
  7. 14 Dec, 2011 5 commits
  8. 13 Dec, 2011 9 commits
    • Igor Babaev's avatar
      Merge · 5e4ae8f4
      Igor Babaev authored
      5e4ae8f4
    • Igor Babaev's avatar
      Fixed LP bug #902356. · 9825e13f
      Igor Babaev authored
      A memory overwrite in the function test_if_skip_sort_order()
      could cause a crash for some queries with subqueries.
      9825e13f
    • Sergey Petrunya's avatar
      BUG#902632: Crash or invalid read at st_join_table::cleanup, st_table::disable_keyread · 4223d882
      Sergey Petrunya authored
      - Do a "more thorough" cleanup of SJ-Materialization join tab in JOIN_TAB::cleanup. The bug
        was due to the fact that JOIN_TAB::cleanup() may be called multiple times for the same tab
        if the join has grouping.
      4223d882
    • unknown's avatar
    • Michael Widenius's avatar
      Merge with 5.1 · 0bb7d6e8
      Michael Widenius authored
      Updated version number in configure
      0bb7d6e8
    • Michael Widenius's avatar
      Fixed failure with query_cache.test for embedded server · 933a4ece
      Michael Widenius authored
      sql/set_var.cc:
        Moved query_cache_strip_comments from EMBEDDED_LIBRARY to HAVE_QUERY_CACHE
      933a4ece
    • Michael Widenius's avatar
      Fixed bug: lp:887051 ; Error in recovery with LOAD DATA + DELETE · b7de2b31
      Michael Widenius authored
      mysql-test/suite/maria/r/maria-recovery3.result:
        Added test case for recovery bug
      mysql-test/suite/maria/t/maria-recovery3.test:
        Added test case for recovery bug
      storage/maria/ha_maria.cc:
        Don't print query twice to log
      storage/maria/ma_delete.c:
        More DBUG_PRINT
      storage/maria/ma_key_recover.c:
        Added new asserts to detect errors earlier
      storage/maria/ma_recovery.c:
        Update all states when moving a non-transactional file to transactional. This fixes lp:887051
      b7de2b31
    • Michael Widenius's avatar
      Automatic merge · b4f27b3d
      Michael Widenius authored
      b4f27b3d
    • Michael Widenius's avatar
      Fixed valgrind error when storing db_name_length in query_cache. · b22f3fd2
      Michael Widenius authored
      - Changed storage to be 2 bytes instead of sizeof(size_t) (simple optimization)
      - Fixed bug when using query_cache_strip_comments and query that started with '('
      - Fixed DBUG_PRINT() that used wrong (not initialized) variables.
      
      
      mysql-test/mysql-test-run.pl:
        Added some space to make output more readable.
      mysql-test/r/query_cache.result:
        Updated test results
      mysql-test/t/query_cache.test:
        Added test with query_cache_strip_comments
      sql/mysql_priv.h:
        Added QUERY_CACHE_DB_LENGTH_SIZE
      sql/sql_cache.cc:
        Fixed bug when using query_cache_strip_comments and query that started with '('
        Store db length in 2 characters instead of size_t.
        Get db length from correct position (earlier we had an error when query started with ' ')
        Fixed DBUG_PRINT() that used wrong (not initialized) variables.
      b22f3fd2
  9. 12 Dec, 2011 4 commits