| Modifier and Type | Interface and Description |
|---|---|
static interface |
ComposableStatsCalculator.Rule<T extends PlanNode> |
class |
SimpleStatsRule<T extends PlanNode> |
| Modifier and Type | Method and Description |
|---|---|
PlanCostEstimate |
CostCalculatorWithEstimatedExchanges.calculateCost(PlanNode node,
StatsProvider stats,
CostProvider sourcesCosts,
Session session,
TypeProvider types) |
PlanCostEstimate |
CostCalculatorUsingExchanges.calculateCost(PlanNode node,
StatsProvider stats,
CostProvider sourcesCosts,
Session session,
TypeProvider types) |
PlanCostEstimate |
CostCalculator.calculateCost(PlanNode node,
StatsProvider stats,
CostProvider sourcesCosts,
Session session,
TypeProvider types)
Calculates cumulative cost of a node.
|
static LocalCostEstimate |
CostCalculatorWithEstimatedExchanges.calculateJoinCostWithoutOutput(PlanNode probe,
PlanNode build,
StatsProvider stats,
TypeProvider types,
boolean replicated,
int estimatedSourceDistributedTaskCount) |
static LocalCostEstimate |
CostCalculatorWithEstimatedExchanges.calculateJoinInputCost(PlanNode probe,
PlanNode build,
StatsProvider stats,
TypeProvider types,
boolean replicated,
int estimatedSourceDistributedTaskCount) |
PlanNodeStatsEstimate |
StatsCalculator.calculateStats(PlanNode node,
StatsProvider sourceStats,
Lookup lookup,
Session session,
TypeProvider types)
Calculate stats for the
node. |
PlanNodeStatsEstimate |
ComposableStatsCalculator.calculateStats(PlanNode node,
StatsProvider sourceStats,
Lookup lookup,
Session session,
TypeProvider types) |
static StatsAndCosts |
StatsAndCosts.create(PlanNode root,
StatsProvider statsProvider,
CostProvider costProvider) |
PlanCostEstimate |
CachingCostProvider.getCost(PlanNode node) |
PlanCostEstimate |
CostProvider.getCost(PlanNode node) |
StatsAndCosts |
StatsAndCosts.getForSubplan(PlanNode root) |
PlanNodeStatsEstimate |
StatsProvider.getStats(PlanNode node) |
PlanNodeStatsEstimate |
CachingStatsProvider.getStats(PlanNode node) |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
Plan.getRoot() |
PlanNode |
PlanFragment.getRoot() |
PlanNode |
LogicalPlanner.planStatement(Analysis analysis,
Statement statement) |
| Modifier and Type | Method and Description |
|---|---|
Set<PlanNode> |
PlanFragment.getPartitionedSourceNodes() |
| Modifier and Type | Method and Description |
|---|---|
Expression |
EffectivePredicateExtractor.extract(Session session,
PlanNode node,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static List<Expression> |
ExpressionExtractor.extractExpressions(PlanNode plan) |
static List<Expression> |
ExpressionExtractor.extractExpressions(PlanNode plan,
Lookup lookup) |
static List<Expression> |
ExpressionExtractor.extractExpressionsNonRecursive(PlanNode plan) |
List<Input> |
InputExtractor.extractInputs(PlanNode root) |
Optional<Output> |
OutputExtractor.extractOutput(PlanNode root) |
static Set<Symbol> |
SymbolsExtractor.extractOutputSymbols(PlanNode planNode) |
static Set<Symbol> |
SymbolsExtractor.extractOutputSymbols(PlanNode planNode,
Lookup lookup) |
static Set<Symbol> |
SymbolsExtractor.extractUnique(PlanNode node) |
static Set<Symbol> |
SymbolsExtractor.extractUnique(PlanNode node,
Lookup lookup) |
static Set<Symbol> |
SymbolsExtractor.extractUniqueNonRecursive(PlanNode node) |
static boolean |
FragmentTableScanCounter.hasMultipleSources(PlanNode... nodes) |
LocalExecutionPlanner.LocalExecutionPlan |
LocalExecutionPlanner.plan(TaskContext taskContext,
PlanNode plan,
TypeProvider types,
PartitioningScheme partitioningScheme,
StageExecutionDescriptor stageExecutionDescriptor,
List<PlanNodeId> partitionedSourceOrder,
OutputBuffer outputBuffer) |
LocalExecutionPlanner.LocalExecutionPlan |
LocalExecutionPlanner.plan(TaskContext taskContext,
StageExecutionDescriptor stageExecutionDescriptor,
PlanNode plan,
List<Symbol> outputLayout,
TypeProvider types,
List<PlanNodeId> partitionedSourceOrder,
OutputFactory outputOperatorFactory) |
static List<PlanNodeId> |
SchedulingOrderVisitor.scheduleOrder(PlanNode root) |
protected Void |
SimplePlanVisitor.visitPlan(PlanNode node,
C context) |
| Modifier and Type | Method and Description |
|---|---|
static int |
FragmentTableScanCounter.countSources(List<PlanNode> nodes) |
| Constructor and Description |
|---|
Plan(PlanNode root,
TypeProvider types,
StatsAndCosts statsAndCosts) |
PlanFragment(PlanFragmentId id,
PlanNode root,
Map<Symbol,Type> symbols,
PartitioningHandle partitioning,
List<PlanNodeId> partitionedSources,
PartitioningScheme partitioningScheme,
StageExecutionDescriptor stageExecutionDescriptor,
StatsAndCosts statsAndCosts,
Optional<String> jsonRepresentation) |
| Modifier and Type | Class and Description |
|---|---|
class |
GroupReference |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
Memo.extract() |
PlanNode |
Memo.getNode(int group) |
PlanNode |
IterativeOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
Memo.replace(int group,
PlanNode node,
String reason) |
PlanNode |
GroupReference.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
Memo.resolve(GroupReference groupReference) |
default PlanNode |
Lookup.resolve(PlanNode node)
Deprecated.
|
static PlanNode |
Plans.resolveGroupReferences(PlanNode node,
Lookup lookup) |
| Modifier and Type | Method and Description |
|---|---|
List<PlanNode> |
GroupReference.getSources() |
Optional<PlanNode> |
Rule.Result.getTransformedPlan() |
Stream<PlanNode> |
Lookup.resolveGroup(PlanNode node)
Resolves nodes by materializing GroupReference nodes
representing symbolic references to other nodes.
|
| Modifier and Type | Method and Description |
|---|---|
static Rule.Result |
Rule.Result.ofPlanNode(PlanNode transformedPlan) |
PlanNode |
IterativeOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
Memo.replace(int group,
PlanNode node,
String reason) |
default PlanNode |
Lookup.resolve(PlanNode node)
Deprecated.
|
Stream<PlanNode> |
Lookup.resolveGroup(PlanNode node)
Resolves nodes by materializing GroupReference nodes
representing symbolic references to other nodes.
|
static PlanNode |
Plans.resolveGroupReferences(PlanNode node,
Lookup lookup) |
| Modifier and Type | Method and Description |
|---|---|
static Lookup |
Lookup.from(Function<GroupReference,Stream<PlanNode>> resolver) |
PlanNode |
GroupReference.replaceChildren(List<PlanNode> newChildren) |
| Constructor and Description |
|---|
Memo(PlanNodeIdAllocator idAllocator,
PlanNode plan) |
| Modifier and Type | Class and Description |
|---|---|
class |
ProjectOffPushDownRule<N extends PlanNode> |
| Modifier and Type | Method and Description |
|---|---|
static PlanNode |
EliminateCrossJoins.buildJoinTree(List<Symbol> expectedOutputSymbols,
JoinGraph graph,
List<Integer> joinOrder,
PlanNodeIdAllocator idAllocator) |
PlanNode |
PlanNodeWithCost.getPlanNode() |
| Modifier and Type | Method and Description |
|---|---|
protected Optional<PlanNode> |
GatherAndMergeWindows.MergeAdjacentWindowsOverProjects.manipulateAdjacentWindowNodes(WindowNode parent,
WindowNode child,
Rule.Context context) |
protected Optional<PlanNode> |
GatherAndMergeWindows.SwapAdjacentWindowsBySpecifications.manipulateAdjacentWindowNodes(WindowNode parent,
WindowNode child,
Rule.Context context) |
protected Optional<PlanNode> |
PruneAggregationColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
AggregationNode aggregationNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneFilterColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
FilterNode filterNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneIndexSourceColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
IndexSourceNode indexSourceNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneJoinColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
JoinNode joinNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneCrossJoinColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
JoinNode joinNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneLimitColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
LimitNode limitNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneMarkDistinctColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
MarkDistinctNode markDistinctNode,
Set<Symbol> referencedOutputs) |
protected abstract Optional<PlanNode> |
ProjectOffPushDownRule.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
N targetNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneProjectColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
ProjectNode childProjectNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneSemiJoinColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
SemiJoinNode semiJoinNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneTableScanColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
TableScanNode tableScanNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneTopNColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
TopNNode topNNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneValuesColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
ValuesNode valuesNode,
Set<Symbol> referencedOutputs) |
protected Optional<PlanNode> |
PruneWindowColumns.pushDownProjectOff(PlanNodeIdAllocator idAllocator,
WindowNode windowNode,
Set<Symbol> referencedOutputs) |
static Optional<PlanNode> |
PushPredicateIntoTableScan.pushFilterIntoTableScan(TableScanNode node,
Expression predicate,
boolean pruneWithPredicateExpression,
Session session,
TypeProvider types,
PlanNodeIdAllocator idAllocator,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
DomainTranslator domainTranslator) |
| Constructor and Description |
|---|
PlanNodeWithCost(PlanCostEstimate cost,
PlanNode planNode) |
| Modifier and Type | Method and Description |
|---|---|
<T extends PlanNode> |
PlanNodeSearcher.findAll() |
<T extends PlanNode> |
PlanNodeSearcher.findFirst() |
<T extends PlanNode> |
PlanNodeSearcher.findOnlyElement() |
<T extends PlanNode> |
PlanNodeSearcher.findOnlyElement(T defaultValue) |
<T extends PlanNode> |
PlanNodeSearcher.findSingle() |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
PlanNodeDecorrelator.DecorrelatedNode.getNode() |
PlanNode |
StatsRecordingPlanOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
MetadataQueryOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
ImplementIntersectAndExceptAsUnion.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
MetadataDeleteOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
OptimizeMixedDistinctAggregations.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
ReplicateSemiJoinInDelete.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
TransformQuantifiedComparisonApplyToLateralJoin.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PredicatePushDown.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
CheckSubqueryNodesAreRewritten.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
AddLocalExchanges.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PruneUnreferencedOutputs.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
LimitPushDown.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PlanOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
AddExchanges.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
BeginTableWrite.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
IndexJoinOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider type,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
HashGenerationOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
SetFlatteningOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
UnaliasSymbolReferences.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
WindowFilterPushDown.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PlanNodeSearcher.removeAll() |
PlanNode |
PlanNodeSearcher.removeFirst() |
PlanNode |
PlanNodeSearcher.replaceAll(PlanNode newPlanNode) |
PlanNode |
PlanNodeSearcher.replaceFirst(PlanNode newPlanNode) |
PlanNode |
ScalarAggregationToJoinRewriter.rewriteScalarAggregation(LateralJoinNode lateralJoinNode,
AggregationNode aggregation) |
| Modifier and Type | Method and Description |
|---|---|
Optional<PlanNodeDecorrelator.DecorrelatedNode> |
PlanNodeDecorrelator.decorrelateFilters(PlanNode node,
List<Symbol> correlation) |
static ActualProperties |
PropertyDerivations.deriveProperties(PlanNode node,
List<ActualProperties> inputProperties,
Metadata metadata,
Session session,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static StreamPropertyDerivations.StreamProperties |
StreamPropertyDerivations.deriveProperties(PlanNode node,
List<StreamPropertyDerivations.StreamProperties> inputProperties,
Metadata metadata,
Session session,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static StreamPropertyDerivations.StreamProperties |
StreamPropertyDerivations.deriveProperties(PlanNode node,
StreamPropertyDerivations.StreamProperties inputProperties,
Metadata metadata,
Session session,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static StreamPropertyDerivations.StreamProperties |
StreamPropertyDerivations.derivePropertiesRecursively(PlanNode node,
Metadata metadata,
Session session,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static ActualProperties |
PropertyDerivations.derivePropertiesRecursively(PlanNode node,
Metadata metadata,
Session session,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static com.google.common.collect.Range<Long> |
QueryCardinalityUtil.extractCardinality(PlanNode node) |
static com.google.common.collect.Range<Long> |
QueryCardinalityUtil.extractCardinality(PlanNode node,
Lookup lookup) |
static boolean |
QueryCardinalityUtil.isAtMost(PlanNode node,
Lookup lookup,
long maxCardinality) |
static boolean |
QueryCardinalityUtil.isAtMostScalar(PlanNode node) |
static boolean |
QueryCardinalityUtil.isAtMostScalar(PlanNode node,
Lookup lookup) |
static boolean |
DistinctOutputQueryUtil.isDistinct(PlanNode node) |
static boolean |
DistinctOutputQueryUtil.isDistinct(PlanNode node,
Function<PlanNode,PlanNode> lookupFunction) |
static boolean |
QueryCardinalityUtil.isScalar(PlanNode node) |
static boolean |
QueryCardinalityUtil.isScalar(PlanNode node,
Lookup lookup) |
AggregationNode |
SymbolMapper.map(AggregationNode node,
PlanNode source) |
AggregationNode |
SymbolMapper.map(AggregationNode node,
PlanNode source,
PlanNodeIdAllocator idAllocator) |
StatisticsWriterNode |
SymbolMapper.map(StatisticsWriterNode node,
PlanNode source) |
TableFinishNode |
SymbolMapper.map(TableFinishNode node,
PlanNode source) |
TableWriterNode |
SymbolMapper.map(TableWriterNode node,
PlanNode source) |
TableWriterNode |
SymbolMapper.map(TableWriterNode node,
PlanNode source,
PlanNodeId newNodeId) |
TopNNode |
SymbolMapper.map(TopNNode node,
PlanNode source,
PlanNodeId newNodeId) |
PlanNode |
StatsRecordingPlanOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
MetadataQueryOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
ImplementIntersectAndExceptAsUnion.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
MetadataDeleteOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
OptimizeMixedDistinctAggregations.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
ReplicateSemiJoinInDelete.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
TransformQuantifiedComparisonApplyToLateralJoin.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PredicatePushDown.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
CheckSubqueryNodesAreRewritten.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
AddLocalExchanges.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PruneUnreferencedOutputs.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
LimitPushDown.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PlanOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
AddExchanges.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
BeginTableWrite.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
IndexJoinOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider type,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
HashGenerationOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
SetFlatteningOptimizer.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
UnaliasSymbolReferences.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
WindowFilterPushDown.optimize(PlanNode plan,
Session session,
TypeProvider types,
SymbolAllocator symbolAllocator,
PlanNodeIdAllocator idAllocator,
WarningCollector warningCollector) |
PlanNode |
PlanNodeSearcher.replaceAll(PlanNode newPlanNode) |
PlanNode |
PlanNodeSearcher.replaceFirst(PlanNode newPlanNode) |
static PlanNodeSearcher |
PlanNodeSearcher.searchFrom(PlanNode node) |
static PlanNodeSearcher |
PlanNodeSearcher.searchFrom(PlanNode node,
Lookup lookup)
Use it in optimizer
Rule only if you truly do not have a better option |
static ActualProperties |
PropertyDerivations.streamBackdoorDeriveProperties(PlanNode node,
List<ActualProperties> inputProperties,
Metadata metadata,
Session session,
TypeProvider types,
TypeAnalyzer typeAnalyzer) |
static Map<Symbol,Symbol> |
IndexJoinOptimizer.IndexKeyTracer.trace(PlanNode node,
Set<Symbol> lookupSymbols) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
DistinctOutputQueryUtil.isDistinct(PlanNode node,
Function<PlanNode,PlanNode> lookupFunction) |
static boolean |
DistinctOutputQueryUtil.isDistinct(PlanNode node,
Function<PlanNode,PlanNode> lookupFunction) |
PlanNodeSearcher |
PlanNodeSearcher.recurseOnlyWhen(Predicate<PlanNode> skipOnly) |
PlanNodeSearcher |
PlanNodeSearcher.where(Predicate<PlanNode> where) |
| Constructor and Description |
|---|
DecorrelatedNode(List<Expression> correlatedPredicates,
PlanNode node) |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
JoinGraph.getNode(int index) |
PlanNode |
JoinGraph.Edge.getTargetNode() |
| Modifier and Type | Method and Description |
|---|---|
List<PlanNode> |
JoinGraph.getNodes() |
| Modifier and Type | Method and Description |
|---|---|
static List<JoinGraph> |
JoinGraph.buildFrom(PlanNode plan)
Builds all (distinct)
JoinGraph-es whole plan tree. |
static JoinGraph |
JoinGraph.buildShallowFrom(PlanNode plan,
Lookup lookup)
Builds
JoinGraph containing plan node. |
Collection<JoinGraph.Edge> |
JoinGraph.getEdges(PlanNode node) |
| Constructor and Description |
|---|
Edge(PlanNode targetNode,
Symbol sourceSymbol,
Symbol targetSymbol) |
JoinGraph(PlanNode node) |
| Constructor and Description |
|---|
JoinGraph(List<PlanNode> nodes,
com.google.common.collect.Multimap<PlanNodeId,JoinGraph.Edge> edges,
PlanNodeId rootId,
List<Expression> filters,
Optional<Map<Symbol,Expression>> assignments) |
| Modifier and Type | Class and Description |
|---|---|
class |
AggregationNode |
class |
ApplyNode |
class |
AssignUniqueId |
class |
DeleteNode |
class |
DistinctLimitNode |
class |
EnforceSingleRowNode |
class |
ExceptNode |
class |
ExchangeNode |
class |
ExplainAnalyzeNode |
class |
FilterNode |
class |
GroupIdNode |
class |
IndexJoinNode |
class |
IndexSourceNode |
class |
IntersectNode |
class |
JoinNode |
class |
LateralJoinNode
For every row from
LateralJoinNode.input a LateralJoinNode.subquery relation is calculated. |
class |
LimitNode |
class |
MarkDistinctNode |
class |
MetadataDeleteNode |
class |
OffsetNode |
class |
OutputNode |
class |
ProjectNode |
class |
RemoteSourceNode |
class |
RowNumberNode |
class |
SampleNode |
class |
SemiJoinNode |
class |
SetOperationNode |
class |
SortNode |
class |
SpatialJoinNode |
class |
StatisticsWriterNode |
class |
TableFinishNode |
class |
TableScanNode |
class |
TableWriterNode |
class |
TopNNode |
class |
TopNRowNumberNode |
class |
UnionNode |
class |
UnnestNode |
class |
ValuesNode |
class |
WindowNode |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
SimplePlanRewriter.RewriteContext.defaultRewrite(PlanNode node)
Invoke the rewrite logic recursively on children of the given node and swap it
out with an identical copy with the rewritten children
|
PlanNode |
SimplePlanRewriter.RewriteContext.defaultRewrite(PlanNode node,
C context)
Invoke the rewrite logic recursively on children of the given node and swap it
out with an identical copy with the rewritten children
|
PlanNode |
SemiJoinNode.getFilteringSource() |
PlanNode |
IndexJoinNode.getIndexSource() |
PlanNode |
LateralJoinNode.getInput() |
PlanNode |
ApplyNode.getInput() |
PlanNode |
JoinNode.getLeft() |
PlanNode |
SpatialJoinNode.getLeft() |
PlanNode |
IndexJoinNode.getProbeSource() |
PlanNode |
JoinNode.getRight() |
PlanNode |
SpatialJoinNode.getRight() |
PlanNode |
TableWriterNode.getSource() |
PlanNode |
SemiJoinNode.getSource() |
PlanNode |
RowNumberNode.getSource() |
PlanNode |
DistinctLimitNode.getSource() |
PlanNode |
AssignUniqueId.getSource() |
PlanNode |
EnforceSingleRowNode.getSource() |
PlanNode |
AggregationNode.getSource() |
PlanNode |
FilterNode.getSource() |
PlanNode |
OutputNode.getSource() |
PlanNode |
ProjectNode.getSource() |
PlanNode |
TopNNode.getSource() |
PlanNode |
OffsetNode.getSource() |
PlanNode |
MarkDistinctNode.getSource() |
PlanNode |
ExplainAnalyzeNode.getSource() |
PlanNode |
TopNRowNumberNode.getSource() |
PlanNode |
StatisticsWriterNode.getSource() |
PlanNode |
SampleNode.getSource() |
PlanNode |
WindowNode.getSource() |
PlanNode |
GroupIdNode.getSource() |
PlanNode |
UnnestNode.getSource() |
PlanNode |
DeleteNode.getSource() |
PlanNode |
SortNode.getSource() |
PlanNode |
TableFinishNode.getSource() |
PlanNode |
LimitNode.getSource() |
PlanNode |
LateralJoinNode.getSubquery() |
PlanNode |
ApplyNode.getSubquery() |
PlanNode |
TableWriterNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SemiJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
RowNumberNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
DistinctLimitNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
AssignUniqueId.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
IntersectNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
EnforceSingleRowNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
AggregationNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
FilterNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
LateralJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
OutputNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ProjectNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TopNNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
UnionNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TableScanNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
IndexJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ExchangeNode.replaceChildren(List<PlanNode> newChildren) |
abstract PlanNode |
PlanNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
OffsetNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
MarkDistinctNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
JoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ExplainAnalyzeNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TopNRowNumberNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
StatisticsWriterNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SampleNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ApplyNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
MetadataDeleteNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
WindowNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
GroupIdNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SpatialJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ExceptNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
UnnestNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
DeleteNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
IndexSourceNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SortNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TableFinishNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ValuesNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
RemoteSourceNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
LimitNode.replaceChildren(List<PlanNode> newChildren) |
static PlanNode |
ChildReplacer.replaceChildren(PlanNode node,
List<PlanNode> children)
Return an identical copy of the given node with its children replaced
|
PlanNode |
SimplePlanRewriter.RewriteContext.rewrite(PlanNode node)
This method is meant for invoking the rewrite logic on children while processing a node
|
PlanNode |
SimplePlanRewriter.RewriteContext.rewrite(PlanNode node,
C userContext)
This method is meant for invoking the rewrite logic on children while processing a node
|
static <C> PlanNode |
SimplePlanRewriter.rewriteWith(SimplePlanRewriter<C> rewriter,
PlanNode node) |
static <C> PlanNode |
SimplePlanRewriter.rewriteWith(SimplePlanRewriter<C> rewriter,
PlanNode node,
C context) |
protected PlanNode |
SimplePlanRewriter.visitPlan(PlanNode node,
SimplePlanRewriter.RewriteContext<C> context) |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
SimplePlanRewriter.RewriteContext.defaultRewrite(PlanNode node)
Invoke the rewrite logic recursively on children of the given node and swap it
out with an identical copy with the rewritten children
|
PlanNode |
SimplePlanRewriter.RewriteContext.defaultRewrite(PlanNode node,
C context)
Invoke the rewrite logic recursively on children of the given node and swap it
out with an identical copy with the rewritten children
|
static ExchangeNode |
ExchangeNode.gatheringExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child) |
static ExchangeNode |
ExchangeNode.mergingExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child,
OrderingScheme orderingScheme) |
static ExchangeNode |
ExchangeNode.partitionedExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child,
List<Symbol> partitioningColumns,
Optional<Symbol> hashColumns) |
static ExchangeNode |
ExchangeNode.partitionedExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child,
List<Symbol> partitioningColumns,
Optional<Symbol> hashColumns,
boolean replicateNullsAndAny) |
static ExchangeNode |
ExchangeNode.partitionedExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child,
PartitioningScheme partitioningScheme) |
static PlanNode |
ChildReplacer.replaceChildren(PlanNode node,
List<PlanNode> children)
Return an identical copy of the given node with its children replaced
|
static ExchangeNode |
ExchangeNode.replicatedExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child) |
PlanNode |
SimplePlanRewriter.RewriteContext.rewrite(PlanNode node)
This method is meant for invoking the rewrite logic on children while processing a node
|
PlanNode |
SimplePlanRewriter.RewriteContext.rewrite(PlanNode node,
C userContext)
This method is meant for invoking the rewrite logic on children while processing a node
|
static <C> PlanNode |
SimplePlanRewriter.rewriteWith(SimplePlanRewriter<C> rewriter,
PlanNode node) |
static <C> PlanNode |
SimplePlanRewriter.rewriteWith(SimplePlanRewriter<C> rewriter,
PlanNode node,
C context) |
static ExchangeNode |
ExchangeNode.roundRobinExchange(PlanNodeId id,
ExchangeNode.Scope scope,
PlanNode child) |
protected abstract R |
PlanVisitor.visitPlan(PlanNode node,
C context) |
protected PlanNode |
SimplePlanRewriter.visitPlan(PlanNode node,
SimplePlanRewriter.RewriteContext<C> context) |
| Modifier and Type | Method and Description |
|---|---|
PlanNode |
TableWriterNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SemiJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
RowNumberNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
DistinctLimitNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
AssignUniqueId.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
IntersectNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
EnforceSingleRowNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
AggregationNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
FilterNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
LateralJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
OutputNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ProjectNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TopNNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
UnionNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TableScanNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
IndexJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ExchangeNode.replaceChildren(List<PlanNode> newChildren) |
abstract PlanNode |
PlanNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
OffsetNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
MarkDistinctNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
JoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ExplainAnalyzeNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TopNRowNumberNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
StatisticsWriterNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SampleNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ApplyNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
MetadataDeleteNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
WindowNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
GroupIdNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SpatialJoinNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ExceptNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
UnnestNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
DeleteNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
IndexSourceNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
SortNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
TableFinishNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
ValuesNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
RemoteSourceNode.replaceChildren(List<PlanNode> newChildren) |
PlanNode |
LimitNode.replaceChildren(List<PlanNode> newChildren) |
static PlanNode |
ChildReplacer.replaceChildren(PlanNode node,
List<PlanNode> children)
Return an identical copy of the given node with its children replaced
|
| Constructor and Description |
|---|
ExceptNode(PlanNodeId id,
List<PlanNode> sources,
com.google.common.collect.ListMultimap<Symbol,Symbol> outputToInputs,
List<Symbol> outputs) |
ExchangeNode(PlanNodeId id,
ExchangeNode.Type type,
ExchangeNode.Scope scope,
PartitioningScheme partitioningScheme,
List<PlanNode> sources,
List<List<Symbol>> inputs,
Optional<OrderingScheme> orderingScheme) |
IntersectNode(PlanNodeId id,
List<PlanNode> sources,
com.google.common.collect.ListMultimap<Symbol,Symbol> outputToInputs,
List<Symbol> outputs) |
SetOperationNode(PlanNodeId id,
List<PlanNode> sources,
com.google.common.collect.ListMultimap<Symbol,Symbol> outputToInputs,
List<Symbol> outputs) |
UnionNode(PlanNodeId id,
List<PlanNode> sources,
com.google.common.collect.ListMultimap<Symbol,Symbol> outputToInputs,
List<Symbol> outputs) |
| Modifier and Type | Method and Description |
|---|---|
static String |
PlanPrinter.graphvizLogicalPlan(PlanNode plan,
TypeProvider types) |
static String |
PlanPrinter.jsonFragmentPlan(PlanNode root,
Map<Symbol,Type> symbols,
FunctionRegistry functionRegistry,
Optional<Metadata> metadata,
Session session) |
static String |
IoPlanPrinter.textIoPlan(PlanNode plan,
Metadata metadata,
Session session) |
static String |
PlanPrinter.textLogicalPlan(PlanNode plan,
TypeProvider types,
FunctionRegistry functionRegistry,
Optional<Metadata> metadata,
StatsAndCosts estimatedStatsAndCosts,
Session session,
int level) |
static String |
PlanPrinter.textLogicalPlan(PlanNode plan,
TypeProvider types,
FunctionRegistry functionRegistry,
Optional<Metadata> metadata,
StatsAndCosts estimatedStatsAndCosts,
Session session,
int level,
boolean verbose) |
static String |
PlanPrinter.textLogicalPlan(PlanNode plan,
TypeProvider types,
Optional<StageExecutionDescriptor> stageExecutionStrategy,
FunctionRegistry functionRegistry,
Optional<Metadata> metadata,
StatsAndCosts estimatedStatsAndCosts,
Session session,
Optional<Map<PlanNodeId,PlanNodeStats>> stats,
int level,
boolean verbose) |
| Modifier and Type | Method and Description |
|---|---|
static void |
ValidateDependenciesChecker.validate(PlanNode plan) |
void |
TypeValidator.validate(PlanNode plan,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
ValidateDependenciesChecker.validate(PlanNode plan,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
VerifyNoFilteredAggregations.validate(PlanNode plan,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
VerifyOnlyOneOutputNode.validate(PlanNode plan,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
ValidateAggregationsWithDefaultValues.validate(PlanNode planNode,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
NoDuplicatePlanNodeIdsChecker.validate(PlanNode planNode,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
ValidateStreamingAggregations.validate(PlanNode planNode,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
NoSubqueryExpressionLeftChecker.validate(PlanNode plan,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
NoIdentifierLeftChecker.validate(PlanNode plan,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
PlanSanityChecker.Checker.validate(PlanNode planNode,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
PlanSanityChecker.validateFinalPlan(PlanNode planNode,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
void |
PlanSanityChecker.validateIntermediatePlan(PlanNode planNode,
Session session,
Metadata metadata,
TypeAnalyzer typeAnalyzer,
TypeProvider types,
WarningCollector warningCollector) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
SpatialJoinUtils.isSpatialJoinFilter(PlanNode left,
PlanNode right,
Expression filterExpression) |
Copyright © 2012–2019. All rights reserved.