1. 19 Feb, 2010 1 commit
    • unknown's avatar
      MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · a292ca34
      unknown authored
      This patch implements correct NULL semantics for materialized subquery execution.
      The implementation has the following properties and main limitations:
      - It passes all query result tests, but fails a number of EXPLAIN tests because of
        changed plans.
      - The EXPLAIN output for partial matching is not decided yet.
      - It works only when all necessary indexes fit into main memory. Notice that these
        are not the general B-tree/Hash indexes, but instead much more compact ones,
        therefore this limitation may not be a problem in many practical cases.
      - It doesn't contain specialized tests.
      - In several places the implementation uses methods that are modified copies of
        other similar methods. These cases need to be refactored to avoid code duplication.
      - Add a test if the predicate is top-level just before deciding on partial matching.
        If it is top-level, use a more efficient exec method (index lookup).
      - Add sorting of indexes according to their selectivity. The code is almost there.
      - Needs more comments, and to sync existing ones with the implementation.
      
      sql/item_cmpfunc.h:
        Expose the Arg_comparator of a comparison predicate. This makes it possible to
        directly get the comparison result {-1,0,1}, which is not possible through the
        val_XXX() methods which "fold" such results into a boolean.
      sql/item_subselect.cc:
        The core of the implementation of MWL#68.
      sql/item_subselect.h:
        The core of the implementation of MWL#68.
      sql/opt_subselect.cc:
        Removed the limitation for materialized subquery execution that it is applicable only
        for top-level predicates.
      sql/sql_class.cc:
        New class select_materialize_with_stats that collects data statistics about
        the data being inserted into the target table.
      sql/sql_class.h:
        New class select_materialize_with_stats that collects data statistics about
        the data being inserted into the target table.
      sql/sql_select.cc:
        - more complete initialization of the TABLE object of a temp table.
        - call setup_subquery_materialization at one more exit point.
      a292ca34
  2. 17 Feb, 2010 3 commits
  3. 15 Feb, 2010 1 commit
  4. 12 Feb, 2010 1 commit
  5. 11 Feb, 2010 7 commits
  6. 28 Jan, 2010 1 commit
  7. 18 Jan, 2010 1 commit
  8. 17 Jan, 2010 4 commits
  9. 01 Jan, 2010 1 commit
  10. 27 Dec, 2009 1 commit
    • Sergey Petrunya's avatar
      DS-MRR backport: fix buildbot valgrind failures: · 171cc47b
      Sergey Petrunya authored
      - Do call update_used_tables() for new conditions obtained when adding
        outer join's triggered conditions. Correct values of used_tables() are
        now needed for condition pushdown.
      - Update test results
      
      mysql-test/suite/pbxt/r/join_outer.result:
        DS-MRR backport:
        - Update test results
      sql/sql_select.cc:
        DS-MRR backport: fix buildbot valgrind failures:
        - Do call update_used_tables() for new conditions obtained when adding
          outer join's triggered conditions. Correct values of used_tables() are
          now needed for condition pushdown.
      171cc47b
  11. 22 Dec, 2009 5 commits
  12. 21 Dec, 2009 2 commits
  13. 19 Dec, 2009 1 commit
  14. 16 Dec, 2009 1 commit
    • Sergey Petrunya's avatar
      DS-MRR backport: · fcd27d52
      Sergey Petrunya authored
      - Fix PBXT test results (PBXT doesn't support MRR or ICP, but we get result 
        diffs because we've also backported a fix that
        - prints out "Using where" when the table has part of WHERE that it has 
          got from LEFT JOIN's ON expression
        - Does a better job at removing equalities that are guaranteed to be true 
          by use of ref acccess.
      fcd27d52
  15. 15 Dec, 2009 5 commits
    • Sergey Petrunya's avatar
      Add ds_mrr.cc to CMakeLists.txt · 43363ab0
      Sergey Petrunya authored
      43363ab0
    • Sergey Petrunya's avatar
      Fix compile failure · 449f98cc
      Sergey Petrunya authored
      449f98cc
    • Sergey Petrunya's avatar
      Backport into MariaDB-5.2 the following: · d5e46ce3
      Sergey Petrunya authored
      WL#2474 "Multi Range Read: Change the default MRR implementation to implement new MRR interface"
      WL#2475 "Batched range read functions for MyISAM/InnoDb"
              "Index condition pushdown for MyISAM/InnoDB"
      - Adjust test results (checked)
      - Code cleanup.
      d5e46ce3
    • Sergey Petrunya's avatar
      Backport into MariaDB-5.2 the following: · d06aba58
      Sergey Petrunya authored
      WL#2474 "Multi Range Read: Change the default MRR implementation to implement new MRR interface"
      WL#2475 "Batched range read functions for MyISAM/InnoDb"
              "Index condition pushdown for MyISAM/InnoDB"
      - Fix valgrind failures
      d06aba58
    • Sergey Petrunya's avatar
      Backport into MariaDB-5.2 the following: · 3bb037aa
      Sergey Petrunya authored
      WL#2474 "Multi Range Read: Change the default MRR implementation to implement new MRR interface"
      WL#2475 "Batched range read functions for MyISAM/InnoDb"
              "Index condition pushdown for MyISAM/InnoDB"
      Igor's fix from sp1r-igor@olga.mysql.com-20080330055902-07614:
        There could be observed the following problems:
        1. EXPLAIN did not mention pushdown conditions from on expressions in the 
        'extra' column.  As a result if a query had no where conditions pushed 
        down to a table, but had on conditions pushed to this table the 'extra' 
        column in the EXPLAIN for the table missed 'using where'.
        2. Conditions for ref access were not eliminated from on expressions 
        though such conditions were eliminated from the where condition.
      3bb037aa
  16. 12 Nov, 2009 1 commit
  17. 10 Nov, 2009 1 commit
  18. 07 Nov, 2009 1 commit
  19. 06 Nov, 2009 2 commits