package planning
Contains classes for enumerating possible physical plans for a given logical query plan.
- Alphabetic
- By Inheritance
- planning
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
abstract
class
GenericStrategy[PhysicalPlan <: TreeNode[PhysicalPlan]] extends Logging
Given a LogicalPlan, returns a list of
PhysicalPlans that can be used for execution.Given a LogicalPlan, returns a list of
PhysicalPlans that can be used for execution. If this strategy does not apply to the given logical operation then an empty list should be returned. - trait OperationHelper extends AnyRef
-
abstract
class
QueryPlanner[PhysicalPlan <: TreeNode[PhysicalPlan]] extends AnyRef
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 collected and filled in using other available strategies.
TODO: RIGHT NOW ONLY ONE PLAN IS RETURNED EVER... PLAN SPACE EXPLORATION WILL BE IMPLEMENTED LATER.
- PhysicalPlan
The type of physical plan produced by this QueryPlanner
Value Members
-
object
ExtractEquiJoinKeys extends Logging with PredicateHelper
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).
-
object
ExtractFiltersAndInnerJoins extends PredicateHelper
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.
-
object
PhysicalAggregation
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:
- Unnamed grouping expressions are named so that they can be referred to across phases of aggregation
- Aggregations that appear multiple times are deduplicated.
- The computation of the aggregations themselves is separated from the final result. For
example, the
countincount + 1will be split into an AggregateExpression and a final computation that computescount.resultAttribute + 1.
-
object
PhysicalOperation extends OperationHelper with PredicateHelper
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.
-
object
PhysicalWindow
An extractor used when planning physical execution of a window.
An extractor used when planning physical execution of a window. This extractor outputs the window function type of the logical window.
The input logical window must contain same type of window functions, which is ensured by the rule ExtractWindowExpressions in the analyzer.
-
object
ScanOperation extends OperationHelper with PredicateHelper
A variant of PhysicalOperation.
A variant of PhysicalOperation. It matches any number of project or filter operations even if they are non-deterministic, as long as they satisfy the requirement of CollapseProject and CombineFilters.