lp:~maria-captains/maria/5.3-subqueries

Created by Sergey Petrunia on 2010-02-12 and last modified on 2010-06-01
Get this branch:
bzr branch lp:~maria-captains/maria/5.3-subqueries
Members of Maria-captains can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Maria-captains
Project:
MariaDB
Status:
Development

Recent revisions

2794. By tsk <tsk@zen> on 2010-06-01

Merge 5.3 -> 5.3-subqueries

2793. By Timour Katchaounov on 2010-06-01

MWL#89: Cost-based choice between Materialization and IN->EXISTS transformation

Phase 2: Changed the code-generation for subquery materialization to be
         performed in runtime memory for each (re)execution, instead of in
         statement memory (once per prepared statement).

- Item_in_subselect::setup_engine() no longer wraps materialization related
  objects to be created in statement memory.
- Merged subselect_hash_sj_engine::init_permanent and
  subselect_hash_sj_engine::init_runtime into subselect_hash_sj_engine::init,
  which is called for each (re)execution.
- Fixed deletion of the temp table accordingly.

2792. By Timour Katchaounov on 2010-05-27

MWL#89: Cost-based choice between Materialization and IN->EXISTS transformation

Phase 1: Implement recursive bottom-up optimization of subqueires instead of
         lazy optimization.

The patch implements a preparatory phase for MWL#89, which is a prerequisite
to implement a cost-based choice between both strategies. The patch passes the
complete regression test.

The main change is implemented by the method:
  JOIN::optimize_materialized_in_subqueries().

All other changes were required to correct problems resulting from changing the
order of optimization. Most of these problems followed the same pattern - there are
some shared structures between a subquery and its parent query. Depending on which
one is optimized first (parent or child query), these shared strucutres may get
different values, thus resulting in an inconsistent query plan.

2791. By Sergey Petrunia on 2010-05-03

Fix a crash when running subselect.test with --debug option: use
correct number of tables (when we're optimizing a materializable semi-join
nest, we're considering only tables from within that nest).

2790. By Timour Katchaounov on 2010-04-06

Fixed an error in the creation of REF access method for materialized
semi-join, where the the REF buffer format was mistaken to be in
record format instead of key format. The error was that the null
byte for all fields of the record was in the front of the buffer,
and not before each field data.

2789. By Timour Katchaounov on 2010-04-05

Fixed a problem where the temp table of a materialized subquery
was not cleaned up between PS re-executions. The reason was two-fold:
- a merge with mysql-6.0 missed select_union::cleanup() that should
  have cleaned up the temp table, and
- the subclass of select_union used by materialization didn't call
  the base class cleanup() method.

2788. By Timour Katchaounov on 2010-04-02

MWL#68: Subquery optimization: Efficient NOT IN execution with NULLs

Fixed an error where the priority queue for the indexes used for partial
matching was not emptied after each execution in all cases.

2787. By Sergey Petrunia on 2010-03-29

Fix buildbot compile failure on hardy-amd64-makedist:
invoke proper Item_int constructor.

2786. By Sergey Petrunia on 2010-03-29

MWL#110: Make EXPLAIN always show materialization separately
- Add Item_in_subselect::get_identifier() that returns subquery's id
- Change select_describe() to produce output in new format
- Update test results (checked)

2785. By Sergey Petrunia on 2010-03-23

Disable subselect_notembedded.test due to LPBUG#545137

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:maria/5.1
This branch contains Public information 
Everyone can see this information.