Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 07:45
89eaa63

0.3.0 (2026-11-10)

Upgrade notes

  • census: sqlquack census now reports a diagnostic for each blocked file by default, and exits 1 when any file is blocked, so scripts that read its exit code or output need updating. The coverage report moves behind --detailed (with file, model and relation names and the slowest files) or --anonymous (counts and construct keys only, never SQL or names). --names is removed; use --detailed.
  • Next release: the configuration file (sqlquack.toml) and its command-line flags change in the next release.

⚠ BREAKING CHANGES

  • census: --names is removed. Use --detailed for a named report and --anonymous for a report without names.
  • census: the previous anonymous counts report moves behind --detailed. --names and --assume-supported now require --detailed, and the slowest-files list appears only in detailed mode. Census now exits 1 when any file is blocked.

Features

  • census: add --anonymous for a shareable counts-only report (f94b4d9)
  • census: name the unknown relation in a name-resolution cause (c587e72)
  • census: report a diagnostic for each blocked file (fbadd64)
  • cli: explain known differences and list them or every code (9d62bf2)
  • cli: plain-English diagnostics and a one-line summary of known differences (4758180)
  • cli: quote the policy file's reason in --verbose known-difference warnings (c1ed980)
  • policy: describe all 38 known differences in plain English (101b811)
  • policy: describe known differences in plain English (c93f4ee)
  • sqlserver: read FOR SYSTEM_TIME as the table's version, its bounds a constant or a variable as SQL Server requires (0b68995)
  • sqlserver: read FOR XML, FOR JSON and FOR BROWSE, and lay out FOR XML and FOR JSON as SQLClean does (aa6da9b)
  • sqlserver: read join hints, REMOTE only after INNER, and keep them in the join keyword when laying out (fd8b0eb)
  • sqlserver: read table hints, with SQL Server's conflict rules and the hints a write target refuses (c24aa5d)
  • sqlserver: read table variables as table sources and write targets, without the hints and samples SQL Server refuses them (2c93771)
  • sqlserver: read TABLESAMPLE on a table name, after its alias and before its hints, as SQL Server does (c6bbd9c)

Bug Fixes

  • census: keep model chaining opt-in (8c25d57)
  • cli: mark differences the defaults allow only in part (eab0a1d)
  • cli: say known difference in census, review and verify output (df82e77)
  • convert: name the project's sqlquack.toml by its name, not its folder's path (affd49f)
  • coverage: refuse cited translation cases whose path has an empty, . or .. part (4dfb5fc)
  • diagnostics: say what must be true of the session, not how to change the setting (64166cc)
  • diagnostics: show a known difference's fine and wrong cases as whole sentences (e87b620)
  • distributions: compile DuckDB's ICU extension into every bundled build (5b4ee0f)
  • distributions: compile DuckDB's json extension into every bundled build (267e0b9)
  • distributions: keep DuckDB's compiled-in extensions in Linux links (f1cbdb6)
  • distributions: name DuckDB's release version in builds from its sources (cae4c1c)

Performance Improvements

  • cast a widened number literal to its wider DECIMAL only once (cfaa28d)
  • semantics: analyse a statement's lineage and findings in one pass (4da19b0)
  • semantics: cheaper per-level findings bookkeeping (5349692)
  • semantics: read a level's output aliases without copying them per projection (6be2847)
  • semantics: read each Snowflake type spelling once per thread (7013ca5)
  • semantics: reuse a level's FROM items between resolution and findings (31c42e8)
  • semantics: share a level's alias-free traces between resolution and findings (87786d3)
  • semantics: share a resolved query's column list instead of copying it (6e0f593)
  • syntax: box the star expression so every expression moves fewer bytes (c786e78)
  • syntax: check strict coverage on the parser's own tokens (73a6fff)
  • syntax: let dialect parsers inline token text reads (fe9a0ee)
  • syntax: list children without tracking their paths (6c054a0)
  • syntax: look Snowflake reserved words up instead of scanning the list (503ecee)
  • syntax: read ASCII single-character tokens and identifier quotes from a table (754664d)
  • syntax: reserve the token list once per tokenize run (2096c69)