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 Strategy 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 matches any number of filter operations on top of another relational operator.
A pattern that matches any number of filter operations on top of another relational operator. Adjacent filter operators are collected and their conditions are broken up and returned as a sequence of conjunctive predicates.
A tuple containing a sequence of conjunctive predicates that should be used to filter the output and a relational operator.
Matches a logical aggregation that can be performed on distributed data in two steps.
Matches a logical aggregation that can be performed on distributed data in two steps. The first operates on the data in each partition performing partial aggregation for each group. The second occurs after the shuffle and completes the aggregation.
This pattern will only match if all aggregate expressions can be computed partially and will return the rewritten aggregation expressions for both phases.
The returned values for this match are as follows:
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.
A pattern that collects all adjacent unions and returns their children as a Seq.
Contains classes for enumerating possible physical plans for a given logical query plan.