feat: Add SQL support for INTERSECT
and EXCEPT
ops
#16960
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Features
EXCEPT
1 andINTERSECT
2 ops.ARRAY_TO_STRING
so that it works with non-string arrays (casts inner type).TABLE xyz
3 PostgreSQL shortcut syntax.SQLSyntaxError
message tidy-ups.Also
sqlparser-rs
to the latest released version (0.47.0); this actually turned into majority of the PR, as various aspects ofFunction
representation were consolidated4, requiring non-trivial changes on our side. However, it does leave things in a better place, and allows for additional centralisation/validation of function properties & syntax 👌Follow-up
[EXCEPT | INTERSECT] BY NAME
, but it won't get parsed until we pick up a newsqlparser-rs
with this PR merged: Support use ofBY NAME
quantifier across all set ops apache/datafusion-sqlparser-rs#1309 (no rush).Examples
EXCEPT
:INTERSECT
:Footnotes
https://www.postgresql.org/docs/current/sql-select.html#SQL-EXCEPT ↩
https://www.postgresql.org/docs/current/sql-select.html#SQL-INTERSECT ↩
https://www.postgresql.org/docs/current/sql-select.html#SQL-TABLE ↩
https://github.com/sqlparser-rs/sqlparser-rs/pull/1247 ↩