1. 09 Mar, 2010 1 commit
    • unknown's avatar
      MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · 6a138b7f
      unknown authored
      * Implemented a second partial matching strategy via table scan.
        This strategy is a fallback when there is no memory for rowid merging.
      
      * Refactored the selection and creation of partial matching strategies,
        so that the choice of strategy is encapsulated in a separate method
        choose_partial_match_strategy().
      
      * Refactored the representation of partial match strategies so that:
        - each strategy is represented by a polymorphic class, and
        - the base class for all partial match strategies contains common
          execution code.
      
      * Added an estimate of the memory needed for the rowid merge strategy,
        and the system variable "rowid_merge_buff_size" to control the maximum
        memory to be used by the rowid merge algorithm.
      
      * Added two optimizer_switch system variables to control the choice of
        partial match strategy:
        "partial_match_rowid_merge", "partial_match_table_scan".
      
      * Fixed multiple problems with deallocation of resources by the partial
        match strategies.
      
      
      sql/mysql_priv.h:
        * Added two optimizer_switch system variables to control the choice of
          partial match strategy:
          "partial_match_rowid_merge", "partial_match_table_scan".
      sql/mysqld.cc:
        * Added two optimizer_switch system variables to control the choice of
          partial match strategy:
          "partial_match_rowid_merge", "partial_match_table_scan".
        * Added a system variable "rowid_merge_buff_size" to control the maximum
          memory to be used by the rowid merge algorithm.
      sql/set_var.cc:
        * Added a system variable "rowid_merge_buff_size" to control the maximum
          memory to be used by the rowid merge algorithm.
      sql/sql_class.h:
        * Added a system variable "rowid_merge_buff_size" to control the maximum
          memory to be used by the rowid merge algorithm.
      support-files/build-tags:
        Newer versions of BZR require the recursive flag in order to list all files.
      6a138b7f
  2. 22 Feb, 2010 2 commits
    • unknown's avatar
      MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs · 96cf9a66
      unknown authored
      This patch mainly adds sorting of all indexes for partial matching
      according to their NULL selectivity. The patch also fixes a related bug
      in subselect_rowid_merge_engine::test_null_row() where the wrong matched
      indexes were skipped.
      
      In addition the patch:
      - adds few ::print() methods,
      - renames few variables that had similar names but different purpose.
      96cf9a66
    • unknown's avatar
      Automerge with 5.3-subqueries · ac6b472c
      unknown authored
      ac6b472c
  3. 21 Feb, 2010 4 commits
  4. 20 Feb, 2010 1 commit
  5. 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
  6. 17 Feb, 2010 4 commits
  7. 15 Feb, 2010 1 commit
  8. 12 Feb, 2010 1 commit
  9. 11 Feb, 2010 7 commits
  10. 28 Jan, 2010 1 commit
  11. 18 Jan, 2010 1 commit
  12. 17 Jan, 2010 4 commits
  13. 01 Jan, 2010 1 commit
  14. 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
  15. 22 Dec, 2009 5 commits
  16. 21 Dec, 2009 2 commits
  17. 19 Dec, 2009 1 commit
  18. 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
  19. 15 Dec, 2009 1 commit