Class RulePlanSubqueries
- java.lang.Object
-
- org.teiid.query.optimizer.relational.rules.RulePlanSubqueries
-
- All Implemented Interfaces:
OptimizerRule
public final class RulePlanSubqueries extends Object implements OptimizerRule
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RulePlanSubqueries.PlannedResult
static class
RulePlanSubqueries.ReferenceReplacementVisitor
Used to replace correlated references
-
Constructor Summary
Constructors Constructor Description RulePlanSubqueries(IDGenerator idGenerator, CapabilitiesFinder capFinder, AnalysisRecord analysisRecord, CommandContext context, QueryMetadataInterface metadata)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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 inputString
toString()
-
-
-
Constructor Detail
-
RulePlanSubqueries
public RulePlanSubqueries(IDGenerator idGenerator, CapabilitiesFinder capFinder, AnalysisRecord analysisRecord, CommandContext context, QueryMetadataInterface metadata)
-
-
Method Detail
-
requiresDistinctRows
public static boolean requiresDistinctRows(Query query)
Return true if the result from the subquery may be different if non-distinct rows are used as input- Parameters:
query
-- Returns:
-
execute
public PlanNode execute(PlanNode plan, QueryMetadataInterface metadata, CapabilitiesFinder capFinder, RuleStack rules, AnalysisRecord analysisRecord, CommandContext context) throws QueryPlannerException, TeiidComponentException
- Specified by:
execute
in interfaceOptimizerRule
- Throws:
QueryPlannerException
TeiidComponentException
-
findSubquery
public RulePlanSubqueries.PlannedResult findSubquery(Expression expr, boolean unnest, RulePlanSubqueries.PlannedResult result, boolean requireSingleRow) throws QueryMetadataException, TeiidComponentException
-
findSubquery
public RulePlanSubqueries.PlannedResult findSubquery(Criteria crit, boolean unnest) throws TeiidComponentException, QueryMetadataException
-
planQuery
public boolean planQuery(Collection<GroupSymbol> leftGroups, boolean requireDistinct, RulePlanSubqueries.PlannedResult plannedResult) throws QueryMetadataException, TeiidComponentException
-
isDistinct
public static boolean isDistinct(Query query, List<Expression> expressions, QueryMetadataInterface metadata) throws QueryMetadataException, TeiidComponentException
-
-