-
Notifications
You must be signed in to change notification settings - Fork 25.6k
Disallow CCS with lookup join #120277
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
Disallow CCS with lookup join #120277
Changes from 5 commits
1b99a4d
b8cf1b3
b1a0280
5f55608
57a0df6
c9b077e
c6be044
6a94eaf
d283968
66dd33c
343d104
416a8fc
a6aa610
59b78b7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| pr: 120277 | ||
| summary: Disallow CCS with lookup join | ||
| area: ES|QL | ||
| type: enhancement | ||
| issues: [] | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -15,6 +15,7 @@ | |
| import org.elasticsearch.dissect.DissectException; | ||
| import org.elasticsearch.dissect.DissectParser; | ||
| import org.elasticsearch.index.IndexMode; | ||
| import org.elasticsearch.transport.RemoteClusterAware; | ||
| import org.elasticsearch.xpack.esql.VerificationException; | ||
| import org.elasticsearch.xpack.esql.common.Failure; | ||
| import org.elasticsearch.xpack.esql.core.expression.Alias; | ||
|
|
@@ -523,9 +524,15 @@ public PlanFactory visitJoinCommand(EsqlBaseParser.JoinCommandContext ctx) { | |
| } | ||
|
|
||
| var target = ctx.joinTarget(); | ||
| var rightPattern = visitIdentifier(target.index); | ||
|
|
||
| if (RemoteClusterAware.isRemoteIndexName(rightPattern)) { | ||
| throw new ParsingException(source(target), "LOOKUP JOIN does not support remote cluster indices [{}]", rightPattern); | ||
| } | ||
|
||
|
|
||
| UnresolvedRelation right = new UnresolvedRelation( | ||
| source(target), | ||
| new TableIdentifier(source(target.index), null, visitIdentifier(target.index)), | ||
| new TableIdentifier(source(target.index), null, rightPattern), | ||
| false, | ||
| emptyList(), | ||
| IndexMode.LOOKUP, | ||
|
|
@@ -552,6 +559,18 @@ public PlanFactory visitJoinCommand(EsqlBaseParser.JoinCommandContext ctx) { | |
| throw new ParsingException(source, "JOIN ON clause only supports one field at the moment, found [{}]", matchFieldsCount); | ||
| } | ||
|
|
||
| return p -> new LookupJoin(source, p, right, joinFields); | ||
| return p -> { | ||
| p.forEachUp(UnresolvedRelation.class, r -> { | ||
| if (RemoteClusterAware.isRemoteIndexName(r.table().index())) { | ||
|
||
| throw new ParsingException( | ||
| source(target), | ||
| "LOOKUP JOIN does not support remote cluster indices [{}]", | ||
| r.table().index() | ||
| ); | ||
| } | ||
| }); | ||
|
|
||
| return new LookupJoin(source, p, right, joinFields); | ||
| }; | ||
| } | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I'd declare this as
non-issueand would remove the changelog. It's not really an enhancement, anyway :)