public final class RulePlanSubqueries extends Object implements OptimizerRule
Modifier and Type | Class and Description |
---|---|
static class |
RulePlanSubqueries.PlannedResult |
static class |
RulePlanSubqueries.ReferenceReplacementVisitor
Used to replace correlated references
|
Constructor and Description |
---|
RulePlanSubqueries(IDGenerator idGenerator,
CapabilitiesFinder capFinder,
AnalysisRecord analysisRecord,
CommandContext context,
QueryMetadataInterface metadata) |
Modifier and Type | Method and Description |
---|---|
PlanNode |
execute(PlanNode plan,
QueryMetadataInterface metadata,
CapabilitiesFinder capFinder,
RuleStack rules,
AnalysisRecord analysisRecord,
CommandContext context) |
RulePlanSubqueries.PlannedResult |
findSubquery(Criteria crit,
boolean unnest) |
RulePlanSubqueries.PlannedResult |
findSubquery(Expression expr,
boolean unnest,
RulePlanSubqueries.PlannedResult result,
boolean requireSingleRow) |
static boolean |
isDistinct(Query query,
List<Expression> expressions,
QueryMetadataInterface metadata) |
boolean |
planQuery(Collection<GroupSymbol> leftGroups,
boolean requireDistinct,
RulePlanSubqueries.PlannedResult plannedResult) |
static boolean |
requiresDistinctRows(Query query)
Return true if the result from the subquery may be different
if non-distinct rows are used as input
|
String |
toString() |
public RulePlanSubqueries(IDGenerator idGenerator, CapabilitiesFinder capFinder, AnalysisRecord analysisRecord, CommandContext context, QueryMetadataInterface metadata)
public static boolean requiresDistinctRows(Query query)
query
- public PlanNode execute(PlanNode plan, QueryMetadataInterface metadata, CapabilitiesFinder capFinder, RuleStack rules, AnalysisRecord analysisRecord, CommandContext context) throws QueryPlannerException, TeiidComponentException
execute
in interface OptimizerRule
QueryPlannerException
TeiidComponentException
OptimizerRule#execute(PlanNode, QueryMetadataInterface, RuleStack)
public RulePlanSubqueries.PlannedResult findSubquery(Expression expr, boolean unnest, RulePlanSubqueries.PlannedResult result, boolean requireSingleRow) throws QueryMetadataException, TeiidComponentException
public RulePlanSubqueries.PlannedResult findSubquery(Criteria crit, boolean unnest) throws TeiidComponentException, QueryMetadataException
public boolean planQuery(Collection<GroupSymbol> leftGroups, boolean requireDistinct, RulePlanSubqueries.PlannedResult plannedResult) throws QueryMetadataException, TeiidComponentException
public static boolean isDistinct(Query query, List<Expression> expressions, QueryMetadataInterface metadata) throws QueryMetadataException, TeiidComponentException
Copyright © 2019. All rights reserved.