[MDEV-387] Move the optimization of subqueries earlier, before make_join_select() Created: 2012-07-10 Updated: 2012-07-31 Due: 2012-07-10 Resolved: 2012-07-31 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Fix Version/s: | 10.0.0 |
| Type: | Task | Priority: | Major |
| Reporter: | Timour Katchaounov (Inactive) | Assignee: | Timour Katchaounov (Inactive) |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Description |
|
Subqueries in MariaDB 5.5/5.3 are optimized recursively close to the end of JOIN::optimize through the call to JOIN::optimize_unflattened_subqueries. This turns out to be a problem for the implementation of MDEV-83 (Cost-based choice for the pushdown of expensive predicates to joined tables), because predicate pushdown is performed by make_join_select() which is called earlier than JOIN::optimize_unflattened_subqueries. If subqueries are optimized after make_join_select(), then their cost is unknown during predicate pushdown, and we cannot estimate if a subquery is expensive or not. The goal of this task is to move subquery optimization before make_join_select. |
| Comments |
| Comment by Timour Katchaounov (Inactive) [ 2012-07-31 ] |
|
Further testing of the implementation revealed that:
In addition, later analysis of DBT3 uncovered that we must pre-optimize all subqueries already before optimizing the outer query. This is reflected in mdev-402. |