- 14 Mar, 2010 1 commit
-
-
Sergey Petrunya authored
Fix two problems: 1. Let optimize_semijoin_nests() reset sj_nest->sjmat_info irrespectively of value of optimizer_flag. We need this in case somebody has turned optimization off between reexecutions of the same statement. 2. Do not pull out constant tables out of semi-join nests. The problem is that pullout operation is not undoable, and if a table is constant because it is 1/0-row table it may cease to be constant on the next execution. Note that tables that are constant because of possible eq_ref(const) access will still be pulled out as they are considered functionally-dependent.
-
- 07 Mar, 2010 1 commit
-
-
Sergey Petrunya authored
- The problem was that DuplicateWeedout strategy setup code wasn't aware of the fact that join buffering will be used and applied optimization that doesn't work together with join buffering. Fixed by making DuplicateWeedout setup code to have a pessimistic check about whether there is a chance that join buffering will be used. - Make JOIN_CACHE_BKA::init() correctly process Copy_field elements that denote saving current rowids in the join buffer. mysql-test/r/subselect_sj2.result: Update test results mysql-test/r/subselect_sj2_jcl6.result: Update test results mysql-test/r/subselect_sj_jcl6.result: Testcase mysql-test/t/subselect_sj2.test: Update test results mysql-test/t/subselect_sj_jcl6.test: Testcase sql/opt_subselect.cc: - The problem was that DuplicateWeedout strategy setup code wasn't aware of the fact that join buffering will be used and applied optimization that doesn't work together with join buffering. Fixed by making DuplicateWeedout setup code to have a pessimistic check about whether there is a chance that join buffering will be used. sql/sql_join_cache.cc: Make JOIN_CACHE_BKA::init() correctly process Copy_field elements that denote saving current rowids in the join buffer. sql/sql_select.cc: Added a question note
-
- 06 Mar, 2010 1 commit
-
-
Igor Babaev authored
The function JOIN_CACHE::read_all_record_fields could return 0 for an incremental join cache in two cases: 1. there were no more records in the associated join buffer 2. there was no table fields stored in the join buffer. As a result the function JOIN_CACHE::get_record() could return prematurely and did not read all needed fields from join buffers into the record buffer. Now the function JOIN_CACHE::read_all_record_fields returns -1 if there are no more records in the associated join buffer.
-
- 05 Mar, 2010 1 commit
-
-
Igor Babaev authored
Made sure that join buffers could be used for inner tables of any semi-join when the first match strategy is employed.
-
- 25 Feb, 2010 1 commit
-
-
Sergey Petrunya authored
it's working on the WHERE clause.
-
- 24 Feb, 2010 1 commit
-
-
Sergey Petrunya authored
Re-worked fix of Tor Didriksen: The problem was that fix_after_pullout() after semijoin conversion wasn't propagated from the view to the underlying table. On subesequent executions of the prepared statement, we would mark the underlying table as 'dependent' and the predicate anlysis would lead to a different (and illegal) execution plan.
-
- 23 Feb, 2010 1 commit
-
-
Sergey Petrunya 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.
-
- 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"
-