Skip to content

Commit f187139

Browse files
Fix some of the failing UTs
1 parent 408c8fd commit f187139

File tree

10 files changed

+26
-24
lines changed

10 files changed

+26
-24
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,8 @@ public static void postOptimizationVerificationQuery(Failures failures, Expressi
8585
failures.add(fail(queryField, "Query must be a valid string in [{}], found [{}]", sourceText, queryField));
8686
}
8787
if (queryField instanceof Literal literal) {
88-
String value = BytesRefs.toString(literal.value());
89-
if (value == null) {
90-
failures.add(fail(queryField, "Invalid query value in [{}], found [{}]", sourceText, value));
88+
if (literal.value() == null) {
89+
failures.add(fail(queryField, "Invalid query value in [{}], found [{}]", sourceText, literal.value()));
9190
}
9291
} else {
9392
// it is expected that the expression is a literal after folding
@@ -97,6 +96,15 @@ public static void postOptimizationVerificationQuery(Failures failures, Expressi
9796
}
9897

9998
public static Object queryAsObject(Expression queryField, String sourceText) {
99+
if (queryField instanceof Literal literal) {
100+
return literal.value();
101+
}
102+
throw new EsqlIllegalArgumentException(
103+
format(null, "Query value must be a constant string in [{}], found [{}]", sourceText, queryField)
104+
);
105+
}
106+
107+
public static String queryAsString(Expression queryField, String sourceText) {
100108
if (queryField instanceof Literal literal) {
101109
return BytesRefs.toString(literal.value());
102110
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/FullTextFunction.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,6 @@ public Expression query() {
133133
return query;
134134
}
135135

136-
/**
137-
* Returns the resulting query as an object
138-
*
139-
* @return query expression as an object
140-
*/
141-
public Object queryAsObject() {
142-
return FunctionUtils.queryAsObject(query(), sourceText());
143-
}
144-
145136
@Override
146137
public Nullability nullable() {
147138
return Nullability.FALSE;

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/Kql.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
2121
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
2222
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
23+
import org.elasticsearch.xpack.esql.expression.function.FunctionUtils;
2324
import org.elasticsearch.xpack.esql.expression.function.Param;
2425
import org.elasticsearch.xpack.esql.io.stream.PlanStreamInput;
2526
import org.elasticsearch.xpack.esql.planner.TranslatorHandler;
@@ -94,7 +95,7 @@ protected NodeInfo<? extends Expression> info() {
9495

9596
@Override
9697
protected Query translate(TranslatorHandler handler) {
97-
return new KqlQuery(source(), Objects.toString(queryAsObject()));
98+
return new KqlQuery(source(), FunctionUtils.queryAsString(query(), sourceText()));
9899
}
99100

100101
@Override

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/Match.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
3131
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
3232
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
33+
import org.elasticsearch.xpack.esql.expression.function.FunctionUtils;
3334
import org.elasticsearch.xpack.esql.expression.function.MapParam;
3435
import org.elasticsearch.xpack.esql.expression.function.OptionalArgument;
3536
import org.elasticsearch.xpack.esql.expression.function.Param;
@@ -403,9 +404,8 @@ public BiConsumer<LogicalPlan, Failures> postAnalysisPlanVerification() {
403404
};
404405
}
405406

406-
@Override
407407
public Object queryAsObject() {
408-
Object queryAsObject = super.queryAsObject();
408+
Object queryAsObject = FunctionUtils.queryAsObject(query(), sourceText());
409409

410410
// Convert BytesRef to string for string-based values
411411
if (queryAsObject instanceof BytesRef bytesRef) {

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/MatchPhrase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
2828
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
2929
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
30+
import org.elasticsearch.xpack.esql.expression.function.FunctionUtils;
3031
import org.elasticsearch.xpack.esql.expression.function.MapParam;
3132
import org.elasticsearch.xpack.esql.expression.function.OptionalArgument;
3233
import org.elasticsearch.xpack.esql.expression.function.Param;
@@ -260,9 +261,8 @@ public BiConsumer<LogicalPlan, Failures> postAnalysisPlanVerification() {
260261
};
261262
}
262263

263-
@Override
264264
public Object queryAsObject() {
265-
Object queryAsObject = super.queryAsObject();
265+
Object queryAsObject = FunctionUtils.queryAsObject(query(), sourceText());
266266

267267
// Convert BytesRef to string for string-based values
268268
if (queryAsObject instanceof BytesRef bytesRef) {

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/MultiMatch.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
2828
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
2929
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
30+
import org.elasticsearch.xpack.esql.expression.function.FunctionUtils;
3031
import org.elasticsearch.xpack.esql.expression.function.MapParam;
3132
import org.elasticsearch.xpack.esql.expression.function.OptionalArgument;
3233
import org.elasticsearch.xpack.esql.expression.function.Param;
@@ -343,7 +344,7 @@ protected Query translate(TranslatorHandler handler) {
343344
String fieldName = Match.getNameFromFieldAttribute(fieldAttribute);
344345
fieldsWithBoost.put(fieldName, 1.0f);
345346
}
346-
return new MultiMatchQuery(source(), Objects.toString(queryAsObject()), fieldsWithBoost, getOptions());
347+
return new MultiMatchQuery(source(), FunctionUtils.queryAsString(query(), sourceText()), fieldsWithBoost, getOptions());
347348
}
348349

349350
@Override

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/QueryString.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
2525
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
2626
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
27+
import org.elasticsearch.xpack.esql.expression.function.FunctionUtils;
2728
import org.elasticsearch.xpack.esql.expression.function.MapParam;
2829
import org.elasticsearch.xpack.esql.expression.function.OptionalArgument;
2930
import org.elasticsearch.xpack.esql.expression.function.Param;
@@ -355,7 +356,7 @@ protected NodeInfo<? extends Expression> info() {
355356

356357
@Override
357358
protected Query translate(TranslatorHandler handler) {
358-
return new QueryStringQuery(source(), Objects.toString(queryAsObject()), Map.of(), queryStringOptions());
359+
return new QueryStringQuery(source(), FunctionUtils.queryAsString(query(), sourceText()), Map.of(), queryStringOptions());
359360
}
360361

361362
@Override

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/fulltext/Term.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesTo;
2626
import org.elasticsearch.xpack.esql.expression.function.FunctionAppliesToLifecycle;
2727
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
28+
import org.elasticsearch.xpack.esql.expression.function.FunctionUtils;
2829
import org.elasticsearch.xpack.esql.expression.function.Param;
2930
import org.elasticsearch.xpack.esql.io.stream.PlanStreamInput;
3031
import org.elasticsearch.xpack.esql.plan.logical.LogicalPlan;
@@ -132,7 +133,7 @@ protected TypeResolutions.ParamOrdinal queryParamOrdinal() {
132133
@Override
133134
protected Query translate(TranslatorHandler handler) {
134135
// Uses a term query that contributes to scoring
135-
return new TermQuery(source(), ((FieldAttribute) field()).name(), queryAsObject(), false, true);
136+
return new TermQuery(source(), ((FieldAttribute) field()).name(), FunctionUtils.queryAsObject(query(), sourceText()), false, true);
136137
}
137138

138139
@Override

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/vector/Knn.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ private Map<String, Object> knnQueryOptions() throws InvalidArgumentException {
247247
return matchOptions;
248248
}
249249

250-
@Override
251250
public List<Number> queryAsObject() {
252251
// we need to check that we got a list and every element in the list is a number
253252
Expression query = query();

x-pack/plugin/src/yamlRestTest/resources/rest-api-spec/test/esql/230_folding.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ SAMPLE function with constant folding:
141141

142142
---
143143

144-
Sample function with negative limit value after folding:
144+
SAMPLE function with negative limit value after folding:
145145
- do:
146146
catch: bad_request
147147
esql.query:
@@ -156,7 +156,7 @@ Sample function with negative limit value after folding:
156156

157157
---
158158

159-
Match function with foldable query:
159+
MATCH function with foldable query:
160160
- do:
161161
esql.query:
162162
body:
@@ -179,7 +179,7 @@ Match function with foldable query:
179179

180180
---
181181

182-
Match function with non-foldable query:
182+
MATCH function with non-foldable query:
183183
- do:
184184
catch: bad_request
185185
esql.query:

0 commit comments

Comments
 (0)