public class LogicalIndexScanExpression extends Object implements RelationalPlannerExpression
RecordQueryIndexPlan
that represents
a partially-implemented index scan. The primary difference between the two is that a RecordQueryIndexPlan
requires a fully formed ScanComparisons
, which does not track
which comparisons belong to which parts of the index's key expression. In contrast, this logical index scan has a
KeyExpressionComparisons
which explicitly tracks that information. Except for the final "implementation"
rules, a planner rule should generally prefer to produce and consume LogicalIndexScanExpression
s so that
important information about the index key expression is retained.Constructor and Description |
---|
LogicalIndexScanExpression(String indexName,
IndexScanType scanType,
KeyExpressionComparisons comparisons,
boolean reverse) |
Modifier and Type | Method and Description |
---|---|
KeyExpressionComparisons |
getComparisons() |
String |
getIndexName() |
Iterator<? extends ExpressionRef<? extends PlannerExpression>> |
getPlannerExpressionChildren()
Return an iterator of references to the children of this planner expression.
|
IndexScanType |
getScanType() |
boolean |
isReverse() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
fromRecordQuery
acceptPropertyVisitor, bindTo
public LogicalIndexScanExpression(@Nonnull String indexName, @Nonnull IndexScanType scanType, @Nonnull KeyExpressionComparisons comparisons, boolean reverse)
@Nonnull public Iterator<? extends ExpressionRef<? extends PlannerExpression>> getPlannerExpressionChildren()
PlannerExpression
Collections.emptyIterator()
is returned. The returned iterator should
be treated as an immutable object and may throw an exception if Iterator.remove()
is called.
The iterator must return its elements in a consistent order.getPlannerExpressionChildren
in interface PlannerExpression
@Nonnull public IndexScanType getScanType()
@Nonnull public KeyExpressionComparisons getComparisons()
public boolean isReverse()