Skip to content

Commit 65a79b6

Browse files
elasticsearchmachineLukas Wegmann
and
Lukas Wegmann
authored
QL: Make UnaryPlan.replaceChild public and use it where appropriate (elastic#76071) (elastic#76154)
Co-authored-by: Lukas Wegmann <[email protected]>
1 parent b213bcb commit 65a79b6

File tree

19 files changed

+22
-25
lines changed

19 files changed

+22
-25
lines changed

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/optimizer/Optimizer.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import java.util.Objects;
6666

6767
import static java.util.Arrays.asList;
68-
import static java.util.Collections.singletonList;
6968
import static java.util.stream.Collectors.toList;
7069
import static org.elasticsearch.xpack.ql.optimizer.OptimizerRules.PropagateNullable;
7170

@@ -448,13 +447,13 @@ protected LogicalPlan rule(OrderBy orderBy) {
448447
// preserve the order for the base query, everything else needs to be ascending
449448
List<Order> pushedOrder = baseFilter ? orderBy.order() : ascendingOrders;
450449
OrderBy order = new OrderBy(filter.source(), filter.child(), pushedOrder);
451-
orderedQueries.add((KeyedFilter) filter.replaceChildrenSameSize(singletonList(order)));
450+
orderedQueries.add(filter.replaceChild(order));
452451
baseFilter = false;
453452
}
454453

455454
KeyedFilter until = join.until();
456455
OrderBy order = new OrderBy(until.source(), until.child(), ascendingOrders);
457-
until = (KeyedFilter) until.replaceChildrenSameSize(singletonList(order));
456+
until = until.replaceChild(order);
458457

459458
OrderDirection direction = orderBy.order().get(0).direction();
460459
plan = join.with(orderedQueries, until, direction);

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plan/logical/Head.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ protected NodeInfo<Limit> info() {
2525
}
2626

2727
@Override
28-
protected Head replaceChild(LogicalPlan newChild) {
28+
public Head replaceChild(LogicalPlan newChild) {
2929
return new Head(source(), limit(), newChild);
3030
}
3131
}

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plan/logical/KeyedFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ protected NodeInfo<KeyedFilter> info() {
4343
}
4444

4545
@Override
46-
protected KeyedFilter replaceChild(LogicalPlan newChild) {
46+
public KeyedFilter replaceChild(LogicalPlan newChild) {
4747
return new KeyedFilter(source(), newChild, keys, timestamp, tiebreaker);
4848
}
4949

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plan/logical/LimitWithOffset.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected NodeInfo<Limit> info() {
3434
}
3535

3636
@Override
37-
protected LimitWithOffset replaceChild(LogicalPlan newChild) {
37+
public LimitWithOffset replaceChild(LogicalPlan newChild) {
3838
return new LimitWithOffset(source(), limit(), offset, newChild);
3939
}
4040

x-pack/plugin/eql/src/main/java/org/elasticsearch/xpack/eql/plan/logical/Tail.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected NodeInfo<Limit> info() {
3333
}
3434

3535
@Override
36-
protected Tail replaceChild(LogicalPlan newChild) {
36+
public Tail replaceChild(LogicalPlan newChild) {
3737
return new Tail(source(), newChild, limit());
3838
}
3939
}

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/optimizer/OptimizerRules.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@
6868

6969
import static java.lang.Math.signum;
7070
import static java.util.Arrays.asList;
71-
import static java.util.Collections.singletonList;
7271
import static org.elasticsearch.xpack.ql.expression.Literal.FALSE;
7372
import static org.elasticsearch.xpack.ql.expression.Literal.TRUE;
7473
import static org.elasticsearch.xpack.ql.expression.predicate.Predicates.combineAnd;
@@ -1207,14 +1206,12 @@ else if (child instanceof UnaryPlan) {
12071206
}
12081207
// if at least one expression can be pushed down, update the tree
12091208
if (conjunctions.size() > 0) {
1210-
child = child.replaceChildrenSameSize(
1211-
singletonList(filter.with(unary.child(), Predicates.combineAnd(conjunctions)))
1212-
);
1209+
child = unary.replaceChild(filter.with(unary.child(), Predicates.combineAnd(conjunctions)));
12131210
plan = filter.with(child, Predicates.combineAnd(inPlace));
12141211
}
12151212
} else {
12161213
// push down filter
1217-
plan = child.replaceChildrenSameSize(singletonList(filter.with(unary.child(), condition)));
1214+
plan = unary.replaceChild(filter.with(unary.child(), condition));
12181215
}
12191216
}
12201217

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/plan/logical/Aggregate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected NodeInfo<Aggregate> info() {
3434
}
3535

3636
@Override
37-
protected Aggregate replaceChild(LogicalPlan newChild) {
37+
public Aggregate replaceChild(LogicalPlan newChild) {
3838
return new Aggregate(source(), newChild, groupings, aggregates);
3939
}
4040

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/plan/logical/Filter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ protected NodeInfo<Filter> info() {
3232
}
3333

3434
@Override
35-
protected Filter replaceChild(LogicalPlan newChild) {
35+
public Filter replaceChild(LogicalPlan newChild) {
3636
return new Filter(source(), newChild, condition);
3737
}
3838

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/plan/logical/Limit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ protected NodeInfo<Limit> info() {
2727
}
2828

2929
@Override
30-
protected Limit replaceChild(LogicalPlan newChild) {
30+
public Limit replaceChild(LogicalPlan newChild) {
3131
return new Limit(source(), limit, newChild);
3232
}
3333

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/plan/logical/OrderBy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected NodeInfo<OrderBy> info() {
2929
}
3030

3131
@Override
32-
protected OrderBy replaceChild(LogicalPlan newChild) {
32+
public OrderBy replaceChild(LogicalPlan newChild) {
3333
return new OrderBy(source(), newChild, order);
3434
}
3535

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/plan/logical/Project.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ protected NodeInfo<Project> info() {
3535
}
3636

3737
@Override
38-
protected Project replaceChild(LogicalPlan newChild) {
38+
public Project replaceChild(LogicalPlan newChild) {
3939
return new Project(source(), newChild, projections);
4040
}
4141

x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/plan/logical/UnaryPlan.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public final UnaryPlan replaceChildren(List<LogicalPlan> newChildren) {
3131
return replaceChild(newChildren.get(0));
3232
}
3333

34-
protected abstract UnaryPlan replaceChild(LogicalPlan newChild);
34+
public abstract UnaryPlan replaceChild(LogicalPlan newChild);
3535

3636
public LogicalPlan child() {
3737
return child;

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/analysis/analyzer/Analyzer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,8 @@ private static LogicalPlan propagateMissing(LogicalPlan plan, AttributeSet missi
784784

785785
// LeafPlans are tables and BinaryPlans are joins so pushing can only happen on unary
786786
if (plan instanceof UnaryPlan) {
787-
return plan.replaceChildrenSameSize(singletonList(propagateMissing(((UnaryPlan) plan).child(), missing, failed)));
787+
UnaryPlan unary = (UnaryPlan) plan;
788+
return unary.replaceChild(propagateMissing(unary.child(), missing, failed));
788789
}
789790

790791
failed.addAll(missing);

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/optimizer/Optimizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1240,7 +1240,7 @@ static class SkipQueryForLiteralAggregations extends OptimizerRule<Aggregate> {
12401240
@Override
12411241
protected LogicalPlan rule(Aggregate plan) {
12421242
if (plan.groupings().isEmpty() && plan.child() instanceof EsRelation && plan.aggregates().stream().allMatch(this::foldable)) {
1243-
return plan.replaceChildrenSameSize(singletonList(new LocalRelation(plan.source(), new SingletonExecutable())));
1243+
return plan.replaceChild(new LocalRelation(plan.source(), new SingletonExecutable()));
12441244
}
12451245

12461246
return plan;

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/Distinct.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ protected NodeInfo<Distinct> info() {
2323
}
2424

2525
@Override
26-
protected Distinct replaceChild(LogicalPlan newChild) {
26+
public Distinct replaceChild(LogicalPlan newChild) {
2727
return new Distinct(source(), newChild);
2828
}
2929

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/Having.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protected NodeInfo<Filter> info() {
2929
}
3030

3131
@Override
32-
protected Having replaceChild(LogicalPlan newChild) {
32+
public Having replaceChild(LogicalPlan newChild) {
3333
return new Having(source(), newChild, condition());
3434
}
3535

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/Pivot.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ protected NodeInfo<Pivot> info() {
7474
}
7575

7676
@Override
77-
protected Pivot replaceChild(LogicalPlan newChild) {
77+
public Pivot replaceChild(LogicalPlan newChild) {
7878
return new Pivot(source(), newChild, column, values, aggregates, grouping);
7979
}
8080

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/SubQueryAlias.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected NodeInfo<SubQueryAlias> info() {
3333
}
3434

3535
@Override
36-
protected SubQueryAlias replaceChild(LogicalPlan newChild) {
36+
public SubQueryAlias replaceChild(LogicalPlan newChild) {
3737
return new SubQueryAlias(source(), newChild, alias);
3838
}
3939

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/plan/logical/With.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ protected NodeInfo<With> info() {
2828
}
2929

3030
@Override
31-
protected With replaceChild(LogicalPlan newChild) {
31+
public With replaceChild(LogicalPlan newChild) {
3232
return new With(source(), newChild, subQueries);
3333
}
3434

0 commit comments

Comments
 (0)