Skip to content

build(deps): update sqlparser requirement from 0.62 to 0.63 - #22

Merged
funcpp merged 1 commit into
mainfrom
chore/sqlparser-0.63
Sep 21, 2026
Merged

funcpp merged 1 commit into
mainfrom
chore/sqlparser-0.63

Conversation

@funcpp

@funcpp funcpp commented Sep 21, 2026

Copy link
Copy Markdown
Owner

Supersedes #19. The bare manifest bump does not compile — 0.63 adds AST variants and reshapes the MERGE update clause.

Compile breaks

Change Handling
5 new Statement variants: CreateTextSearch, AlterTextSearch, CreateFileFormat, CreateWarehouse, Put All DDL/admin, no data lineage → StatementType::Other list
Expr::IsJson Joins the other IS <predicate> arms; recurses into its operand
TableFactor::UnpivotExpr (Redshift SUPER unpivoting) Joins the pivot-family factors, which carry no table reference of their own
MergeAction::DoNothing Joins Delete as a no-lineage clause
MergeUpdateExpr.assignmentskind: MergeUpdateKind See below

MERGE wildcards

MergeUpdateKind is either Set(assignments) — the previous behavior — or Wildcard, the new UPDATE SET *. 0.63 also adds MergeInsertKind::Wildcard for INSERT *.

That second one compiles silently: the arm was an if let ... Values(..), so INSERT * would have parsed fine and produced no lineage at all. Worth flagging, since a silent gap is what a bare dependency bump merges.

Both wildcards mean "every column of the source row", so both now emit the same Star node SELECT * emits:

MERGE INTO target t USING source s ON t.id = s.id WHEN MATCHED THEN UPDATE SET *

  no catalog   *  <- Wildcard(source)
  catalog      id  <- source.id
               val <- source.val

The source is already bound in the current scope when the clause is visited, so the star resolves against the source and not the target — which is the right side.

Not changed

  • No dialects added or removed in 0.63, so Dialect and feat: support every dialect sqlparser exposes #18's list stay as they are. (Still no Trino.)
  • MergeInsertKind::Row (INSERT ROW) means the same thing as INSERT * and is also dropped, but it predates 0.63, so this PR leaves its behavior alone. The if let did become a match, so the gap is now visible rather than implicit. Happy to fix it separately.

Tests

2 new, 93 total:

  • merge_update_set_wildcard_is_an_unexpanded_star
  • merge_insert_wildcard_expands_from_catalog
cargo fmt --all --check                                           exit 0
cargo clippy --workspace --all-targets --all-features -D warnings exit 0
cargo test --workspace --all-features                             exit 0

🤖 Generated with Claude Code

Supersedes #19, which is the bare manifest bump and does not compile.
0.63 adds AST variants and reshapes the MERGE update clause.

New `Statement` variants, all DDL/admin with no data lineage, added to
the `StatementType::Other` list: `CreateTextSearch`, `AlterTextSearch`,
`CreateFileFormat`, `CreateWarehouse`, `Put`.

`Expr::IsJson` joins the other `IS <predicate>` arms and recurses into
its operand, so `SELECT a FROM t WHERE b IS JSON` still sees `b`.

`TableFactor::UnpivotExpr` (Redshift SUPER unpivoting) joins the
pivot-family factors that carry no table reference of their own.

`MergeAction::DoNothing` joins `Delete` as a no-lineage clause.

`MergeUpdateExpr.assignments` became `kind: MergeUpdateKind`, which is
either `Set(assignments)` — the previous behavior — or `Wildcard`, the
new `UPDATE SET *`. 0.63 also adds `MergeInsertKind::Wildcard` for
`INSERT *`; that one compiles silently because the arm was an `if let`,
so it would have dropped lineage without a word.

Both wildcards mean "every column of the source row", so both now emit
the same `Star` node `SELECT *` emits: an honest unexpanded star without
a catalog, the source's real columns with one.

`MergeInsertKind::Row` (`INSERT ROW`) means the same thing and is also
dropped, but it predates 0.63 and is left alone here; the `if let`
became a `match` so the gap is at least visible.

No dialects were added or removed in 0.63, so `Dialect` is unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant