Class RecordQueryInValuesJoinPlan
- java.lang.Object
-
- com.apple.foundationdb.record.query.plan.plans.RecordQueryInJoinPlan
-
- com.apple.foundationdb.record.query.plan.plans.RecordQueryInValuesJoinPlan
-
- All Implemented Interfaces:
PlanHashable
,QueryPlan<FDBQueriedRecord<Message>>
,RecordQueryPlan
,RecordQueryPlanWithChild
,RecordQueryPlanWithChildren
,Bindable
,PlannerGraphRewritable
,RelationalExpressionWithChildren
,RelationalExpression
@API(MAINTAINED) public class RecordQueryInValuesJoinPlan extends RecordQueryInJoinPlan
A query plan that executes a child plan once for each of the elements of a constantIN
list.
-
-
Field Summary
-
Fields inherited from class com.apple.foundationdb.record.query.plan.plans.RecordQueryInJoinPlan
bindingName, plan, sortReverse, sortValuesNeeded, VALUE_COMPARATOR
-
-
Constructor Summary
Constructors Constructor Description RecordQueryInValuesJoinPlan(RecordQueryPlan plan, String bindingName, List<Object> values, boolean sortValues, boolean sortReverse)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
boolean
equalsWithoutChildren(RelationalExpression otherExpression)
List<Object>
getValues(EvaluationContext context)
int
hashCode()
void
logPlanStructure(StoreTimer timer)
Adds one to an appropriateStoreTimer
counter for each plan and subplan of this plan, allowing tracking of which plans are being chosen (e.g.int
planHash()
Return a hash similar tohashCode
, but with the additional guarantee that is is stable across JVMs.PlannerGraph
rewritePlannerGraph(List<? extends PlannerGraph> childGraphs)
Rewrite the planner graph for better visualization of a query index plan.String
toString()
-
Methods inherited from class com.apple.foundationdb.record.query.plan.plans.RecordQueryInJoinPlan
execute, getChild, getComplexity, getInner, getQuantifiers, isReverse, isSorted, sortValues
-
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.plans.QueryPlan
execute, execute
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.plans.RecordQueryPlan
execute, execute, execute, getQueryPlanChildren
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.plans.RecordQueryPlanWithChild
getChildren, getRelationalChildCount, getUsedIndexes, hasFullRecordScan, hasIndexScan, hasLoadBykeys, hasRecordScan
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.temp.RelationalExpression
acceptPropertyVisitor, bindTo, show
-
-
-
-
Constructor Detail
-
RecordQueryInValuesJoinPlan
public RecordQueryInValuesJoinPlan(RecordQueryPlan plan, String bindingName, @Nullable List<Object> values, boolean sortValues, boolean sortReverse)
-
-
Method Detail
-
getValues
@Nullable public List<Object> getValues(EvaluationContext context)
- Specified by:
getValues
in classRecordQueryInJoinPlan
-
equalsWithoutChildren
@API(EXPERIMENTAL) public boolean equalsWithoutChildren(@Nonnull RelationalExpression otherExpression)
- Specified by:
equalsWithoutChildren
in interfaceRelationalExpression
- Overrides:
equalsWithoutChildren
in classRecordQueryInJoinPlan
-
equals
public boolean equals(Object o)
- Overrides:
equals
in classRecordQueryInJoinPlan
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classRecordQueryInJoinPlan
-
planHash
public int planHash()
Description copied from interface:PlanHashable
Return a hash similar tohashCode
, but with the additional guarantee that is is stable across JVMs.- Specified by:
planHash
in interfacePlanHashable
- Overrides:
planHash
in classRecordQueryInJoinPlan
- Returns:
- a stable hash code
-
logPlanStructure
public void logPlanStructure(StoreTimer timer)
Description copied from interface:QueryPlan
Adds one to an appropriateStoreTimer
counter for each plan and subplan of this plan, allowing tracking of which plans are being chosen (e.g. index scan vs. full scan).- Parameters:
timer
- the counters to increment
-
rewritePlannerGraph
@Nonnull public PlannerGraph rewritePlannerGraph(@Nonnull List<? extends PlannerGraph> childGraphs)
Rewrite the planner graph for better visualization of a query index plan.- Parameters:
childGraphs
- planner graphs of children expression that already have been computed- Returns:
- the rewritten planner graph that models this operator as a logical nested loop join joining an outer table of values in the IN clause to the correlated inner result of executing (usually) a index lookup for each bound outer value.
-
-