Class CascadesRuleCall
- java.lang.Object
-
- com.apple.foundationdb.record.query.plan.temp.CascadesRuleCall
-
- All Implemented Interfaces:
PlannerRuleCall
@API(EXPERIMENTAL) public class CascadesRuleCall extends Object implements PlannerRuleCall
A rule call implementation for theCascadesPlanner
. This rule call implements the logic for handling new expressions as they are generated by aPlannerRule.onMatch(PlannerRuleCall)
and passed to the rule call via theyield(ExpressionRef)
method, which consists primarily of manipulating the implicit a memo data structure defined byGroupExpressionRef
s andRelationalExpression
s.
-
-
Constructor Summary
Constructors Constructor Description CascadesRuleCall(PlanContext context, PlannerRule<? extends RelationalExpression> rule, GroupExpressionRef<RelationalExpression> root, PlannerBindings bindings)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PlannerBindings
getBindings()
Return the map of bindings that this rule's matcher expression produced, which includes (by contract) all of the bindings specified by the rule associated with this call.PlanContext
getContext()
Get the planning context with metadata that might be relevant to the planner, such as the list of available indexes.<U extends RelationalExpression>
ExpressionRef<U>ref(U expression)
Wrap the given planner expression in an implementation ofExpressionRef
suitable for the planner associated with this rule.void
run()
void
yield(ExpressionRef<? extends RelationalExpression> expression)
Notify the planner's data structures that the new expression contained inexpression
has been produced by the rule.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.apple.foundationdb.record.query.plan.temp.PlannerRuleCall
get
-
-
-
-
Constructor Detail
-
CascadesRuleCall
public CascadesRuleCall(@Nonnull PlanContext context, @Nonnull PlannerRule<? extends RelationalExpression> rule, @Nonnull GroupExpressionRef<RelationalExpression> root, @Nonnull PlannerBindings bindings)
-
-
Method Detail
-
run
public void run()
-
getBindings
@Nonnull public PlannerBindings getBindings()
Description copied from interface:PlannerRuleCall
Return the map of bindings that this rule's matcher expression produced, which includes (by contract) all of the bindings specified by the rule associated with this call. This method should be implemented by rule call implementations, but users of the rule should usually access these viaPlannerRuleCall.get(ExpressionMatcher)
.- Specified by:
getBindings
in interfacePlannerRuleCall
- Returns:
- the map of bindings that the rule's matcher expression produced
-
getContext
@Nonnull public PlanContext getContext()
Description copied from interface:PlannerRuleCall
Get the planning context with metadata that might be relevant to the planner, such as the list of available indexes.- Specified by:
getContext
in interfacePlannerRuleCall
- Returns:
- a
PlanContext
object with various metadata that could affect planning
-
yield
public void yield(@Nonnull ExpressionRef<? extends RelationalExpression> expression)
Description copied from interface:PlannerRuleCall
Notify the planner's data structures that the new expression contained inexpression
has been produced by the rule. This method may be called zero or more times by the rule'sonMatch()
method.- Specified by:
yield
in interfacePlannerRuleCall
- Parameters:
expression
- the expression produced by the rule
-
ref
public <U extends RelationalExpression> ExpressionRef<U> ref(U expression)
Description copied from interface:PlannerRuleCall
Wrap the given planner expression in an implementation ofExpressionRef
suitable for the planner associated with this rule. Different rule call implementations might use different reference types depending on the specifics of the associated planner.- Specified by:
ref
in interfacePlannerRuleCall
- Type Parameters:
U
- the type of the planner expression- Parameters:
expression
- the planner expression to wrap in a reference type- Returns:
expression
wrapped in a reference
-
-