Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
23cccfa
add support for unmapped_fields=nullify
bpintea Dec 12, 2025
7c820c5
[CI] Auto commit changes from spotless
Dec 12, 2025
2e952db
fix EXPLAIN
bpintea Dec 12, 2025
197c6a6
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 12, 2025
5731106
fix docs
bpintea Dec 12, 2025
ea03cdb
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 16, 2025
9e40fa5
[CI] Auto commit changes from spotless
Dec 16, 2025
be9b671
add support for UnionAll, Fork
bpintea Dec 19, 2025
8003d55
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 19, 2025
7ba67a9
flip setting snapshot-only flag to true
bpintea Dec 19, 2025
0c59d2a
[CI] Auto commit changes from spotless
Dec 19, 2025
685ae96
more tests
bpintea Dec 19, 2025
dd752f9
add spec tests
bpintea Dec 22, 2025
69358a4
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 22, 2025
e4210bc
fix one test
bpintea Dec 22, 2025
dcdef00
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 22, 2025
1eed7b5
Update docs/changelog/139417.yaml
bpintea Dec 22, 2025
c52496b
test stabilization
bpintea Dec 22, 2025
7c6c574
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 22, 2025
889b579
update test failing on unrelated error
bpintea Dec 22, 2025
714b3b3
subquery tests deferred
bpintea Dec 22, 2025
24c5108
Apply review comments
bpintea Dec 26, 2025
d66c479
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 26, 2025
3de3d2d
Add support for loading fields
bpintea Dec 27, 2025
aa1888e
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 27, 2025
b911597
add support for partially mapped fields
bpintea Dec 28, 2025
35231c3
Address review comments
bpintea Dec 30, 2025
ed350a2
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Dec 30, 2025
4dd82be
Introduce a ResolvingProject
bpintea Jan 2, 2026
933e94e
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Jan 2, 2026
d225fa6
[CI] Auto commit changes from spotless
Jan 2, 2026
7487ec0
fix node tests
bpintea Jan 2, 2026
c9ec1dd
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Jan 2, 2026
8588914
Revert ResolvingProject
bpintea Jan 2, 2026
84c65fb
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Jan 2, 2026
b618656
Reintroduce ResolvingProject
bpintea Jan 5, 2026
af6ff18
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
bpintea Jan 5, 2026
7134a06
Add more tests, mark the capability as snapshot
GalLalouche Jan 9, 2026
6973475
Update docs/changelog/140463.yaml
GalLalouche Jan 9, 2026
a4ab5de
Delete docs/changelog/139417.yaml
alex-spies Jan 9, 2026
7b07e11
Merge branch 'main' into feat/set_unmapped_nullify_keyword
GalLalouche Jan 9, 2026
feffc34
Merge branch 'feat/set_unmapped_nullify_keyword' of github.com:GalLal…
GalLalouche Jan 9, 2026
261c62a
More nullify tests with keep/drop/rename
alex-spies Jan 9, 2026
1002ede
Improve ResolvingProject
alex-spies Jan 9, 2026
be28c4b
Simplify resolveKeep/Drop/Rename a little
alex-spies Jan 9, 2026
c21efab
Merge remote-tracking branch 'upstream/main' into feat/set_unmapped_n…
alex-spies Jan 12, 2026
4894794
Remove stale TODO
alex-spies Jan 12, 2026
603d125
Fix SetParserTests
GalLalouche Jan 12, 2026
b833d07
Fix ResolvingProject
GalLalouche Jan 12, 2026
1945cde
Update unmapped fields docs
GalLalouche Jan 12, 2026
58fbe6a
Merge branch 'main' into feat/set_unmapped_nullify_keyword
GalLalouche Jan 12, 2026
75fc9a4
Merge branch 'main' into feat/set_unmapped_nullify_keyword
GalLalouche Jan 12, 2026
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
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@

import static java.util.Collections.emptyMap;
import static org.elasticsearch.xpack.esql.core.type.DataType.TEXT;
import static org.elasticsearch.xpack.esql.plan.QuerySettings.UNMAPPED_FIELDS;

@Fork(1)
@Warmup(iterations = 5)
Expand Down Expand Up @@ -119,7 +120,8 @@ public void setup() {
Map.of(),
new EnrichResolution(),
InferenceResolution.EMPTY,
minimumVersion
minimumVersion,
UNMAPPED_FIELDS.defaultValue()
),
new Verifier(new Metrics(functionRegistry), new XPackLicenseState(() -> 0L))
);
Expand Down
5 changes: 5 additions & 0 deletions docs/changelog/140463.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pr: 140463
summary: "Introduce support for mapping-unavailable fields (Fork from #139417)"
area: ES|QL
type: feature
issues: []

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
import org.elasticsearch.xpack.esql.analysis.AnalyzerSettings;
import org.elasticsearch.xpack.esql.analysis.EnrichResolution;
import org.elasticsearch.xpack.esql.analysis.MutableAnalyzerContext;
import org.elasticsearch.xpack.esql.analysis.UnmappedResolution;
import org.elasticsearch.xpack.esql.analysis.Verifier;
import org.elasticsearch.xpack.esql.core.expression.Alias;
import org.elasticsearch.xpack.esql.core.expression.Attribute;
Expand Down Expand Up @@ -220,6 +221,7 @@
import static org.elasticsearch.xpack.esql.parser.ParserUtils.ParamClassification.IDENTIFIER;
import static org.elasticsearch.xpack.esql.parser.ParserUtils.ParamClassification.PATTERN;
import static org.elasticsearch.xpack.esql.parser.ParserUtils.ParamClassification.VALUE;
import static org.elasticsearch.xpack.esql.plan.QuerySettings.UNMAPPED_FIELDS;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.instanceOf;
Expand Down Expand Up @@ -546,6 +548,26 @@ public static MutableAnalyzerContext testAnalyzerContext(
Map<String, IndexResolution> lookupResolution,
EnrichResolution enrichResolution,
InferenceResolution inferenceResolution
) {
return testAnalyzerContext(
configuration,
functionRegistry,
indexResolutions,
lookupResolution,
enrichResolution,
inferenceResolution,
UNMAPPED_FIELDS.defaultValue()
);
}

public static MutableAnalyzerContext testAnalyzerContext(
Configuration configuration,
EsqlFunctionRegistry functionRegistry,
Map<IndexPattern, IndexResolution> indexResolutions,
Map<String, IndexResolution> lookupResolution,
EnrichResolution enrichResolution,
InferenceResolution inferenceResolution,
UnmappedResolution unmappedResolution
) {
return new MutableAnalyzerContext(
configuration,
Expand All @@ -554,7 +576,8 @@ public static MutableAnalyzerContext testAnalyzerContext(
lookupResolution,
enrichResolution,
inferenceResolution,
randomMinimumVersion()
randomMinimumVersion(),
unmappedResolution
);
}

Expand Down Expand Up @@ -1212,6 +1235,23 @@ static BytesReference randomTsId() {
return routingPathFields.buildHash();
}

// lifted from org.elasticsearch.http.HttpClientStatsTrackerTests
public static String randomizeCase(String s) {
final char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
chars[i] = randomizeCase(chars[i]);
}
return new String(chars);
}

private static char randomizeCase(char c) {
return switch (between(1, 3)) {
case 1 -> Character.toUpperCase(c);
case 2 -> Character.toLowerCase(c);
default -> c;
};
}

public static WildcardLike wildcardLike(Expression left, String exp) {
return new WildcardLike(EMPTY, left, new WildcardPattern(exp), false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,19 @@ public MutableAnalyzerContext(
Map<String, IndexResolution> lookupResolution,
EnrichResolution enrichResolution,
InferenceResolution inferenceResolution,
TransportVersion minimumVersion
TransportVersion minimumVersion,
UnmappedResolution unmappedResolution
) {
super(configuration, functionRegistry, indexResolution, lookupResolution, enrichResolution, inferenceResolution, minimumVersion);
super(
configuration,
functionRegistry,
indexResolution,
lookupResolution,
enrichResolution,
inferenceResolution,
minimumVersion,
unmappedResolution
);
this.currentVersion = minimumVersion;
}

Expand Down
Loading
Loading