Skip to content

Commit df8c8bc

Browse files
ES|QL: Remove Pipe (Processor) logic from ESQL-core (#108963)
Pipe logic is not used in ES|QL. This PR also moves some tests to ES|QL, making sure that they run using the implementation that matter to us (eg. `esql...Add`/`Sub`... rather than `esql.core...Add`/`Sub`...)
1 parent 13f1a96 commit df8c8bc

File tree

48 files changed

+81
-2340
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+81
-2340
lines changed

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/Expressions.java

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,11 @@
77
package org.elasticsearch.xpack.esql.core.expression;
88

99
import org.elasticsearch.core.Tuple;
10-
import org.elasticsearch.xpack.esql.core.QlIllegalArgumentException;
11-
import org.elasticsearch.xpack.esql.core.expression.function.Function;
12-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.AttributeInput;
13-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.ConstantInput;
14-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.Pipe;
1510
import org.elasticsearch.xpack.esql.core.type.DataTypes;
1611

1712
import java.util.ArrayList;
1813
import java.util.Collection;
19-
import java.util.LinkedHashSet;
2014
import java.util.List;
21-
import java.util.Set;
2215
import java.util.function.Predicate;
2316

2417
import static java.util.Collections.emptyList;
@@ -182,59 +175,6 @@ public static List<Tuple<Attribute, Expression>> aliases(List<? extends NamedExp
182175
return aliases;
183176
}
184177

185-
public static boolean hasReferenceAttribute(Collection<Attribute> output) {
186-
for (Attribute attribute : output) {
187-
if (attribute instanceof ReferenceAttribute) {
188-
return true;
189-
}
190-
}
191-
return false;
192-
}
193-
194-
public static List<Attribute> onlyPrimitiveFieldAttributes(Collection<Attribute> attributes) {
195-
List<Attribute> filtered = new ArrayList<>();
196-
// add only primitives
197-
// but filter out multi fields (allow only the top-level value)
198-
Set<Attribute> seenMultiFields = new LinkedHashSet<>();
199-
200-
for (Attribute a : attributes) {
201-
if (DataTypes.isUnsupported(a.dataType()) == false && DataTypes.isPrimitive(a.dataType())) {
202-
if (a instanceof FieldAttribute fa) {
203-
// skip nested fields and seen multi-fields
204-
if (fa.isNested() == false && seenMultiFields.contains(fa.parent()) == false) {
205-
filtered.add(a);
206-
seenMultiFields.add(a);
207-
}
208-
} else {
209-
filtered.add(a);
210-
}
211-
}
212-
}
213-
214-
return filtered;
215-
}
216-
217-
public static Pipe pipe(Expression e) {
218-
if (e.foldable()) {
219-
return new ConstantInput(e.source(), e, e.fold());
220-
}
221-
if (e instanceof NamedExpression ne) {
222-
return new AttributeInput(e.source(), e, ne.toAttribute());
223-
}
224-
if (e instanceof Function f) {
225-
return f.asPipe();
226-
}
227-
throw new QlIllegalArgumentException("Cannot create pipe for {}", e);
228-
}
229-
230-
public static List<Pipe> pipe(List<Expression> expressions) {
231-
List<Pipe> pipes = new ArrayList<>(expressions.size());
232-
for (Expression e : expressions) {
233-
pipes.add(pipe(e));
234-
}
235-
return pipes;
236-
}
237-
238178
public static String id(Expression e) {
239179
return Integer.toHexString(e.hashCode());
240180
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/function/Function.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import org.elasticsearch.xpack.esql.core.expression.Expression;
1010
import org.elasticsearch.xpack.esql.core.expression.Expressions;
1111
import org.elasticsearch.xpack.esql.core.expression.Nullability;
12-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.ConstantInput;
13-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.Pipe;
1412
import org.elasticsearch.xpack.esql.core.tree.Source;
1513

1614
import java.util.List;
@@ -26,8 +24,6 @@ public abstract class Function extends Expression {
2624

2725
private final String functionName = getClass().getSimpleName().toUpperCase(Locale.ROOT);
2826

29-
private Pipe lazyPipe = null;
30-
3127
// TODO: Functions supporting distinct should add a dedicated constructor Location, List<Expression>, boolean
3228
protected Function(Source source, List<Expression> children) {
3329
super(source, children);
@@ -65,17 +61,6 @@ public boolean equals(Object obj) {
6561
return Objects.equals(children(), other.children());
6662
}
6763

68-
public Pipe asPipe() {
69-
if (lazyPipe == null) {
70-
lazyPipe = foldable() ? new ConstantInput(source(), this, fold()) : makePipe();
71-
}
72-
return lazyPipe;
73-
}
74-
75-
protected Pipe makePipe() {
76-
throw new UnsupportedOperationException();
77-
}
78-
7964
@Override
8065
public String nodeString() {
8166
StringJoiner sj = new StringJoiner(",", functionName() + "(", ")");

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/function/scalar/BaseSurrogateFunction.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
package org.elasticsearch.xpack.esql.core.expression.function.scalar;
99

1010
import org.elasticsearch.xpack.esql.core.expression.Expression;
11-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.Pipe;
1211
import org.elasticsearch.xpack.esql.core.tree.Source;
1312

1413
import java.util.List;
@@ -45,8 +44,4 @@ public Object fold() {
4544
return substitute().fold();
4645
}
4746

48-
@Override
49-
protected Pipe makePipe() {
50-
return substitute().asPipe();
51-
}
5247
}

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/function/scalar/UnaryScalarFunction.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@
77
package org.elasticsearch.xpack.esql.core.expression.function.scalar;
88

99
import org.elasticsearch.xpack.esql.core.expression.Expression;
10-
import org.elasticsearch.xpack.esql.core.expression.Expressions;
11-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.Pipe;
12-
import org.elasticsearch.xpack.esql.core.expression.gen.pipeline.UnaryPipe;
1310
import org.elasticsearch.xpack.esql.core.expression.gen.processor.Processor;
1411
import org.elasticsearch.xpack.esql.core.tree.Source;
1512

@@ -42,11 +39,6 @@ public Expression field() {
4239
return field;
4340
}
4441

45-
@Override
46-
public final Pipe makePipe() {
47-
return new UnaryPipe(source(), this, Expressions.pipe(field()), makeProcessor());
48-
}
49-
5042
protected abstract Processor makeProcessor();
5143

5244
@Override

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/function/scalar/string/StartsWith.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/function/scalar/string/StartsWithFunctionPipe.java

Lines changed: 0 additions & 109 deletions
This file was deleted.

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/gen/pipeline/AggExtractorInput.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

0 commit comments

Comments
 (0)