Repository navigation
Releases
Releases · sqlstack-io/sqlquack
v0.12.0
0.12.0 (2026-11-13)
Features
- syntax: parse Snowflake EXECUTE IMMEDIATE into a structured node (5cfcbe0)
Bug Fixes
- syntax: check a CREATE VARIABLE's type, default and comment (66f09a0)
- syntax: check DESCRIBE FUNCTION TABLE arguments (f556c0f)
- syntax: check warehouse table lists, ABORT, unnamed actions and connector PUSH (f4ec2d3)
- syntax: follow the recorded RESULTSET, notebook name and SHOW SERVICES verdicts (f0799e7)
- syntax: read a lone APPLICATION, CLASS or grantee kind in Snowflake SHOW as a name (1c7b1bf)
- syntax: read a notebook named PROJECT with options and an unnamed ALTER WAREHOUSE IF EXISTS (908ad5b)
- syntax: read SHOW WITH PRIVILEGES as documented privileges (8565bf4)
- syntax: refuse CONTACT on an event table (de1fa67)
v0.11.3
0.11.3 (2026-11-13)
Bug Fixes
- syntax-receipts: place errno 921 parse errors as syntax errors (e770e16)
- syntax-receipts: place errors that show Snowflake read an object statement as semantic (ecce335)
- syntax: accept documented EXECUTE IMMEDIATE sources and keep DEFINE in DEFINE text (4938fa7)
- syntax: check external agents, connector versions, root task lists and organization user groups (55b02e6)
- syntax: check SHOW SERVICES, service snapshots and DEFINE FILE FORMAT modifiers (50f569d)
- syntax: keep INCREMENT = to Snowflake and read SET INCREMENT as an integer (f2d1e81)
- syntax: need a user name to rename, enroll MFA, or set a user policy or tag (a2386f9)
- syntax: read ALTER DYNAMIC TABLE actions the way Snowflake records them (6a6e004)
- syntax: read ALTER SEQUENCE SET and the smallest sequence START (5516f15)
- syntax: read CREATE and ALTER POSTGRES INSTANCE as Snowflake does (94cc0c8)
- syntax: read dynamic table clones, SET and event routing rules as the probe batch recorded (5e87a78)
- syntax: read external consumers, AI functions, EXECUTE IMMEDIATE and DEFINE of tags, pipes and code bundles as Snowflake does (81d9549)
- syntax: read notebook projects, organization profiles and group name properties as Snowflake does (6559625)
- syntax: read Snowflake GRANT, REVOKE and SHOW GRANTS as Snowflake does (9e31fde)
- syntax: read the object statement shapes the probe batch settled (7d2a329)
v0.11.2
0.11.2 (2026-11-13)
Bug Fixes
- syntax: accept DEFINE DATABASE and SCHEMA with properties (f8193fd)
- syntax: read CREATE and ALTER DATA MOVEMENT RULE as Snowflake does (71aaa30)
- syntax: read CREATE and DEFINE ALERT as Snowflake does (16d0f5e)
- syntax: read CREATE and DEFINE STREAMLIT as Snowflake does (02610d6)
- syntax: read CREATE BACKUP SET, SNAPSHOT SET and APPLICATION as Snowflake does (3457610)
- syntax: read CREATE CORTEX SEARCH SERVICE as Snowflake does (9f5f666)
- syntax: read CREATE EXTERNAL and ORGANIZATION LISTING as Snowflake does (cf25d86)
- syntax: read CREATE SERVICE and APPLICATION SERVICE as Snowflake does (d8725e4)
- syntax: read Snowflake procedure modes, handler words and scoped tables (e4b5543)
v0.11.1
0.11.1 (2026-11-13)
Bug Fixes
- lint: read a FIRST or LAST join alias as the relation's alias (f009b82)
- syntax: accept an online feature table without TARGET_LAG or with IF NOT EXISTS (98e46f8)
- syntax: read ALTER and DROP MODEL monitor as a model named or qualified by monitor (8fe9485)
- syntax: record a SEMANTIC_VIEW that writes DIMENSIONS before METRICS or FACTS (8343a82)
- syntax: record a stage path as a stage reference, not a string (75399f2)
v0.11.0
0.11.0 (2026-11-12)
Features
- syntax: give nine Snowflake property-list CREATE kinds structured trees (351d2c2)
Bug Fixes
- syntax: accept a COPY FILES stage written as a string literal (1e89bad)
- syntax: end compute pool and artifact repository CREATEs at their tag list, and name RSS (dee1656)
- syntax: keep a parenthesized property list flat (a8db36d)
- syntax: keep FOR APPLICATION to compute pools, read CREATE MODEL monitor as a model, and refuse a job service option given on both sides of FROM (b2a8bc5)
- syntax: read a bare FIRST or LAST as a join alias, refuse FIRST ( x ) after an aliased table, and take job service options before FROM (925f2f7)
- syntax: record AS on a table alias only when the SQL writes it (6c2692b)
v0.10.0
v0.9.0
v0.8.0
0.8.0 (2026-11-12)
Features
- syntax: build Snowflake semantic views as nodes (45d2ebb)
- syntax: check Snowflake ALTER VIEW properties against their grammar (ad4c296)
- syntax: check Snowflake streams against their grammar (2837449)
- syntax: check Snowflake views and materialized views against their grammar (bd58df1)
Bug Fixes
- semantics: give every select item its range through each dialect's strict parser (8e7bfdc)
- syntax: read a Snowflake view's column list after its properties (344755e)
- syntax: read every Snowflake stream option on every source (4bd716c)
- syntax: refuse Snowflake view shapes its receipts reject (6b23d65)
v0.7.0
v0.6.0
0.6.0 (2026-11-12)
Features
- convert: convert TOP and FETCH FIRST to LIMIT (b593f7e)
- convert: lay out DuckDB output and helper macros with the formatter (be7425b)
- convert: run JOIN without ON as a cross join and name more unaliased columns (8f02569)
- format: break wide window specifications and keep one-line clauses on their header (61e7a4e)
- format: give parenthesised groups that span lines their own lines (c8e14ba)
- format: keep token case on request and lay out converted DuckDB SQL (4637fde)
- semantics: give each output column its expression's byte range (f09d2e9)
- syntax: accept Snowflake's scoped and volatile temporary tables (8d5ba02)
- syntax: build Snowflake dynamic iceberg and interactive tables as nodes (ad40a47)
- syntax: build Snowflake table and view governance actions as nodes (b98b9a0)
- syntax: build Snowflake tables with policies as structured nodes (168431e)
- syntax: check Snowflake DCM table definitions against the table grammar (d88fa2f)
- syntax: check Snowflake event, event routing and online feature tables (2e21de6)
- syntax: check Snowflake hybrid table indexes (38ae49e)
- syntax: check Snowflake iceberg and dynamic tables against their grammar (498be3a)
- syntax: check Snowflake table search optimization targets (5ac49ea)
- syntax: parse Snowflake external tables into structured nodes (39207dd)
- syntax: parse Snowflake iceberg column type and write default actions (b2725c8)
- syntax: parse Snowflake iceberg partition evolution (1872de0)
- syntax: parse Snowflake table reclustering and iceberg refresh (7d42d8b)
- syntax: parse Snowflake's key and unnamed constraint drops and constraint renames (066cf8d)
- syntax: read several Snowflake table properties after one SET (d3523c7)
- syntax: read Snowflake ALTER TABLE ADD with the table grammar (5939f22)
Bug Fixes
- check: refuse == as Snowflake does, with a new SQ0206 (86e200b)
- diagnostics: keep node names and guessed aliases out of the unaliased column message (cd64a37)
- format: keep a sign touching a modulo, which DuckDB reads as one operator (50734ca)
- format: keep the extra indent of a tighter operator under a looser one (bab166c)
- semantics: leave every set operation's outputs without a range (23c1099)
- syntax-coverage: fail on a not-submitted entry whose case has a receipt (cde63cd)
- syntax-receipts: count a run-database packet's repeated template once (ee638f5)
- syntax-receipts: document the phase rules in order and keep timeouts refused (c3a5599)
- syntax-receipts: import execute runs that have no run database (01ace82)
- syntax-receipts: place replication not enabled for the account as semantic (e55255a)
- syntax-receipts: place reviewed errors whose message shows Snowflake parsed the statement (bcc7178)
- syntax-receipts: refuse a record whose connector failed before Snowflake answered (9b67a8b)
- syntax-receipts: refuse a run-database packet carrying another run's template (722d8b8)
- syntax: keep the parentheses of a set operation that starts a longer one (20078f8)
- syntax: keep the parse in parse_strict so the instruction guard counts it (4f5cdfa)
- syntax: keep the source range of Snowflake table column names (451032f)
- syntax: name what is missing when a statement ends where an expression belongs (b802ca9)
- syntax: parse keyword lambda parameters and nested parenthesised set operations (9e2b9b6)
- syntax: parse Snowflake timestamp conversions with no arguments (369de78)
- syntax: point a dangling operator before GROUP BY or ORDER BY at the clause (9d34f79)
- syntax: read every secondary role of a Snowflake dynamic table (b18355d)
- syntax: record a star's source range in a located parse (d91f489)
- syntax: refuse misplaced Snowflake table actions (fb4e866)
- syntax: require a value for every Snowflake session setting (32ddec1)
Performance Improvements
- semantics: map output ranges in ASCII SQL without scanning it (8a2ea92)