Add BigQuery CREATE EXTERNAL TABLE WITH PARTITION COLUMNS parsing support#66
Open
mesmacosta wants to merge 2 commits intotobilg:mainfrom
Open
Add BigQuery CREATE EXTERNAL TABLE WITH PARTITION COLUMNS parsing support#66mesmacosta wants to merge 2 commits intotobilg:mainfrom
mesmacosta wants to merge 2 commits intotobilg:mainfrom
Conversation
- Parse CREATE EXTERNAL TABLE with column definitions, WITH PARTITION COLUMNS, WITH CONNECTION, and OPTIONS clauses - Add is_bigquery_external guard to prevent generic with_properties from consuming the WITH token needed by BigQuery-specific clauses - Add BigQuery EXTERNAL TABLE generation (builder + generator) - Add EXTERNAL to BigQuery dialect's special_modifier list - Add 19 tests covering parsing, roundtrip, and WITH syntax compatibility (CTEs, PARTITION BY, CLUSTER BY, OR REPLACE, etc.) - All 916 tests pass with no regressions
Owner
|
Nice work! Clean early-return pattern that keeps the BigQuery-specific logic well-scoped. A few things to address: Must fix
self.advance(); // consume PARTITION
self.match_identifier("COLUMNS"); // ← return value discarded
if self.check(TokenType::LParen) {If someone writes if !self.match_identifier("COLUMNS") {
// error or handle bare WITH PARTITION case if BigQuery allows it
}Suggestions
Nits
What looks good
|
1a9add1 to
0f99e5f
Compare
Author
|
@tobilg addressed the review items. |
Owner
|
Will have a look, thank you! |
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
BigQuery's
CREATE EXTERNAL TABLEsyntax supports clauses likeWITH PARTITION COLUMNSandWITH CONNECTIONthat use theWITHkeyword differently from the genericWITHproperties parser. The generic parser was causing parse failures whenever column definitions or partition columns were present.Example: failing query before this fix
Fix:
WITHtoken consumption site, with a clean early returnEXTERNALto BigQuery'sspecial_modifierdialect listwith_partition_columns,with_connection)This does not affect parsing of regular BigQuery
CREATE TABLEstatements, CTEs inAS SELECT, or any other dialect'sWITHhandling — the logic only activates whentable_modifier == "EXTERNAL"ANDdialect == BigQuery.Changes
parser.rs— BigQuery EXTERNAL TABLE parsing + 19 new testsexpressions.rs— Newwith_partition_columnsandwith_connectionfields onCreateTablebuilder.rs— Builder support for new fieldsgenerator.rs— SQL generation for BigQuery EXTERNAL TABLE syntaxdialects/mod.rs— AddEXTERNALto BigQuery's special modifiersTest plan