Skip to content

Commit d68175c

Browse files
committed
Fix subquery parsing
Refactor Subquery from Expression into LogicalPlan. Duration parsing is wip.
1 parent 6963c07 commit d68175c

File tree

4 files changed

+17
-59
lines changed

4 files changed

+17
-59
lines changed

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/promql/subquery/Subquery.java

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,27 @@
1010
import org.elasticsearch.common.io.stream.StreamOutput;
1111
import org.elasticsearch.core.TimeValue;
1212
import org.elasticsearch.xpack.esql.EsqlIllegalArgumentException;
13-
import org.elasticsearch.xpack.esql.core.expression.Expression;
14-
import org.elasticsearch.xpack.esql.core.expression.UnaryExpression;
1513
import org.elasticsearch.xpack.esql.core.tree.NodeInfo;
1614
import org.elasticsearch.xpack.esql.core.tree.Source;
17-
import org.elasticsearch.xpack.esql.core.type.DataType;
18-
import org.elasticsearch.xpack.esql.expression.promql.types.PromqlDataTypes;
15+
import org.elasticsearch.xpack.esql.plan.logical.LogicalPlan;
16+
import org.elasticsearch.xpack.esql.plan.logical.UnaryPlan;
1917
import org.elasticsearch.xpack.esql.plan.logical.promql.selector.Evaluation;
2018

2119
import java.io.IOException;
2220
import java.util.Objects;
2321

24-
public class Subquery extends UnaryExpression {
22+
public class Subquery extends UnaryPlan {
2523
private final TimeValue range;
2624
private final TimeValue resolution;
2725
private final Evaluation evaluation;
2826

29-
public Subquery(Source source, Expression query, TimeValue range, TimeValue resolution, Evaluation evaluation) {
30-
super(source, query);
27+
public Subquery(Source source, LogicalPlan child, TimeValue range, TimeValue resolution, Evaluation evaluation) {
28+
super(source, child);
3129
this.range = range;
3230
this.resolution = resolution;
3331
this.evaluation = evaluation;
3432
}
3533

36-
public Expression query() {
37-
return child();
38-
}
39-
4034
public TimeValue range() {
4135
return range;
4236
}
@@ -50,8 +44,8 @@ public Evaluation evaluation() {
5044
}
5145

5246
@Override
53-
public DataType dataType() {
54-
return PromqlDataTypes.RANGE_VECTOR;
47+
public boolean expressionsResolved() {
48+
return true;
5549
}
5650

5751
@Override
@@ -60,7 +54,7 @@ protected NodeInfo<Subquery> info() {
6054
}
6155

6256
@Override
63-
protected Subquery replaceChild(Expression newChild) {
57+
public Subquery replaceChild(LogicalPlan newChild) {
6458
return new Subquery(source(), newChild, range, resolution, evaluation);
6559
}
6660

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/promql/types/PromqlDataTypes.java

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

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/parser/promql/PromqlExpressionBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public String visitLabelName(LabelNameContext ctx) {
106106
@Override
107107
public Evaluation visitEvaluation(EvaluationContext ctx) {
108108
if (ctx == null) {
109-
return null;
109+
return Evaluation.NONE;
110110
}
111111

112112
TimeValue offset = null;

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/promql/PromqlAstTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ public void testUnsupportedQueries() throws Exception {
7272
}
7373
}
7474

75+
//@AwaitsFix(bugUrl = "placeholder for individual queries")
76+
public void testSingleQuery() throws Exception {
77+
String query = """
78+
rate(http_requests_total[5m])[30m:1m]
79+
""";
80+
new PromqlParser().createStatement(query);
81+
}
82+
7583
static List<Tuple<String, Integer>> readQueries(String source) throws Exception {
7684
var urls = EsqlTestUtils.classpathResources(source);
7785
assertThat(urls, not(empty()));

0 commit comments

Comments
 (0)