1. 19 Feb, 2010 1 commit
    • unknown's avatar
      MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · 5515bcba
      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.
      5515bcba
  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: · 1a490f2d
      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.
      1a490f2d
  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: · 3cc3938b
      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.
      3cc3938b
  15. 15 Dec, 2009 5 commits
    • Sergey Petrunya's avatar
      Add ds_mrr.cc to CMakeLists.txt · 663dadc8
      Sergey Petrunya authored
      663dadc8
    • Sergey Petrunya's avatar
      Fix compile failure · 7469484b
      Sergey Petrunya authored
      7469484b
    • Sergey Petrunya's avatar
      Backport into MariaDB-5.2 the following: · 59b64720
      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.
      59b64720
    • Sergey Petrunya's avatar
      Backport into MariaDB-5.2 the following: · 2a496c4d
      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
      2a496c4d
    • Sergey Petrunya's avatar
      Backport into MariaDB-5.2 the following: · 96e092dc
      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.
      96e092dc
  16. 12 Nov, 2009 1 commit
  17. 10 Nov, 2009 1 commit
  18. 07 Nov, 2009 1 commit
  19. 06 Nov, 2009 2 commits