- 09 Mar, 2010 1 commit
-
-
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.
-
- 22 Feb, 2010 2 commits
-
-
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.
-
unknown authored
-
- 21 Feb, 2010 4 commits
-
-
Sergey Petrunya authored
for table elimination in debug builds. (part 2)
-
Sergey Petrunya authored
for table elimination in debug builds.
-
Sergey Petrunya authored
In Item_ref::fix_fields() do invoke mark_as_dependent() for outside references in all cases (see email for more details) sql/item.cc: In Item_ref::fix_fields() do invoke mark_as_dependent() for outside references in all cases. sql/item.h: Change Field_enumerator to enumerate Item_field-s not Field-s. sql/item_subselect.cc: Change Field_enumerator to enumerate Item_field-s not Field-s. sql/opt_table_elimination.cc: Change Field_enumerator to enumerate Item_field-s not Field-s.
-
Sergey Petrunya authored
Don't go into branch that calls upper_refs.empty() more than once per PREPARE or EXECUTE * Avoid crashing when processing references to outside from subquery's HAVING (will explain in more details in email) sql/item.h: * Avoid crashing when processing references to outside from subquery's HAVING (will explain in more details in email) sql/item_subselect.cc: * Better self-recursion protection in Item_subselect::fix_fields. Don't go into branch that calls upper_refs.empty() more than once per PREPARE or EXECUTE
-
- 20 Feb, 2010 1 commit
-
-
Sergey Petrunya authored
prepared statements: re-collect list of upper refs on every PS re-execution.
-
- 19 Feb, 2010 1 commit
-
-
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.
-
- 17 Feb, 2010 4 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- More test results updates (checked)
-
Sergey Petrunya authored
- Update test results - More comments - Add Item_in_optimizer::transform() which was lost in backport
-
- 15 Feb, 2010 1 commit
-
-
Sergey Petrunya authored
- Factor out subquery code into sql/opt_subselect.{h,cc} - Stop using the term "confluent" (was used due to misreading the dictionary)
-
- 12 Feb, 2010 1 commit
-
-
Sergey Petrunya authored
-
- 11 Feb, 2010 7 commits
-
-
Sergey Petrunya authored
- Variant #3 of the fix. It also = Unifies code with table elimination's = is able to handle FROM-subquery pullout.
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Fix valgrind failure: do initialize Item::is_expensive_cache.
-
Sergey Petrunya authored
-
Sergey Petrunya authored
XOR conditions are not optimized, and Item_cond_xor therefore acts like type Func_item even though it inherits from Item_cond. A subtle difference between Item_func and Item_cond is that you can get the children Items from the former by calling arguments(), and from the latter by calling argument_list(). However, since Item_cond_xor inherits from Item_cond, arguments() did not return any Items. The fact that Item_cond_xor::arguments() did not return it's children items lead to a problem for make_cond_for_index(); the method accepted that XOR items on unindexed columns were pushed using ICP. ICP evaluation of non-indexed columns does not (and should not) work. The fix for this bug is to make Item_cond_xor return it's children items when the arguments() method is used. This makes Item_cond_xor behave more like Item_func and in turn allows make_cond_for_index() to discover any conflicting children Items. This is a temporary fix and should be removed when Item_cond_xor is optimized.
-
Sergey Petrunya authored
-
Sergey Petrunya authored
process temporary table overflow correctly.
-
- 28 Jan, 2010 1 commit
-
-
Sergey Petrunya authored
- Backport into Maria DB 5.3, part 1
-
- 18 Jan, 2010 1 commit
-
-
Sergey Petrunya authored
- Enable semi-join handling in the join cache code
-
- 17 Jan, 2010 4 commits
-
-
Sergey Petrunya authored
- Fix valgrind failure - Test result fixes (not finished)
-
Sergey Petrunya authored
-
Sergey Petrunya authored
-
Sergey Petrunya authored
There are still test failures because of: - Wrong query results in outer join + semi join - EXPLAIN output differences
-
- 01 Jan, 2010 1 commit
-
-
Sergey Petrunya authored
-
- 27 Dec, 2009 1 commit
-
-
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.
-
- 22 Dec, 2009 5 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
-
Sergey Petrunya authored
- Add opt_range_mrr.cc file into source repo mysql-test/r/myisam_mrr.result: Make testcase work for both debug and release mysql-test/t/myisam_mrr.test: Make testcase work for both debug and release sql/Makefile.am: - Add opt_range_mrr.cc file into source repo
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Make index condition pushdown be controlled by an @@optimizer_switch flag, not by @@engine_condition_pushdown - Make MRR buffer size be controlled by @@mrr_buffer_size, not by @@read_rnd_buffer_size - Move parts of code to separate files - Code cleanup - Add --sorted_result to some SELECTs in tests.
-
- 21 Dec, 2009 2 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
WL#2771 "Block Nested Loop Join and Batched Key Access Join"
-
- 19 Dec, 2009 1 commit
-
-
Sergey Petrunya authored
-
- 16 Dec, 2009 1 commit
-
-
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.
-
- 15 Dec, 2009 1 commit
-
-
Sergey Petrunya authored
-