feat: Add SQL support for NATURAL
joins and the COLUMNS
function
#17295
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.
New
NATURAL [INNER|LEFT|FULL] JOIN
1 support for the SQL interface (this flavour of join automatically uses the common cols between the two tables as the join-key), and the associated SQL docs entries/examples.COLUMNS
2 function; this maps almost 1:1 onto Polars'col
expression, enabling use of regular expressions to select multiple columns. Also offers some (currently limited) broadcasting capabilities; at the moment broadcasting support only works in theWHERE
clause.Also
SQLFunctionVisitor
translations also have access to the current/active schema.Examples
Establish test data:
Apply
NATURAL
joins, use aCOLUMNS
regex to avoid selecting<col>:<suffix>
cols:Use
COLUMNS
to broadcast constraints inWHERE
clause; filter for value>= 4
across all columns:Footnotes
NATURAL JOIN
: https://www.postgresql.org/docs/current/queries-table-expressions.html#QUERIES-JOIN ↩COLUMNS
: https://duckdb.org/docs/sql/expressions/star.html#columns-regular-expression ↩