Class NodeInfo<T extends Node<?>>
java.lang.Object
org.elasticsearch.xpack.esql.core.tree.NodeInfo<T>
- Type Parameters:
T- actual subclass of node that produced this NodeInfo
All the information about a
Node that is needed to recreate or modify it.
Generally, this will contain the longest constructor of the respective Node subclass; the non-Source arguments of that
constructor are called "properties" of the node and are modified when transforming the node.
This allows us to perform traversals and transformations of query plans and expressions without resorting to reflection, e.g. via
Node.transformNodeProps(Class, Function), which is used e.g. in QueryPlan#transformExpressionsDown.
All the uses of this are fairly non-OO and we're looking for ways to use this less and less.
The implementations of this class are super copy-and-paste-ish but they are better then the sneaky reflection tricks we had earlier. Still terrifying.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfacestatic interfacestatic interfacestatic interfacestatic interfacestatic interfacestatic interfacestatic interfacestatic interface -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptioncreate(T n) Builds aNodeInfofor Nodes without any properties.create(T n, BiFunction<Source, P1, T> ctor, P1 p1) create(T n, NodeInfo.NodeCtor10<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10) create(T n, NodeInfo.NodeCtor2<P1, P2, T> ctor, P1 p1, P2 p2) create(T n, NodeInfo.NodeCtor3<P1, P2, P3, T> ctor, P1 p1, P2 p2, P3 p3) create(T n, NodeInfo.NodeCtor4<P1, P2, P3, P4, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4) create(T n, NodeInfo.NodeCtor5<P1, P2, P3, P4, P5, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) create(T n, NodeInfo.NodeCtor6<P1, P2, P3, P4, P5, P6, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) create(T n, NodeInfo.NodeCtor7<P1, P2, P3, P4, P5, P6, P7, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) create(T n, NodeInfo.NodeCtor8<P1, P2, P3, P4, P5, P6, P7, P8, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) create(T n, NodeInfo.NodeCtor9<P1, P2, P3, P4, P5, P6, P7, P8, P9, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) protected abstract TinnerTransform(Function<Object, Object> rule) Values for all properties on the instance that created this NodeInfo.
-
Field Details
-
node
-
-
Method Details
-
properties
Values for all properties on the instance that created this NodeInfo. -
innerProperties
-
innerTransform
-
create
Builds aNodeInfofor Nodes without any properties. -
create
-
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2> (T n, NodeInfo.NodeCtor2<P1, P2, T> ctor, P1 p1, P2 p2) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3> (T n, NodeInfo.NodeCtor3<P1, P2, P3, T> ctor, P1 p1, P2 p2, P3 p3) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4> (T n, NodeInfo.NodeCtor4<P1, P2, P3, P4, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4, P5> (T n, NodeInfo.NodeCtor5<P1, P2, P3, P4, P5, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4, P5, P6> (T n, NodeInfo.NodeCtor6<P1, P2, P3, P4, P5, P6, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4, P5, P6, P7> (T n, NodeInfo.NodeCtor7<P1, P2, P3, P4, P5, P6, P7, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4, P5, P6, P7, P8> (T n, NodeInfo.NodeCtor8<P1, P2, P3, P4, P5, P6, P7, P8, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4, P5, P6, P7, P8, P9> (T n, NodeInfo.NodeCtor9<P1, P2, P3, P4, P5, P6, P7, P8, P9, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9) -
create
public static <T extends Node<?>,P1, NodeInfo<T> createP2, P3, P4, P5, P6, P7, P8, P9, P10> (T n, NodeInfo.NodeCtor10<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, T> ctor, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10)
-