java.lang.Object
tools.refinery.interpreter.matchers.planning.SubPlan

public class SubPlan extends Object
A plan representing a subset of (or possibly all the) constraints evaluated. A SubPlan instance is responsible for representing a state of the plan; but after it is initialized it is expected be immutable (exception: inferred constraints, see inferConstraint(PConstraint)).

A SubPlan is constructed by applying a POperation on zero or more parent SubPlans. Important maintained information:

  • set of variables whose values are known when the runtime evaluation is at this stage,
  • set of constraints that are known to hold true at this point.

Recommended to instantiate via a SubPlanFactory or subclasses, so that query planners can subclass SubPlan if needed.

  • Constructor Details

    • SubPlan

      public SubPlan(PBody body, POperation operation, SubPlan... parentPlans)
      A SubPlan is constructed by applying a POperation on zero or more parent SubPlans.
    • SubPlan

      public SubPlan(PBody body, POperation operation, List<? extends SubPlan> parentPlans)
      A SubPlan is constructed by applying a POperation on zero or more parent SubPlans.
  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toShortString

      public String toShortString()
    • toLongString

      public String toLongString()
    • getAllEnforcedConstraints

      public Set<PConstraint> getAllEnforcedConstraints()
      All constraints that are known to hold at this point
    • getDeltaEnforcedConstraints

      public Set<PConstraint> getDeltaEnforcedConstraints()
      The new constraints enforced at this stage of plan, that aren't yet enforced at parents (results are also included in getAllEnforcedConstraints())
    • inferConstraint

      public void inferConstraint(PConstraint constraint)
      Indicate that a given constraint was found to be automatically satisfied at this point without additional operations. (results are also included in getDeltaEnforcedConstraints())

      Warning: not propagated automatically to child plans, so best to invoke before constructing further SubPlans.

    • getBody

      public PBody getBody()
    • getVisibleVariables

      public Set<PVariable> getVisibleVariables()
      Variables which are assigned a value at this point (results are also included in getAllDeducedVariables())
    • getAllDeducedVariables

      public Set<PVariable> getAllDeducedVariables()
      Variables which have been assigned a value; includes visible variables (see getVisibleVariables()) and additionally any variables hidden by a projection (see PProject).
    • getIntroducedVariables

      public Set<PVariable> getIntroducedVariables()
      Delta compared to first parent: variables that are visible here but were not visible at the first parent.
    • getParentPlans

      public List<? extends SubPlan> getParentPlans()
    • getOperation

      public POperation getOperation()
    • getAllImpliedTypeJudgements

      public Set<TypeJudgement> getAllImpliedTypeJudgements(IQueryMetaContext context)
      The closure of all type judgments of enforced constraints at this point.

      No subsumption applied.

    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object