Class QueryPlan<PlanType extends QueryPlan<PlanType>>

java.lang.Object
org.elasticsearch.xpack.esql.core.tree.Node<PlanType>
org.elasticsearch.xpack.esql.plan.QueryPlan<PlanType>
All Implemented Interfaces:
NamedWriteable, Writeable
Direct Known Subclasses:
LogicalPlan, PhysicalPlan

public abstract class QueryPlan<PlanType extends QueryPlan<PlanType>> extends Node<PlanType>
There are two main types of plans, LogicalPlan and PhysicalPlan
  • Constructor Details

  • Method Details

    • output

      public abstract List<Attribute> output()
      The ordered list of attributes (i.e. columns) this plan produces when executed. Must be called only on resolved plans, otherwise may throw an exception or return wrong results.
    • outputSet

      public AttributeSet outputSet()
    • inputSet

      public AttributeSet inputSet()
    • expressions

      public List<Expression> expressions()
      Returns the top-level expressions for this query plan node. In other words the node properties.
    • computeExpressions

      protected List<Expression> computeExpressions()
    • references

      public AttributeSet references()
      The attributes required to be in the inputSet() for this plan to be valid. Excludes generated references.

      E.g. for EVAL x = 2*some_field, y = 2*x this includes some_field but neither x nor y. For ENRICH some_policy ON field WITH some_enrich_field this includes field but excludes the generated reference some_enrich_field.

    • computeReferences

      protected AttributeSet computeReferences()
      This very likely needs to be overridden for references() to be correct when inheriting. This can be called on unresolved plans and therefore must not rely on calls to output().
    • transformExpressionsOnly

      public PlanType transformExpressionsOnly(Function<Expression,? extends Expression> rule)
    • transformExpressionsOnly

      public <E extends Expression> PlanType transformExpressionsOnly(Class<E> typeToken, Function<E,? extends Expression> rule)
    • transformExpressionsOnlyUp

      public <E extends Expression> PlanType transformExpressionsOnlyUp(Class<E> typeToken, Function<E,? extends Expression> rule)
    • transformExpressionsDown

      public PlanType transformExpressionsDown(Function<Expression,? extends Expression> rule)
    • transformExpressionsDown

      public <E extends Expression> PlanType transformExpressionsDown(Class<E> typeToken, Function<E,? extends Expression> rule)
    • transformExpressionsUp

      public PlanType transformExpressionsUp(Function<Expression,? extends Expression> rule)
    • transformExpressionsUp

      public <E extends Expression> PlanType transformExpressionsUp(Class<E> typeToken, Function<E,? extends Expression> rule)
    • forEachExpression

      public void forEachExpression(Consumer<? super Expression> rule)
    • forEachExpression

      public <E extends Expression> void forEachExpression(Class<E> typeToken, Consumer<? super E> rule)
    • forEachExpressionDown

      public void forEachExpressionDown(Consumer<? super Expression> rule)
    • forEachExpressionDown

      public <E extends Expression> void forEachExpressionDown(Class<? extends E> typeToken, Consumer<? super E> rule)
    • forEachExpressionUp

      public void forEachExpressionUp(Consumer<? super Expression> rule)
    • forEachExpressionUp

      public <E extends Expression> void forEachExpressionUp(Class<E> typeToken, Consumer<? super E> rule)