Commit graph

216 commits

Author SHA1 Message Date
Igor Babaev
0d734037cc Added missing calls of update_virtual_fields() in the
join cache module.
Without these calls SELECTs over tables with virtual columns
that used join cache could return wrong results. This could
be seen with the test case added into vcol_misc.test
2010-07-01 22:13:19 -07:00
Sergey Petrunya
27f9fc063c MariaDB 5.2 -> MariaDB 5.3 merge 2010-06-26 14:05:41 +04:00
Sergey Petrunya
488d352a66 MWL#121: DS-MRR support for clustered primary keys
- Remove back key_parts from multi_range_read_init() parameters
- Related code simplification/cleanup
2010-06-22 23:26:11 +04:00
Sergey Petrunya
925e508a2e MWL#121: DS-MRR support for clustered primary keys
- First code (will need code cleanup)
2010-06-19 15:40:19 +04:00
Sergey Petrunya
26c3dc455b MWL#90: Subqueries: Inside-out execution for non-semijoin materialized subqueries that are AND-parts of the WHERE
- Address feedback
- Code cleanup (not finished)
2010-06-08 18:22:31 +04:00
Sergey Petrunya
ef27f6c339 Buildbot fixes:
- Make join buffering take into account that join_tabs are not a 
  single linear array anymore
- Remove outer join + SJ-Materialization crash (OJ+SJ the processing
  is most likely still incorrect)
2010-06-05 22:43:27 +04:00
Sergey Petrunya
49568aefe7 MWL#90: Code cleanup: Unification of merged and non-merged SJM nests processing
- Make join buffering code to take into account that JOIN_TABs are not a 
  linear array anymore.
2010-06-05 12:37:16 +04:00
Sergey Petrunya
dad93f2c82 MWL#90, code movearound to unify merged and non-merged semi-join materialization processing
- First code, needs cleanup.
2010-06-04 17:40:57 +04:00
Sergey Petrunya
b9688830ec Subquery optimizations:
- Better comments
- Use more appropriate return types for functions
- Provide handling where it was missing.
2010-05-10 19:28:19 +04:00
Sergey Petrunya
2775f80f7d MWL#90: Subqueries: Inside-out execution for non-semijoin materialized
subqueries that are AND-parts of the WHERE
- First code (needs cleanup).
2010-04-06 00:16:45 +04:00
Sergey Petrunya
c2924e155e BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
- 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
2010-03-07 18:41:45 +03:00
Igor Babaev
1c7ba7ba2f Fixed bug .
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.
2010-03-06 11:14:55 -08:00
Igor Babaev
3ccc1d6b1e Corrected Evgen's fix for bug .
Made sure that join buffers could be used for inner tables of
any semi-join when the first match strategy is employed.
2010-03-05 10:54:48 -08:00
Sergey Petrunya
e0bb2f90a2 Subquery optimization backport:
- Factor out subquery code into sql/opt_subselect.{h,cc}
- Stop using the term "confluent" (was used due to misreading the dictionary)
2010-02-16 00:53:06 +03:00
Sergey Petrunya
742afd8eae Subquery optimizations: Backport into 5.3:
- Enable semi-join handling in the join cache code
2010-01-19 01:32:23 +03:00
Igor Babaev
4449a5f489 Backport into MariaDB-5.2 the following:
WL#2771 "Block Nested Loop Join and Batched Key Access Join"
2009-12-20 18:26:15 -08:00