Skip to content

Commit fa72e53

Browse files
ES|QL: fix ENRICH validation for use of wildcards (#121911) (#122019)
1 parent a2fb5c4 commit fa72e53

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

docs/changelog/121911.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 121911
2+
summary: Fix ENRICH validation for use of wildcards
3+
area: ES|QL
4+
type: bug
5+
issues: []

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -795,9 +795,9 @@ public NamedExpression visitEnrichWithClause(EsqlBaseParser.EnrichWithClauseCont
795795

796796
private NamedExpression enrichFieldName(EsqlBaseParser.QualifiedNamePatternContext ctx) {
797797
return visitQualifiedNamePattern(ctx, ne -> {
798-
if (ne instanceof UnresolvedNamePattern up) {
798+
if (ne instanceof UnresolvedNamePattern || ne instanceof UnresolvedStar) {
799799
var src = ne.source();
800-
throw new ParsingException(src, "Using wildcards [*] in ENRICH WITH projections is not allowed [{}]", up.pattern());
800+
throw new ParsingException(src, "Using wildcards [*] in ENRICH WITH projections is not allowed, found [{}]", src.text());
801801
}
802802
});
803803
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,11 @@ public PlanFactory visitEnrichCommand(EsqlBaseParser.EnrichCommandContext ctx) {
438438
: matchField instanceof UnresolvedStar ? WILDCARD
439439
: null;
440440
if (patternString != null) {
441-
throw new ParsingException(source, "Using wildcards [*] in ENRICH WITH projections is not allowed [{}]", patternString);
441+
throw new ParsingException(
442+
source,
443+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [{}]",
444+
patternString
445+
);
442446
}
443447

444448
List<NamedExpression> keepClauses = visitList(this, ctx.enrichWithClause(), NamedExpression.class);

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

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,15 +1087,28 @@ public void testEnrich() {
10871087
processingCommand("enrich _" + mode.name() + ":countries ON country_code")
10881088
);
10891089

1090-
expectError("from a | enrich countries on foo* ", "Using wildcards [*] in ENRICH WITH projections is not allowed [foo*]");
1091-
expectError("from a | enrich countries on foo with bar*", "Using wildcards [*] in ENRICH WITH projections is not allowed [bar*]");
1090+
expectError("from a | enrich countries on foo* ", "Using wildcards [*] in ENRICH WITH projections is not allowed, found [foo*]");
1091+
expectError("from a | enrich countries on * ", "Using wildcards [*] in ENRICH WITH projections is not allowed, found [*]");
1092+
expectError(
1093+
"from a | enrich countries on foo with bar*",
1094+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [bar*]"
1095+
);
1096+
expectError("from a | enrich countries on foo with *", "Using wildcards [*] in ENRICH WITH projections is not allowed, found [*]");
10921097
expectError(
10931098
"from a | enrich countries on foo with x = bar* ",
1094-
"Using wildcards [*] in ENRICH WITH projections is not allowed [bar*]"
1099+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [bar*]"
1100+
);
1101+
expectError(
1102+
"from a | enrich countries on foo with x = * ",
1103+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [*]"
10951104
);
10961105
expectError(
10971106
"from a | enrich countries on foo with x* = bar ",
1098-
"Using wildcards [*] in ENRICH WITH projections is not allowed [x*]"
1107+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [x*]"
1108+
);
1109+
expectError(
1110+
"from a | enrich countries on foo with * = bar ",
1111+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [*]"
10991112
);
11001113
expectError(
11011114
"from a | enrich typo:countries on foo",
@@ -1979,7 +1992,7 @@ public void testParamInInvalidPosition() {
19791992
expectError(
19801993
"from idx1 | " + enrich,
19811994
List.of(paramAsPattern("f1", pattern), paramAsIdentifier("f2", "f.2"), paramAsIdentifier("f3", "f.3*")),
1982-
"Using wildcards [*] in ENRICH WITH projections is not allowed [" + pattern + "]"
1995+
"Using wildcards [*] in ENRICH WITH projections is not allowed, found [" + pattern + "]"
19831996
);
19841997
expectError(
19851998
"from idx1 | " + enrich,

0 commit comments

Comments
 (0)