Skip to content

Commit 7b31b03

Browse files
committed
audit: PR #142 typed timestamp literals at 32ba12e and PR #143 settlements at ee4cc0d
1 parent 3d53bee commit 7b31b03

2 files changed

Lines changed: 88 additions & 0 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
[review]
2+
schema = "sqlquack.recorder-change-review.v1"
3+
decision = "D133"
4+
related = ["D110a"]
5+
pull_request = 143
6+
branch = "fix/pending-case-settlements"
7+
commit = "ee4cc0d11e56491ae97e6f7340afe56fc35bfd98"
8+
base = "99e4ab356b61cf41edd99f16bfab81362697a8c1"
9+
merge_base = "99e4ab356b61cf41edd99f16bfab81362697a8c1"
10+
reviewed_at = "2026-11-07T05:00:13Z"
11+
round = 1
12+
verdict = "approved"
13+
checked = [
14+
"Read ee4cc0d1 against main 99e4ab35. It touches 7 files: 10 changed case lines in cases/ddl, dml, query and utility, and 6 added settled-accept marks. No other field changes.",
15+
"Each of the 10 cases has exactly one receipt on main, all recorded 2026-11-05, and each settlement follows from it. o600 (ALTER STAGE v1 SET = ( )), o535 (COPY INTO 'azure://...' FROM v1 = ( )) and o718 (COPY INTO v1 FROM 'azure://...' = ( )) are syntax_error 1003, so they become reject. o107 and o108 (90201), o109 (90214), o036, o043 and o615 (2003, run database), and o024 (2003) are semantic_error, so they become accept with stage semantic.",
16+
"Rebuilt every family on a scratch copy with #142's cases.py and the held.jsonl list: ddl, dml, query and utility are byte-identical to ee4cc0d1's files. With main's cases.py, the same rebuild mis-renders 182 ddl and 209 functions setups, so #143 has to land after #142.",
17+
"Parser at #142's 32ba12e8: o600 and o718 refuse (rc 1). o535 is accepted (rc 0), which is the disagreement the lane reports: a parser gap now on view, not a regression.",
18+
]
19+
20+
[[review.finding]]
21+
kind = "parser_gap"
22+
blocking = false
23+
detail = "copy-into-location o535: the parser accepts COPY INTO 'azure://a1.blob.core.windows.net/c1/p1/' FROM v1 = ( ) ;, while Snowflake gives 1003. The settlement moves it from awaiting_observation to disagreement. The copy-into-table counterpart (o718) already refuses, so the location form's option parsing is the place to fix it."
24+
25+
[[review.finding]]
26+
kind = "ordering"
27+
blocking = false
28+
detail = "Land after #142 (including its review entry). The rebuild only reproduces these files with #142's digest-only setup lookup."
29+
30+
[review.files_sha256]
31+
"coverage/syntax/cases/ddl.jsonl" = "9d7b6d51d5614b1c70e80cf363fbf590ba2e7889ec8888200b612ff3177e0377"
32+
"coverage/syntax/cases/dml.jsonl" = "a30dc5b3caab49ce34d822514664cb3f92f87ae1012c523ebef95c30f90d62c1"
33+
"coverage/syntax/cases/query.jsonl" = "af990c3ca360a5a7c675f1d146b9abf6bf6cc1e698a160f71e2d2e234fc0cd1b"
34+
"coverage/syntax/cases/utility.jsonl" = "a4aabf8116a3c1f4dedab7385aa3257c35bb66fb62da244f0ee9d79da45975cb"
35+
"coverage/syntax/marks/ddl.jsonl" = "370da0f650f4a3bfa5dedabf67d960e3c0a578c4e896a129e7cc4221bfc8a92c"
36+
"coverage/syntax/marks/dml.jsonl" = "d912458541b4e7be244cd6ff23c4b744387744a1305922a154b3f3e6c7d45fdd"
37+
"coverage/syntax/marks/utility.jsonl" = "ca6165e7f38f664e868ca6cc45ca9d9359d9fa6f348442a1259233319d7f3197"
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
[review]
2+
schema = "sqlquack.recorder-change-review.v1"
3+
decision = "D118"
4+
related = ["D110a", "D133"]
5+
pull_request = 142
6+
branch = "fix/typed-timestamp-literals"
7+
commit = "32ba12e8c2426d24b81694b27d5230233c2da104"
8+
base = "c2cbe9d247d9a1fe5e3b6ff01ed272a2b35fc01d"
9+
merge_base = "c2cbe9d247d9a1fe5e3b6ff01ed272a2b35fc01d"
10+
receipts = ["a1ecdbed import-20261104-171 (9 receipts)"]
11+
review_entry = "wip/typed-literals-auditor-review 615a5c2a (auditor-expressions-016)"
12+
reviewed_at = "2026-11-07T05:00:13Z"
13+
round = 1
14+
verdict = "approved"
15+
checked = [
16+
"Read the four commits 2541bfd0, a1ecdbed, 45691acb and 32ba12e8 against c2cbe9d2. The parser changes are both Snowflake-only: parse_primary_datetime_literal checks is_snowflake(), and try_parse_snowflake_named_type_literal checks applies_snowflake_context_rules. The SQ0211 refusal sits in snowflake_rejections.",
17+
"Receipts: import 171 has nine rows, k8a36862, k69fcf514, k624d77c2, kaf2e829, k5ee29352, kf2531b90 and the TIMESTAMP_LTZ case with 1003/42000, and kdf44dc07 (TIMESTAMP_NTZ(3)) and kfadd3f56 (TIMESTAMP_TZ(3)) with 2121/42601. Each matches its case's expect: the seven are reject, and the two are accept with stage semantic, marked settled accept (D133).",
18+
"Built 32ba12e8 and ran 26 statements through sqlquack check. TIMESTAMP_NTZ, timestamp_ltz, TIMESTAMP_TZ, TIMESTAMPTZ, TimestampNtz and DATETIME before a string, and TIMESTAMP_NTZ /* c */ '...', give SQ0001 with the caret on the string. TIMESTAMP_NTZ(3), TIMESTAMP_NTZ ( 3 ), TIMESTAMP_LTZ(3), TIMESTAMPNTZ(3) and TIMESTAMP_TZ(3) before a string give SQ0211 on the whole literal, also inside WHERE. TIMESTAMP, DATE and TIME literals, '...'::TIMESTAMP_NTZ(3), CAST(... AS TIMESTAMP_TZ(3)), TO_TIMESTAMP_NTZ, DATETIME(3) without a string, and columns named timestamp_ntz or datetime still pass.",
19+
"syntax-coverage at 32ba12e8 (parser tree 90d18284): the only stale form is date-time-constant, with definition 31d338a9 and fingerprint c8570c5f against auditor-expressions-009's 365bfe1c, 6e1a8f44 and a8d9cb16, as the lane said. family expressions gives it 16/16 [StaleReview]. With auditor-expressions-016 added, stale is empty, validate passes, the form is Verified 16/16, and diff against baseline.json gains o009-o017 and loses no form.",
20+
"Case builder: copied coverage/syntax to scratch and rebuilt with the --held held.jsonl list. With 32ba12e8's cases.py, expressions and functions are byte-identical to the committed files. ddl, dml, query and utility differ only by the 10 settlements #143 carries. With c2cbe9d2's cases.py, expressions differs on 13 cases (setup and setup_sha256 only), and a full rebuild differs on 182 ddl and 209 functions setups plus 40 expect and stage changes.",
21+
"Did not re-run clippy, the Rust test suites, pytest, fensu or generate_diagnostics --check. Those figures are the lane's.",
22+
]
23+
24+
[[review.finding]]
25+
kind = "extrapolation_noted"
26+
blocking = false
27+
detail = "Only TIMESTAMP_NTZ(3) and TIMESTAMP_TZ(3) have a 2121 receipt. SQ0211 also fires for TIMESTAMP_LTZ(3), TIMESTAMPNTZ(3), TIMESTAMPLTZ(3) and TIMESTAMPTZ(3), which have no receipt. DATETIME(3) '...' gets a generic SQ0001 ('Invalid expression / Unexpected token') at the string. TIMESTAMP(3) '...' and TIME(3) '...' are accepted, and no receipt covers them either. All of these still refuse or pass the same way they did on main, so nothing regresses. Add the six spellings as negative neighbours in the next import, so that their phase and code are recorded rather than inferred."
28+
29+
[[review.finding]]
30+
kind = "builder_side_effect"
31+
blocking = false
32+
detail = "Because receipts are now looked up by setup digest alone, more run-database receipts find their setup. So run_database_setups' setup_review list goes from empty to 16 cases: 14 ddl (alter-external-volume, alter-materialized-view, alter-restricted-session-scope, alter-semantic-view, alter-stream, alter-type, desc-transaction, show-mcp-servers) and 2 functions (system-resolve-python-packages). Each has counted receipts in both the syntax and the non-syntax phase. None of the committed files change, because flagged cases get no run-database setup either way. The list is new review work, though, and the PR body does not mention it."
33+
34+
[[review.finding]]
35+
kind = "ordering"
36+
blocking = false
37+
detail = "The pending settlements belong in #143, not here. #143 was generated with this builder, and main's builder would mis-render it, so #143 must land after #142. The review entry auditor-expressions-016 has to land with #142, or the form stays reported as lost: cherry-pick 615a5c2a's parent bf97f064 and 615a5c2a, or merge wip/typed-literals-auditor-review."
38+
39+
[review.files_sha256]
40+
"crates/sqlquack-syntax/src/parser/_helpers/types/data_types.rs" = "1aff45fb8104735304161b63c7b453c09f91c81cd1d126a960c87bfd76debbe0"
41+
"crates/sqlquack-syntax/src/parser/_helpers/expressions/primary.rs" = "31b4498a8c2a62100c39b0480458ebff4869bf351e58ad7def358f5adeb4a339"
42+
"crates/sqlquack-syntax/src/expressions/types/constants.rs" = "e4635ab328a94ca7377debb1983d9fad578f701596495e25711597952ec9b6c1"
43+
"crates/sqlquack-core/src/refusals/_helpers/rejections.rs" = "4d531bbfbed3aa99b87441c80a492950ecbc2f7d53a745152a4f2625f593493e"
44+
"crates/sqlquack-core/src/diagnostics/constants.rs" = "cc519aca11e662789186221e5fe13da6dddd50c0d7dca0f82dfd1ccc3cd446b4"
45+
"crates/sqlquack-core/src/diagnostics/codes.lock" = "8998ec1640cd7769ce3d85364f639f5b7c705108b39215789c9778c203fb0801"
46+
"scripts/syntax_obligations/_helpers/cases.py" = "b57ddfdd8df2a17510d9753b6e4088551204e7aa01f852452a85d0cd9221dd5e"
47+
"coverage/syntax/obligations/expressions.toml" = "bc3de6da0f7ebb6a029832f36002c520f6773c04fc6d0f3da8b01423f115ca8c"
48+
"coverage/syntax/cases/expressions.jsonl" = "6107154d282c24a3872cbb328dcaeed818567524fba57b86df5d436a7687872d"
49+
"coverage/syntax/marks/expressions.jsonl" = "82846670c494b1db75e2020fa41e0de504b54b29c763fc2ca6382038cf3adccc"
50+
"coverage/syntax/receipts/import-20261104-171.jsonl" = "aa3ff207e91b57c010069068a11f43c09eff8d2ba04ac077684358a684fffd44"
51+
"coverage/syntax/reviews/auditor-expressions.toml" = "2238fcb20e2e525d23e6404da073a1a524a603af2105f0fc53288e476015c341"

0 commit comments

Comments
 (0)