Class SubPlan


  • public class SubPlan
    extends java.lang.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 Detail

      • 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,
                       java.util.List<? extends SubPlan> parentPlans)
        A SubPlan is constructed by applying a POperation on zero or more parent SubPlans.
    • Method Detail

      • toString

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

        public java.lang.String toShortString()
      • toLongString

        public java.lang.String toLongString()
      • getAllEnforcedConstraints

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

        public java.util.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 java.util.Set<PVariable> getVisibleVariables()
        Variables which are assigned a value at this point (results are also included in getAllDeducedVariables())
      • getAllDeducedVariables

        public java.util.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 java.util.Set<PVariable> getIntroducedVariables()
        Delta compared to first parent: variables that are visible here but were not visible at the first parent.
      • getParentPlans

        public java.util.List<? extends SubPlan> getParentPlans()
      • getAllImpliedTypeJudgements

        public java.util.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 java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object