1. 24 Dec, 2011 1 commit
    • Igor Babaev's avatar
      Back-ported the patch of the mysql-5.6 code line that · 2b1f0b87
      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.
      2b1f0b87
  2. 20 Dec, 2011 2 commits
  3. 19 Dec, 2011 6 commits
    • unknown's avatar
      Backport of WL#5953 from MySQL 5.6 · 072073c0
      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()
      072073c0
    • Sergey Petrunya's avatar
      BUG#906385: EXPLAIN EXTENDED crashes in TABLE_LIST::print with limited max_join_size · 15ea7238
      Sergey Petrunya authored
      - Take into account that subquery's optimization can fail because of @@max_join_size error.
      15ea7238
    • Sergey Petrunya's avatar
      BUG#904432: Wrong result with LEFT JOIN, constant table, semijoin=ON,materialization=ON · be3e5298
      Sergey Petrunya authored
      - Correct handling for SJ-Materialization + outer joins (details in the comments in the code)
      be3e5298
    • Sergey Petrunya's avatar
      Remove garbage comments · 263ee553
      Sergey Petrunya authored
      263ee553
    • unknown's avatar
    • Igor Babaev's avatar
      Fixed LP bug #904832. · 7a1406f2
      Igor Babaev authored
      Do not perform index condition pushdown for conditions containing subqueries
      and stored functions.
      7a1406f2
  4. 18 Dec, 2011 1 commit
  5. 16 Dec, 2011 3 commits
    • Igor Babaev's avatar
      Adjusted test cases of the suite funcs_1. · 68dad677
      Igor Babaev authored
      68dad677
    • Sergey Petrunya's avatar
      Update test results for previous push · a4073c19
      Sergey Petrunya authored
      a4073c19
    • Alexey Botchkov's avatar
      GIS issues fixed. · 56125a3b
      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.
      56125a3b
  6. 15 Dec, 2011 9 commits
  7. 14 Dec, 2011 5 commits
  8. 13 Dec, 2011 9 commits
    • Igor Babaev's avatar
      Merge · 7229af30
      Igor Babaev authored
      7229af30
    • Igor Babaev's avatar
      Fixed LP bug #902356. · d274e32c
      Igor Babaev authored
      A memory overwrite in the function test_if_skip_sort_order()
      could cause a crash for some queries with subqueries.
      d274e32c
    • Sergey Petrunya's avatar
      BUG#902632: Crash or invalid read at st_join_table::cleanup, st_table::disable_keyread · 190aa085
      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.
      190aa085
    • unknown's avatar
    • Michael Widenius's avatar
      Merge with 5.1 · 1a985a17
      Michael Widenius authored
      Updated version number in configure
      1a985a17
    • Michael Widenius's avatar
      Fixed failure with query_cache.test for embedded server · 43c8a6ac
      Michael Widenius authored
      sql/set_var.cc:
        Moved query_cache_strip_comments from EMBEDDED_LIBRARY to HAVE_QUERY_CACHE
      43c8a6ac
    • Michael Widenius's avatar
      Fixed bug: lp:887051 ; Error in recovery with LOAD DATA + DELETE · 33c26f78
      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
      33c26f78
    • Michael Widenius's avatar
      Automatic merge · 76d852d4
      Michael Widenius authored
      76d852d4
    • Michael Widenius's avatar
      Fixed valgrind error when storing db_name_length in query_cache. · b653115c
      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.
      b653115c
  9. 12 Dec, 2011 4 commits