Skip to content

Commit 31c59d9

Browse files
Fix transport protocol issues with the unit tests
1 parent 5cef3fb commit 31c59d9

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

server/src/main/java/org/elasticsearch/index/query/WildcardQueryBuilder.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public class WildcardQueryBuilder extends AbstractQueryBuilder<WildcardQueryBuil
5656
private static final ParseField CASE_INSENSITIVE_FIELD = new ParseField("case_insensitive");
5757
private boolean caseInsensitive = DEFAULT_CASE_INSENSITIVITY;
5858

59+
private boolean isForESQL;
60+
5961
/**
6062
* Implements the wildcard search query. Supported wildcards are {@code *}, which
6163
* matches any character sequence (including the empty one), and {@code ?},
@@ -78,6 +80,10 @@ public WildcardQueryBuilder(String fieldName, String value) {
7880
this.value = value;
7981
}
8082

83+
public WildcardQueryBuilder(String fieldName, String value, boolean isForESQL){
84+
this(fieldName, value);
85+
this.isForESQL = isForESQL;
86+
}
8187
/**
8288
* Read from a stream.
8389
*/
@@ -87,6 +93,11 @@ public WildcardQueryBuilder(StreamInput in) throws IOException {
8793
value = in.readString();
8894
rewrite = in.readOptionalString();
8995
caseInsensitive = in.readBoolean();
96+
if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_FIXED_INDEX_LIKE)){
97+
isForESQL = in.readBoolean();
98+
} else {
99+
isForESQL = false;
100+
}
90101
}
91102

92103
@Override
@@ -95,6 +106,9 @@ protected void doWriteTo(StreamOutput out) throws IOException {
95106
out.writeString(value);
96107
out.writeOptionalString(rewrite);
97108
out.writeBoolean(caseInsensitive);
109+
if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_FIXED_INDEX_LIKE)){
110+
out.writeBoolean(isForESQL);
111+
}
98112
}
99113

100114
@Override
@@ -218,7 +232,12 @@ private QueryBuilder maybeRewriteBasedOnConstantFields(@Nullable MappedFieldType
218232
// This logic is correct for all field types, but by only applying it to constant
219233
// fields we also have the guarantee that it doesn't perform I/O, which is important
220234
// since rewrites might happen on a network thread.
221-
Query query = constantFieldType.wildcardQuery(value, caseInsensitive, context); // the rewrite method doesn't matter
235+
Query query;
236+
if(isForESQL) {
237+
query = constantFieldType.wildcardLikeQuery(value, caseInsensitive, context); // the rewrite method doesn't matter
238+
} else {
239+
query = constantFieldType.wildcardQuery(value, caseInsensitive, context); // the rewrite method doesn't matter
240+
}
222241
if (query instanceof MatchAllDocsQuery) {
223242
return new MatchAllQueryBuilder();
224243
} else if (query instanceof MatchNoDocsQuery) {

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/querydsl/query/WildcardQuery.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
package org.elasticsearch.xpack.esql.core.querydsl.query;
88

99
import org.elasticsearch.index.query.QueryBuilder;
10-
import org.elasticsearch.index.query.WildcardLikeQueryBuilder;
10+
import org.elasticsearch.index.query.WildcardQueryBuilder;
1111
import org.elasticsearch.xpack.esql.core.tree.Source;
1212

1313
import java.util.Objects;
@@ -42,7 +42,7 @@ public Boolean caseInsensitive() {
4242

4343
@Override
4444
protected QueryBuilder asBuilder() {
45-
WildcardLikeQueryBuilder wb = new WildcardLikeQueryBuilder(field, query);
45+
WildcardQueryBuilder wb = new WildcardQueryBuilder(field, query, true);
4646
// ES does not allow case_insensitive to be set to "false", it should be either "true" or not specified
4747
return caseInsensitive == false ? wb : wb.caseInsensitive(caseInsensitive);
4848
}

0 commit comments

Comments
 (0)