Class LogicalSortExpression
- java.lang.Object
-
- com.apple.foundationdb.record.query.plan.temp.expressions.LogicalSortExpression
-
- All Implemented Interfaces:
Bindable
,Correlated<RelationalExpression>
,InternalPlannerGraphRewritable
,RelationalExpressionWithChildren
,RelationalExpression
@API(EXPERIMENTAL) public class LogicalSortExpression extends Object implements RelationalExpressionWithChildren, InternalPlannerGraphRewritable
A relational planner expression that represents an unimplemented sort on the records produced by its inner relational planner expression.
-
-
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
-
-
Constructor Summary
Constructors Constructor Description LogicalSortExpression(KeyExpression sort, boolean reverse, Quantifier inner)
LogicalSortExpression(KeyExpression sort, boolean reverse, RelationalExpression inner)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object other)
boolean
equalsWithoutChildren(RelationalExpression otherExpression, AliasMap equivalencesMap)
Set<CorrelationIdentifier>
getCorrelatedToWithoutChildren()
List<? extends Quantifier>
getQuantifiers()
Return an iterator of references to the children of this planner expression.int
getRelationalChildCount()
KeyExpression
getSort()
int
hashCode()
int
hashCodeWithoutChildren()
boolean
isReverse()
LogicalSortExpression
rebase(AliasMap translationMap)
Rebases this and all other objects this objects is composed of using a given translation map.LogicalSortExpression
rebaseWithRebasedQuantifiers(AliasMap translationMap, List<Quantifier> rebasedQuantifiers)
PlannerGraph
rewriteInternalPlannerGraph(List<? extends PlannerGraph> childGraphs)
Method to rewrite the planner graph.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, 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
-
-
-
-
Constructor Detail
-
LogicalSortExpression
public LogicalSortExpression(@Nonnull KeyExpression sort, boolean reverse, @Nonnull RelationalExpression inner)
-
LogicalSortExpression
public LogicalSortExpression(@Nonnull KeyExpression sort, boolean reverse, @Nonnull Quantifier inner)
-
-
Method Detail
-
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
-
getRelationalChildCount
public int getRelationalChildCount()
- Specified by:
getRelationalChildCount
in interfaceRelationalExpressionWithChildren
-
getSort
@Nonnull public KeyExpression getSort()
-
isReverse
public boolean isReverse()
-
getCorrelatedToWithoutChildren
@Nonnull public Set<CorrelationIdentifier> getCorrelatedToWithoutChildren()
- Specified by:
getCorrelatedToWithoutChildren
in interfaceRelationalExpressionWithChildren
-
rebase
@Nonnull public LogicalSortExpression rebase(@Nonnull AliasMap translationMap)
Description copied from interface:Correlated
Rebases this and all other objects this objects is composed of using a given translation map.- Specified by:
rebase
in interfaceCorrelated<RelationalExpression>
- Specified by:
rebase
in interfaceRelationalExpressionWithChildren
- Parameters:
translationMap
- a map defining a translation fromCorrelationIdentifier
sids
toCorrelationIdentifier
sids'
. After the rebase, every correlation to anid
containedids
that is contained or referred to directly or indirectly bythis
must have been transformed to use the mapped counterpart ofid
id'
inids'
. IDs not contained in the translation map must remain unmodified by the rebase operation.- Returns:
- a new entity that has been rebased
-
rebaseWithRebasedQuantifiers
@Nonnull public LogicalSortExpression 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
-
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.
-
-