Skip to content

fix(syntax-cases): render external table options and DCM environments as documented - #193

Merged
kvlonge merged 2 commits into
mainfrom
fix/syntax-case-fillers
Nov 12, 2026
Merged

kvlonge merged 2 commits into
mainfrom
fix/syntax-case-fillers

Conversation

@kvlonge

@kvlonge kvlonge commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Why

27 CREATE EXTERNAL TABLE cases were labelled accept, but Snowflake rejected all of them with a syntax error, leaving 268 obligations with an unexpected outcome. Their stage forms gave every positive case the all-options shell. That shell pairs OR REPLACE with IF NOT EXISTS, which the docs forbid, and carries WITH CONTACT, which Snowflake rejects on external tables. So each case failed for a clause it did not test. EXECUTE DCM PROJECT ... ENVIRONMENT also takes a bind variable, but the generator filled it with an identifier.

Changes

  • The three CREATE EXTERNAL TABLE stage forms render unpacked, like the other receipt-checked forms, so each case tests its own option.
  • EXECUTE DCM PROJECT fills <bind_variable> with ?.
  • With options unpacked, three option-absent WITH CONTACT cases render the same SQL as their positive case, so their obligations are withdrawn.
  • Evidence is pinned to fd3882ee. It holds the syntax receipts for unreceipted, DCM and CALL ... WITH cases, and the regenerated cases recorded. 587 not-submitted entries now list a case with a receipt and are removed (ddl 540, utility 39, functions 8). Six more name the two new unpacked cases that still carry INTEGRATION, which stay held. Marks and the syntax baseline are re-recorded.

Satisfied obligations in the syntax baseline:

Satisfied
main 77,856
this branch 78,535

None are lost. WITH CONTACT on CREATE EXTERNAL TABLE stays a documented clause that Snowflake rejects.

Not in this change: the hand-written DCM ENVIRONMENT cases in limits.toml still use an identifier and need ( ? ) and a new recording.

Verification

  • The generator reproduces the pinned evidence's cases exactly. syntax-coverage snapshot: 3,479 forms, 0 problems.
  • The grammar obligation tests pass.
  • make verify-recorded: 12,258 cases, 0 failed; 230 of 230 equivalences and rules verified; the translation results and SQL size baselines are unchanged.
  • make check-ci passes.

… as documented

The CREATE EXTERNAL TABLE stage forms gave every positive case the
all-options shell, which pairs OR REPLACE with IF NOT EXISTS (the docs
forbid both) and carries WITH CONTACT, so 27 accept cases failed for a
clause they did not test. They now render unpacked, like the other
receipt-checked forms. Unpacked, three option-absent WITH CONTACT cases
render the same SQL as their positive case, so those obligations are
withdrawn.

EXECUTE DCM PROJECT ... ENVIRONMENT takes a bind variable, so the
generated cases fill it with ? instead of an identifier.
…e and DCM cases

Pins evidence fd3882ee: the syntax receipts for unreceipted, DCM and
CALL ... WITH cases, and the recorded cases the previous commit
regenerates. 587 not_submitted entries now list a case with a receipt
and are removed. Six more now name the two unpacked external table
cases that still carry INTEGRATION and stay held. Marks and the syntax
baseline are regenerated.
@kvlonge
kvlonge added this pull request to the merge queue Nov 12, 2026
Merged via the queue into main with commit 8c7ba07 Nov 12, 2026
13 checks passed
@kvlonge
kvlonge deleted the fix/syntax-case-fillers branch November 12, 2026 07:03
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