Skip to content

Commit 8a7fc3d

Browse files
committed
upd
1 parent 8c7df30 commit 8a7fc3d

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

benchmarks/src/main/java/org/elasticsearch/benchmark/esql/QueryPlanningBenchmark.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ private LogicalPlan plan(String query) {
123123
}
124124

125125
@Benchmark
126-
public void run(Blackhole blackhole) {
126+
public void manyFields(Blackhole blackhole) {
127127
blackhole.consume(plan("FROM test | LIMIT 10"));
128128
}
129129
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/tree/Node.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ public <E extends T> T transformDown(Class<E> typeToken, Function<E, ? extends T
194194
}
195195

196196
@SuppressWarnings("unchecked")
197-
public <E extends T> T transformDown(Predicate<Node<?>> tokenPredicate, Function<E, ? extends T> rule) {
197+
public <E extends T> T transformDown(Predicate<Node<?>> nodePredicate, Function<E, ? extends T> rule) {
198198
// type filtering function
199-
return transformDown((t) -> (tokenPredicate.test(t) ? rule.apply((E) t) : t));
199+
return transformDown((t) -> (nodePredicate.test(t) ? rule.apply((E) t) : t));
200200
}
201201

202202
@SuppressWarnings("unchecked")
@@ -213,9 +213,9 @@ public <E extends T> T transformUp(Class<E> typeToken, Function<E, ? extends T>
213213
}
214214

215215
@SuppressWarnings("unchecked")
216-
public <E extends T> T transformUp(Predicate<Node<?>> tokenPredicate, Function<E, ? extends T> rule) {
216+
public <E extends T> T transformUp(Predicate<Node<?>> nodePredicate, Function<E, ? extends T> rule) {
217217
// type filtering function
218-
return transformUp((t) -> (tokenPredicate.test(t) ? rule.apply((E) t) : t));
218+
return transformUp((t) -> (nodePredicate.test(t) ? rule.apply((E) t) : t));
219219
}
220220

221221
@SuppressWarnings("unchecked")

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/optimizer/rules/logical/OptimizerRules.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
import org.elasticsearch.xpack.esql.core.tree.Node;
1111
import org.elasticsearch.xpack.esql.core.util.ReflectionUtils;
1212
import org.elasticsearch.xpack.esql.optimizer.LogicalOptimizerContext;
13+
import org.elasticsearch.xpack.esql.plan.logical.Drop;
1314
import org.elasticsearch.xpack.esql.plan.logical.EsRelation;
15+
import org.elasticsearch.xpack.esql.plan.logical.Limit;
1416
import org.elasticsearch.xpack.esql.plan.logical.LogicalPlan;
1517
import org.elasticsearch.xpack.esql.plan.logical.Project;
1618
import org.elasticsearch.xpack.esql.rule.ParameterizedRule;
@@ -64,10 +66,17 @@ public final LogicalPlan apply(LogicalPlan plan, LogicalOptimizerContext ctx) {
6466

6567
protected abstract Expression rule(E e, LogicalOptimizerContext ctx);
6668

69+
/**
70+
* Defines if a node should be visited or not.
71+
* Allows to skip nodes that are not applicable for the rule even if they contain expressions.
72+
* By default that skips FROM, LIMIT, PROJECT, KEEP and DROP but this list could be extended or replaced in subclasses.
73+
*/
6774
protected boolean shouldVisit(Node<?> node) {
6875
return switch (node) {
69-
case EsRelation esr -> false;
70-
case Project p -> false;// this covers both keep and project
76+
case EsRelation relation -> false;
77+
case Project project -> false;// this covers both keep and project
78+
case Drop drop -> false;
79+
case Limit limit -> false;
7180
default -> true;
7281
};
7382
}

0 commit comments

Comments
 (0)