1. 25 May, 2010 1 commit
    • Sergey Petrunya's avatar
      MWL#90: Subqueries: Inside-out execution for non-semijoin materialized... · 69ce61f6
      Sergey Petrunya authored
      MWL#90: Subqueries: Inside-out execution for non-semijoin materialized subqueries that are AND-parts of the WHERE
      - Code cleanu.
      - Make MWL#90 code require @@optimizer_switch='semijoin=on'
      - Update test results with the above
      - Fork subselect_mat.test - we want to check both semi-join materialization, 
        which now has broader scope and non-semijoin materialization.
      69ce61f6
  2. 24 May, 2010 2 commits
  3. 23 May, 2010 1 commit
  4. 11 May, 2010 1 commit
  5. 10 May, 2010 1 commit
    • Sergey Petrunya's avatar
      Subquery optimizations: · d46a8854
      Sergey Petrunya authored
      - Better comments
      - Use more appropriate return types for functions
      - Provide handling where it was missing.
      d46a8854
  6. 03 May, 2010 1 commit
  7. 25 Apr, 2010 1 commit
  8. 06 Apr, 2010 6 commits
  9. 05 Apr, 2010 2 commits
  10. 02 Apr, 2010 1 commit
  11. 29 Mar, 2010 2 commits
  12. 23 Mar, 2010 1 commit
  13. 21 Mar, 2010 2 commits
  14. 20 Mar, 2010 3 commits
  15. 15 Mar, 2010 6 commits
    • unknown's avatar
      MWL#68: Subquery optimization: Efficient NOT IN execution with NULLs · e4b5fdf4
      unknown authored
      Fix for the PBXT copy of subselect.test.
      e4b5fdf4
    • unknown's avatar
    • Sergei Golubchik's avatar
      merged · 61522b17
      Sergei Golubchik authored
      61522b17
    • Sergey Petrunya's avatar
      Merge · dc904cf1
      Sergey Petrunya authored
      dc904cf1
    • Sergey Petrunya's avatar
      Apply fix by Roy Lyseng: · 0c1ef577
      Sergey Petrunya authored
      Bug#48623: Multiple subqueries are optimized incorrectly
            
      The function setup_semijoin_dups_elimination() has a major loop that
      goes through every table in the JOIN object. Usually, there is a normal
      "plus one" increment in the for loop that implements this, but each semijoin
      nest is treated as one entity and there is another increment that skips past
      the semijoin nest to the next table in the JOIN object. However, when
      combining these two increments, the next joined table is skipped, and if that
      happens to be the start of another semijoin nest, the correct processing
      for that nest will not be carried out.
      
      mysql-test/r/subselect_sj.result:
        Added test results for bug#48623
      mysql-test/r/subselect_sj_jcl6.result:
        Added test results for bug#48623
      mysql-test/t/subselect_sj.test:
        Added test case for bug#48623
      sql/opt_subselect.cc:
        Omitted the "plus one" increment in the for loop, added "plus one"
        in the remaining switch case, fixed coding style issue in remaining
        increment operations.
      0c1ef577
    • Sergey Petrunya's avatar
      61b6db27
  16. 14 Mar, 2010 3 commits
  17. 13 Mar, 2010 2 commits
    • Sergey Petrunya's avatar
      Apply fix by oystein.grovlen@sun.com 2010-03-12: · b9ba7c5c
      Sergey Petrunya authored
      Bug#48213 Materialized subselect crashes if using GEOMETRY type
      
      The problem occurred because during semi-join a materialized table
      was created which contained a GEOMETRY column, which is a specialized
      BLOB column.  This caused an segmentation fault because such tables will
      have extra columns, and the semi-join code was not prepared for that.
      
      The solution is to disable materialization when Blob/Geometry columns would 
      need to be materialized.  Blob columns cannot be used for index look-up 
      anyway, so it does not makes sense to use materialization.
      
      This fix implies that it is detected earlier that subquery materialization
      can not be used.  The result of that is that in->exist optimization may
      be performed for such queries.  Hence, extended query plans for such
      queries had to be updated.
      
      mysql-test/r/subselect_mat.result:
        Update extended query plan for subqueries that cannot use materialization
        due to Blobs.
      mysql-test/r/subselect_sj.result:
        Updated result file.
      mysql-test/r/subselect_sj_jcl6.result:
        Update result file.
      mysql-test/t/subselect_sj.test:
        Add test case for Bug#48213 that verifies that semi-join works when subquery select list contain Blob columns.  Also verify that materialization is not
        used.
      sql/opt_subselect.cc:
        Disable materialization for semi-join/subqueries when the subquery select list
        contain Blob columns.
      b9ba7c5c
    • Sergey Petrunya's avatar
      BUG#45174: XOR in subqueries produces differing results in 5.1 and 5.4 · 895f6e95
      Sergey Petrunya authored
      BUG#50019: Wrong result for IN-subquery with materialization
      - Fix equality substitution in presense of semi-join materialization, lookup and scan variants
        (started off from fix by Evgen Potemkin, then modified it to work in all cases)
      895f6e95
  18. 12 Mar, 2010 2 commits
  19. 11 Mar, 2010 1 commit
    • unknown's avatar
      MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · be4b955f
      unknown authored
      This patch does three things:
      - It adds the possibility to force the execution of top-level [NOT] IN
        subquery predicates via the IN=>EXISTS transformation. This is done by
        setting both optimizer switches partial_match_rowid_merge and
        partial_match_table_scan to "off".
      - It adjusts all test cases where the complete optimizer_switch is
        selected because now we have two more switches.
      - For those test cases where the plan changes because of the new available
        strategies, we switch off both partial match strategies in order to
        force the "old" IN=>EXISTS strategy. This is done because most of these
        test cases specifically test bugs in this strategy.
      
      sql/opt_subselect.cc:
        Adds the possibility to force the execution of top-level [NOT] IN
        subquery predicates via the IN=>EXISTS transformation. This is done by
        setting both optimizer switches partial_match_rowid_merge and
        partial_match_table_scan to "off".
      be4b955f
  20. 10 Mar, 2010 1 commit