Given a LogicalPlan, returns a list of PhysicalPlan
s that can
be used for execution.
Given a LogicalPlan, returns a list of PhysicalPlan
s that can
be used for execution. If this strategy does not apply to the give logical operation then an
empty list should be returned.
Abstract class for transforming LogicalPlans into physical plans.
Abstract class for transforming LogicalPlans into physical plans. Child classes are responsible for specifying a list of GenericStrategy objects that each of which can return a list of possible physical plan options. If a given strategy is unable to plan all of the remaining operators in the tree, it can call planLater, which returns a placeholder object that will be filled in using other available strategies.
TODO: RIGHT NOW ONLY ONE PLAN IS RETURNED EVER... PLAN SPACE EXPLORATION WILL BE IMPLEMENTED LATER.
The type of physical plan produced by this QueryPlanner
A pattern that finds joins with equality conditions that can be evaluated using equi-join.
A pattern that finds joins with equality conditions that can be evaluated using equi-join.
Null-safe equality will be transformed into equality as joining key (replace null with default value).
A pattern that collects the filter and inner joins.
A pattern that collects the filter and inner joins.
Filter | inner Join / \ ----> (Seq(plan0, plan1, plan2), conditions) Filter plan2 | inner join / \ plan0 plan1
Note: This pattern currently only works for left-deep trees.
An extractor used when planning the physical execution of an aggregation.
An extractor used when planning the physical execution of an aggregation. Compared with a logical aggregation, the following transformations are performed:
count
in count + 1
will be split into an AggregateExpression and a final
computation that computes count.resultAttribute + 1
.
A pattern that matches any number of project or filter operations on top of another relational operator.
A pattern that matches any number of project or filter operations on top of another relational operator. All filter operators are collected and their conditions are broken up and returned together with the top project operator. Aliases are in-lined/substituted if necessary.
Contains classes for enumerating possible physical plans for a given logical query plan.