Highlights
This is a bugfix and dialect enhancement release following the 4.0.0 major release.
- Python 3.14 is now officially supported.
- Rule fixes for ST02, ST06, CP02, RF03, and indentation handling.
- New SARIF output format for better CI/CD integration.
- Dialect improvements across T-SQL, Snowflake, PostgreSQL, BigQuery, DuckDB, ClickHouse, Oracle, Databricks, and SQLite.
This release also includes the first contributions from fourteen new contributors!
Welcome to the project and thank you for your contributions.
What’s Changed
- Add correct indentation for exception blocks in Oracle PL/SQL (#7424) @copilot-swe-agent[bot]
- Improve the AST for Grant/ Revoke statements (#7457) @WittierDinosaur
- Support Python 3.14 (#7454) @WittierDinosaur
- Fix ST02/L043 corruption of Simple CASE statements (#7432) @Tanishq3031881
- chore: Add Triage Agent for issue reproduction process (experimental) (#7433) @peterbud
- docs: dbt templater: remove sections about old unsupported dbt versions (#7382) @MatthijsKok
- Duckdb: Trailing commas in values clause (#7453) @WittierDinosaur
- build: Optimize pre-commit workflow (#7452) @peterbud
- Add ALTER SYSTEM statement support for PostgreSQL dialect (#7448) @copilot-swe-agent[bot]
- T-SQL Parser issues with OPENJSON, ordered set select, and cursor keyword order (#7449) @dpurfield
- Support globs in COMMA_SEPARATED_PATH_KEYS (#7414) @WittierDinosaur
- Add error messages for templating/parsing errors on
sqlfluff fix(#7381) @annebelleo - Snowflake: Enhance create dynamic table statement parsing (#7436) @gmkr0
- build: Further workflow optimizations (#7438) @peterbud
- Bump time from 0.3.44 to 0.3.47 in /sqlfluffrs (#7439) @dependabot[bot]
- Add Snowflake Workspaces support (#7437) @kokorin
- T-SQL: fix parse of convert, updatable cursor syntax and TOP in UPDATE/INSERT statements (#7431) @dpurfield
- Allow align columns when using leading comma (#6720) @vinceyyy
- ClickHouse: Add settings clause to ALTER TABLE statement (#7429) @ttanay
- Bump bytes from 1.11.0 to 1.11.1 in /sqlfluffrs (#7430) @dependabot[bot]
- Support SARIF output format (#7413) @WittierDinosaur
- build: Updating CI/CD Infrastructure (#7420) @peterbud
- docs: Update base path in VitePress configuration (#7423) @peterbud
- Adds custom Python recursion limit value as an option (#7401) @samgusick
- docs: Add a new VitePress based documentation site (#7358) @peterbud
- Snowflake: Support dynamic table grants (#7408) @WittierDinosaur
- Duckdb: Allow CTEs in Insert statements (#7418) @WittierDinosaur
- Make CP02 ignore templated slices (#7419) @WittierDinosaur
- Bigquery: Correct order of operations for select statement (#7421) @WittierDinosaur
- [tsql] parse issues related to security ALTER USER/ROLE/AUTHORIZATION & some GRANTS (#7406) @dpurfield
- Fix double print of highlights in changelog (#7417) @WittierDinosaur
- Disable CV01 for teradata (#7409) @WittierDinosaur
- TSQL: fix JSON function grammar semantic (#7416) @peterbud
- Support underscores in numeric literals in Postgres and DuckDB (#7407) @WittierDinosaur
- Bigquery: Support Hexadecimal Integer Literals (#7412) @WittierDinosaur
- TSQL: Add support for all missing T-SQL JSON functions (#7410) @peterbud
- Databricks: Separate CREATE VIEW from CREATE MATERIALIZED VIEW parsing (#7405) @nathanthorell
- feat(snowflake): Add support for DIRECTED joins (#7402) @Daniel-Wiszowaty
- Add ANSI quantified comparison operators (ANY/ALL/SOME) (#7398) @copilot-swe-agent[bot]
- DuckDB: Add support for SET (#7404) @aammett
- fix(ST06): prevent corruption of CREATE VIEW with explicit columns list (#7263) @oulmoukenza
- DuckDB: parse simplified UNPIVOT
ONexpressions andINTOoptional (#7394) @hamza-dri - tsql alter table rebuild and drop without constraint keyword (#7393) @dpurfield
- Adds support for
INSERT ALLand error logging inINSERTin Oracle. (#7347) @joaostorrer - Fix: handles dotted notation in INI config files for Jinja context (#7373) @shuting-zhang-gh
- SQLite: Add support for blob and hexadecimal literals (#7332) @franloza
- Rust parser: Add
AnyNumberOfcontext helper functions (#7390) @keraion - Add plural interval datetime units support for DuckDB (#7387) @copilot-swe-agent[bot]
- DuckDB: Add support for parenthesized expressions in INTERVAL (#7388) @franloza
- TSQL: Add support for OPENROWSET(BULK) multiple file paths (#7329) @lynndb0
- Improves the parsing of
GRANTandREVOKEstatements in Oracle. (#7338) @joaostorrer - Rust: Migrate pyo3 items out of sqlfluffrs_types (#7386) @keraion
- T-SQL: Support INDEX = hint syntax without brackets (#7344) @copilot-swe-agent[bot]
- docs: replace aliases in rule table with core rule specification (#7337) @annebelleo
- fix(alignment): use
indent_unittab when configured (#7289) @peterbud - feat(parse): export position info in JSON/YAML output (#7294) @peterbud
- Reserve "DEFAULT" in snowflake dialect (#7274) @alanmcruickshank
- fix(RF03): don't treat COLLATE clauses as unqualified references (#7334) @peterbud
- TSQL: add support for NEXT VALUE FOR with OVER clause (#7335) @peterbud
- BigQuery: Add support for limit clause in aggregate functions (#7370) @annebelleo
- CI: Update black to v26 (#7376) @keraion
- Rust: remove generated files from source control (#7371) @keraion
New Contributors
- @shuting-zhang-gh made their first contribution in #7373
- @dpurfield made their first contribution in #7393
- @hamza-dri made their first contribution in #7394
- @oulmoukenza made their first contribution in #7263
- @aammett made their first contribution in #7404
- @Daniel-Wiszowaty made their first contribution in #7402
- @samgusick made their first contribution in #7401
- [@dependabot[bot]](https://github.com/[dependabot[bot]](https://github.com/apps/dependabot)) made their first contribution in #7430
- @ttanay made their first contribution in #7429
- @vinceyyy made their first contribution in #6720
- @kokorin made their first contribution in #7437
- @gmkr0 made their first contribution in #7436
- @MatthijsKok made their first contribution in #7382
- @Tanishq3031881 made their first contribution in #7432