Class LogicalIntersectionExpression
- java.lang.Object
-
- com.apple.foundationdb.record.query.plan.temp.expressions.LogicalIntersectionExpression
-
- All Implemented Interfaces:
Bindable
,Correlated<RelationalExpression>
,InternalPlannerGraphRewritable
,RelationalExpressionWithChildren
,RelationalExpression
@API(INTERNAL) public class LogicalIntersectionExpression extends Object implements RelationalExpressionWithChildren, InternalPlannerGraphRewritable
A query plan that executes by taking the union of records from two or more compatibly-sorted child plans. To work, each child cursor must order its children the same way according to the comparison key.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.apple.foundationdb.record.query.plan.temp.Correlated
Correlated.BoundEquivalence
-
Nested classes/interfaces inherited from interface com.apple.foundationdb.record.query.plan.temp.RelationalExpression
RelationalExpression.CombineFunction<R,S>, RelationalExpression.CombinePredicate
-
-
Field Summary
Fields Modifier and Type Field Description static org.slf4j.Logger
LOGGER
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object other)
boolean
equalsWithoutChildren(RelationalExpression otherExpression, AliasMap equivalencesMap)
static LogicalIntersectionExpression
from(List<RelationalExpression> children, KeyExpression comparisonKey)
Construct a new union of two or more compatibly-ordered plans.KeyExpression
getComparisonKey()
Set<CorrelationIdentifier>
getCorrelatedToWithoutChildren()
List<? extends Quantifier>
getQuantifiers()
Return an iterator of references to the children of this planner expression.int
getRelationalChildCount()
int
hashCode()
int
hashCodeWithoutChildren()
LogicalIntersectionExpression
rebaseWithRebasedQuantifiers(AliasMap translationMap, List<Quantifier> rebasedQuantifiers)
PlannerGraph
rewriteInternalPlannerGraph(List<? extends PlannerGraph> childGraphs)
Method to rewrite the planner graph.String
toString()
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.temp.RelationalExpression
acceptPropertyVisitor, adjustMatch, bindIdentities, bindTo, canCorrelate, compensate, enumerateUnboundCorrelatedTo, exactlySubsumedBy, findMatches, getResultValues, hasIncompatibleBoundQuantifiers, hasUnboundQuantifiers, match, match, semanticEquals, semanticEquals, semanticHashCode, show, subsumedBy
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.temp.expressions.RelationalExpressionWithChildren
getCorrelatedTo, rebase
-
-
-
-
Method Detail
-
getComparisonKey
@Nonnull public KeyExpression getComparisonKey()
-
getQuantifiers
@Nonnull public List<? extends Quantifier> getQuantifiers()
Description copied from interface:RelationalExpression
Return an iterator of references to the children of this planner expression. The iterators returned by different calls are guaranteed to be independent (i.e., advancing one will not advance another). However, they might point to the same object, as whenCollections.emptyIterator()
is returned. The returned iterator should be treated as an immutable object and may throw an exception ifIterator.remove()
is called. The iterator must return its elements in a consistent order.- Specified by:
getQuantifiers
in interfaceRelationalExpression
- Returns:
- an iterator of references to the children of this planner expression
-
getCorrelatedToWithoutChildren
@Nonnull public Set<CorrelationIdentifier> getCorrelatedToWithoutChildren()
- Specified by:
getCorrelatedToWithoutChildren
in interfaceRelationalExpressionWithChildren
-
rebaseWithRebasedQuantifiers
@Nonnull public LogicalIntersectionExpression rebaseWithRebasedQuantifiers(@Nonnull AliasMap translationMap, @Nonnull List<Quantifier> rebasedQuantifiers)
- Specified by:
rebaseWithRebasedQuantifiers
in interfaceRelationalExpressionWithChildren
-
equalsWithoutChildren
public boolean equalsWithoutChildren(@Nonnull RelationalExpression otherExpression, @Nonnull AliasMap equivalencesMap)
- Specified by:
equalsWithoutChildren
in interfaceRelationalExpression
-
hashCodeWithoutChildren
public int hashCodeWithoutChildren()
- Specified by:
hashCodeWithoutChildren
in interfaceRelationalExpression
-
getRelationalChildCount
public int getRelationalChildCount()
- Specified by:
getRelationalChildCount
in interfaceRelationalExpressionWithChildren
-
from
@Nonnull public static LogicalIntersectionExpression from(@Nonnull List<RelationalExpression> children, @Nonnull KeyExpression comparisonKey)
Construct a new union of two or more compatibly-ordered plans. The resulting plan will return all results that are returned by all of the child plans. Each plan should return results in the same order according to the providedcomparisonKey
.- Parameters:
children
- the list of plans to take the intersection ofcomparisonKey
- a key expression by which the results of both plans are ordered- Returns:
- a new plan that will return the intersection of all results from both child plans
-
rewriteInternalPlannerGraph
@Nonnull public PlannerGraph rewriteInternalPlannerGraph(@Nonnull List<? extends PlannerGraph> childGraphs)
Description copied from interface:InternalPlannerGraphRewritable
Method to rewrite the planner graph.- Specified by:
rewriteInternalPlannerGraph
in interfaceInternalPlannerGraphRewritable
- Parameters:
childGraphs
- planner graphs of children expression that already have been computed- Returns:
- a new planner graph that can combine the
childGraph
s in a meaningful way. Note that there is no obligation to use thechildGraph
s at all, this method can create a new independent planner graph completely from scratch.
-
-