Skip to content

[main]Prepare Index Like fix for backport to 9.1 and 8.19 #130947

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jul 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/changelog/130947.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pr: 130947
summary: "[main]Prepare Index Like fix for backport to 9.1 and 8.19"
area: ES|QL
type: bug
issues: []
2 changes: 2 additions & 0 deletions server/src/main/java/org/elasticsearch/TransportVersions.java
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ static TransportVersion def(int id) {
public static final TransportVersion ESQL_DOCUMENTS_FOUND_AND_VALUES_LOADED_8_19 = def(8_841_0_61);
public static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN_8_19 = def(8_841_0_62);
public static final TransportVersion ESQL_SPLIT_ON_BIG_VALUES_8_19 = def(8_841_0_63);
public static final TransportVersion ESQL_FIXED_INDEX_LIKE_8_19 = def(8_841_0_64);
public static final TransportVersion V_9_0_0 = def(9_000_0_09);
public static final TransportVersion INITIAL_ELASTICSEARCH_9_0_1 = def(9_000_0_10);
public static final TransportVersion INITIAL_ELASTICSEARCH_9_0_2 = def(9_000_0_11);
Expand Down Expand Up @@ -328,6 +329,7 @@ static TransportVersion def(int id) {
public static final TransportVersion ESQL_PROFILE_INCLUDE_PLAN = def(9_111_0_00);
public static final TransportVersion MAPPINGS_IN_DATA_STREAMS = def(9_112_0_00);
public static final TransportVersion ESQL_SPLIT_ON_BIG_VALUES_9_1 = def(9_112_0_01);
public static final TransportVersion ESQL_FIXED_INDEX_LIKE_9_1 = def(9_112_0_02);
// Below is the first version in 9.2 and NOT in 9.1.
public static final TransportVersion PROJECT_STATE_REGISTRY_RECORDS_DELETIONS = def(9_113_0_00);
public static final TransportVersion ESQL_SERIALIZE_TIMESERIES_FIELD_TYPE = def(9_114_0_00);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public WildcardQueryBuilder(StreamInput in) throws IOException {
value = in.readString();
rewrite = in.readOptionalString();
caseInsensitive = in.readBoolean();
if (in.getTransportVersion().onOrAfter(TransportVersions.ESQL_FIXED_INDEX_LIKE)) {
if (expressionTransportSupported(in.getTransportVersion())) {
forceStringMatch = in.readBoolean();
} else {
forceStringMatch = false;
Expand All @@ -117,11 +117,20 @@ protected void doWriteTo(StreamOutput out) throws IOException {
out.writeString(value);
out.writeOptionalString(rewrite);
out.writeBoolean(caseInsensitive);
if (out.getTransportVersion().onOrAfter(TransportVersions.ESQL_FIXED_INDEX_LIKE)) {
if (expressionTransportSupported(out.getTransportVersion())) {
out.writeBoolean(forceStringMatch);
}
}

/**
* Returns true if the Transport version is compatible with ESQL_FIXED_INDEX_LIKE
*/
public static boolean expressionTransportSupported(TransportVersion version) {
return version.onOrAfter(TransportVersions.ESQL_FIXED_INDEX_LIKE)
|| version.isPatchFrom(TransportVersions.ESQL_FIXED_INDEX_LIKE_8_19)
|| version.isPatchFrom(TransportVersions.ESQL_FIXED_INDEX_LIKE_9_1);
}

@Override
public String fieldName() {
return fieldName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.apache.lucene.util.automaton.Automaton;
import org.apache.lucene.util.automaton.CharacterRunAutomaton;
import org.elasticsearch.TransportVersion;
import org.elasticsearch.TransportVersions;
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.common.io.stream.StreamOutput;
Expand All @@ -35,6 +34,8 @@
import java.util.function.Supplier;
import java.util.stream.Collectors;

import static org.elasticsearch.index.query.WildcardQueryBuilder.expressionTransportSupported;

public class WildcardLikeList extends RegexMatch<WildcardPatternList> {
public static final NamedWriteableRegistry.Entry ENTRY = new NamedWriteableRegistry.Entry(
Expression.class,
Expand Down Expand Up @@ -145,7 +146,7 @@ public Query asQuery(LucenePushdownPredicates pushdownPredicates, TranslatorHand
}

private boolean supportsPushdown(TransportVersion version) {
return version == null || version.onOrAfter(TransportVersions.ESQL_FIXED_INDEX_LIKE);
return version == null || expressionTransportSupported(version);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

import java.io.IOException;

import static org.elasticsearch.index.query.WildcardQueryBuilder.expressionTransportSupported;

/**
* A {@link QueryBuilder} that wraps another {@linkplain QueryBuilder}
* so it read with a {@link PlanStreamInput}.
Expand Down Expand Up @@ -56,6 +58,11 @@ public TransportVersion getMinimalSupportedVersion() {
return TransportVersions.ESQL_FIXED_INDEX_LIKE;
}

@Override
public boolean supportsVersion(TransportVersion version) {
return expressionTransportSupported(version);
}

@Override
public Query toQuery(SearchExecutionContext context) throws IOException {
return next.toQuery(context);
Expand Down
Loading