1. 14 Dec, 2011 1 commit
    • Sergey Petrunya's avatar
      BUG#901506: Crash in TABLE_LIST::print on EXPLAIN EXTENDED · 05e01274
      Sergey Petrunya authored
      - Let JTBM optimization code handle the case where the subquery is degenerate and doesn't have a 
        join query plan. Regular materialization would fall back to IN->EXISTS for such cases. Semi-Join
        materialization does not have such option, instead we introduce and use "constant JTBM join tabs".
      05e01274
  2. 08 Dec, 2011 2 commits
    • Alexey Botchkov's avatar
      bug #901655 ST_BUFFER asserts with a coplicated shape. · fc9d34ca
      Alexey Botchkov authored
              Coinciding nodes can appear as a result of DOUBLE inaccuracy.
              We should test that before we start the loop.
      
              Also the spatial relations can be calculated faster if we check
              MBR relations first. And we do have the shape's MBR-s now.
      
      per-file comments:
        sql/gcalc_slicescan.cc
              set_extent() method added.
      bug #901655 ST_BUFFER asserts with a coplicated shape.
        sql/gcalc_slicescan.h
              set_extent() method declared.
      bug #901655 ST_BUFFER asserts with a coplicated shape.
        sql/gcalc_tools.cc
      bug #901655 ST_BUFFER asserts with a coplicated shape.
              checks for equal nodes added.
        sql/item_geofunc.cc
      bug #901655 ST_BUFFER asserts with a coplicated shape.
              MBR for the shapes calculated, and MBR checks added before we
              start the heavy calculations.
        sql/spatial.h
      bug #901655 ST_BUFFER asserts with a coplicated shape.
              MBR::buffer() method implemented.
      fc9d34ca
    • Sergey Petrunya's avatar
      Small semi-join optimization improvement: · ae480437
      Sergey Petrunya authored
      - if we're considering FirstMatch access with one inner table, and 
        @@optimizer_switch has semijoin_with_cache flag, calculate costs
        as if we used join cache (because we will be able to do so)
      ae480437
  3. 07 Dec, 2011 4 commits
  4. 06 Dec, 2011 5 commits
  5. 05 Dec, 2011 3 commits
    • Sergey Petrunya's avatar
      Bug #899962: materialized subquery with join_cache_level=3 · 136408b1
      Sergey Petrunya authored
      - Make create_tmp_table() set KEY_PART_INFO attributes for the keys it creates.
        This wasn't needed before but is needed now, when temp. tables that are 
        results of SJ-Materialization are being used for joins.
        This particular bug depended on HA_VAR_LENGTH_PART being set,
        but also added code to set HA_BLOB_PART and HA_NULL_PART when appropriate.
      136408b1
    • Igor Babaev's avatar
      Fixed LP bug #899777. · 7d1f4126
      Igor Babaev authored
      KEYUSE elements for a possible hash join key are not sorted by field
      numbers of the second table T of the hash join operation. Besides
      some of these KEYUSE elements cannot be used to build any key as their
      key expressions depend on the tables that are planned to be accessed
      after the table T. 
      The code before the patch did not take this into account and, as a result,
      execition of a query the employing block-based hash join algorithm could
      cause a crash or return a wrong result set. 
      7d1f4126
    • Sergey Petrunya's avatar
      a85454de
  6. 04 Dec, 2011 2 commits
    • Sergey Petrunya's avatar
      Make subquery Materialization, as well as semi-join Materialization be shown · 255fd6c9
      Sergey Petrunya authored
      in EXPLAIN as select_type==MATERIALIZED. 
      
      Before, we had select_type==SUBQUERY and it was difficult to tell materialized
      subqueries from uncorrelated scalar-context subqueries.
      255fd6c9
    • Igor Babaev's avatar
      Fixed LP bug #899696. · b5a05df6
      Igor Babaev authored
      If has been decided that the first match strategy is to be used to join table T
      from a semi-join nest while no buffer can be employed to join this table
      then no join buffer can be used to join any table in the join sequence between
      the first one belonging to the semi-join nest and table T.
      
       
      b5a05df6
  7. 01 Dec, 2011 3 commits
  8. 30 Nov, 2011 2 commits
    • Igor Babaev's avatar
      Fixed LP bug #898073. · 2f973417
      Igor Babaev authored
      The tables from the same semi-join or outer join nest cannot use
      join buffers if in the join sequence of the query execution plan
      they are separated by a table that is planned to be joined without
      usage of a join buffer.
      
      2f973417
    • unknown's avatar
      Merge the fix of bug lp:825051 · 3a7f2879
      unknown authored
      3a7f2879
  9. 29 Nov, 2011 3 commits
  10. 28 Nov, 2011 3 commits
    • Alexey Botchkov's avatar
      bug 857066 Wrong result with ST_DISJOINT when using an index · 18d9f8d4
      Alexey Botchkov authored
              the ST_DISJOINT can't be properly optimized with the RTree key
              at the moment.
      
      per-file comments:
        storage/maria/ma_rt_index.c
      bug 857066 Wrong result with ST_DISJOINT when using an index
              disabled optimization for the DISJOINT case.
      18d9f8d4
    • unknown's avatar
      Fix bugs lp:833777, lp:894397 · 62e7ab3a
      unknown authored
      Analysis:
      lp:894397 was a consequence of a prior incorrect fix of lp:833777
      which didn't take into account that even when all tables are
      constant there may be correlated conditions, and the where clause
      is not equivalent to the constant conditions.
      
      Solution:
      When there are constant tables only, evaluate only the conditions
      that reference outer fields, because the constant conditions are
      already checked, and the where clause doesn't have other conditions
      than constant ones, and outer referencing ones. The fix for
      lp:894397 also fixes lp:833777.
      62e7ab3a
    • unknown's avatar
      Fixed LP BUG#747278 · 5412e82c
      unknown authored
      The problem was that when we have single row subquery with no rows
      Item_cache(es) which represent result row was not null and being
      requested via element_index() returned random value.
      
      The fix is setting all Item_cache(es) in NULL before executing the
      query (reset() method) which guaranty NULL value of whole query
      or its elements requested in any way if no rows was found.
      
      set_null() method was added to Item_cache to guaranty correct NULL
      value in case of reseting the cache.
      5412e82c
  11. 26 Nov, 2011 2 commits
  12. 25 Nov, 2011 8 commits
  13. 24 Nov, 2011 2 commits
    • unknown's avatar
    • unknown's avatar
      Fix bug lp:894326 · dc1b1d39
      unknown authored
      The patch also fixes an unrelated compiler warning.
      
      Analysis:
      The temporary table created during SJ-materialization
      might be used for sorting for a group by operation. The
      sort buffers for this internal temporary table were not
      cleared by the execution code after each subquery
      re-execution. This resulted in a memory leak detected
      by valgrind.
      
      Solution:
      Cleanup the sort buffers for the semijon tables as well.
      
      
      sql/item_subselect.cc:
        - Fix a compiler warning and add logic to revert to table
          scan partial match when there are more rows in the materialized
          subquery than there can be bits in the NULL bitmap index used
          for partial matching.
      sql/opt_subselect.cc:
        - Fixed a memory leak detected by valgrind
      dc1b1d39