Allow table name as column reference to return row as struct#4195
Draft
arnaud-lacurie wants to merge 7 commits into
Draft
Allow table name as column reference to return row as struct#4195arnaud-lacurie wants to merge 7 commits into
arnaud-lacurie wants to merge 7 commits into
Conversation
…ource SELECT (T.*) now names the outer column after T; SELECT (*) from a single table names it after the table/alias. With multiple tables in scope the column remains anonymous.
When an identifier in the SELECT list matches a table name or alias but no column with that name exists, return the full row as a struct — equivalent to SELECT (*) FROM <table>. Column names always take priority over table names. SELECT restaurant FROM restaurant; SELECT r FROM restaurant r;
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
SELECTlist matches a table name or alias but no column with that name exists, return the full row as a struct (equivalent toSELECT (*) FROM <table>)SELECT t FROM foo t) works as expectedImplementation
Added
resolveAsTableRowMaybeinSemanticAnalyzeras a fallback inresolveIdentifier— reuses the existingexpandStarpath, same asSELECT (T.*).Updated
SELECTreference docs to cover(*)and the new shorthand, which were previously undocumented.Built on top of #4182