Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------------------------
- revno: 2779 [merge]
- committer: Sergey Petrunya <psergey@askmonty.org>
- branch nick: maria-5.3-subqueries-r7
- timestamp: Mon 2010-03-15 18:09:35 +0300
- message:
- Merge in MWL#68: Subquery optimization: Efficient NOT IN execution with NULLs
- ------------------------------------------------------------
- revno: 2761.1.7 [merge]
- committer: Timour Katchaounov <timour@sun.com>
- branch nick: 5.3-mwl68-merge
- timestamp: Mon 2010-03-15 16:34:56 +0200
- message:
- MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
- Automerge with 5.3-subqueries
- ------------------------------------------------------------
- revno: 2761.1.6
- committer: timour@askmonty.org
- branch nick: 5.3-mwl68
- timestamp: Thu 2010-03-11 23:43:31 +0200
- message:
- MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
- 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.
- ------------------------------------------------------------
- revno: 2761.1.5 [merge]
- committer: timour@askmonty.org
- branch nick: 5.3-mwl68-merge.base-mwl68
- timestamp: Tue 2010-03-09 12:36:15 +0200
- message:
- MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
- Automerge with 5.3-subqueries
- ------------------------------------------------------------
- revno: 2761.1.4
- committer: timour@askmonty.org
- branch nick: 5.3-mwl68
- timestamp: Tue 2010-03-09 12:14:06 +0200
- message:
- MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
- * 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.
- ------------------------------------------------------------
- revno: 2761.1.3
- committer: timour@askmonty.org
- branch nick: 5.3-mwl68-unmerged
- timestamp: Mon 2010-02-22 17:16:55 +0200
- message:
- MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
- 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.
- ------------------------------------------------------------
- revno: 2761.1.2 [merge]
- committer: timour@askmonty.org
- branch nick: 5.3-mwl68-unmerged
- timestamp: Mon 2010-02-22 15:57:09 +0200
- message:
- Automerge with 5.3-subqueries
- ------------------------------------------------------------
- revno: 2761.1.1
- committer: timour@askmonty.org
- branch nick: 5.3-mwl68
- timestamp: Fri 2010-02-19 23:55:57 +0200
- message:
- MWL#68 Subquery optimization: Efficient NOT IN execution with NULLs
- 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.
- ------------------------------------------------------------
- revno: 2778 [merge]
- committer: Sergey Petrunya <psergey@askmonty.org>
- branch nick: maria-5.3-subqueries-r7-rel
- timestamp: Mon 2010-03-15 09:35:35 +0300
- message:
- Merge
- ------------------------------------------------------------
- revno: 2776.1.1
- committer: Sergey Petrunya <psergey@askmonty.org>
- branch nick: maria-5.3-subqueries-r7
- timestamp: Mon 2010-03-15 09:06:59 +0300
- message:
- Update test results for the previous push
- ------------------------------------------------------------
- revno: 2777
- committer: Sergey Petrunya <psergey@askmonty.org>
- branch nick: maria-5.3-subqueries-r7-rel
- timestamp: Mon 2010-03-15 09:32:54 +0300
- message:
- Apply fix by Roy Lyseng:
- 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.
- ------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement