# What changed in sqlglot

> 119 changes in sqlglot 30 from its official release notes, upgrade guides and advisories: 16 breaking, 11 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/sqlglot/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## sqlglot 30

### Breaking changes

- SortArray is merged into ArraySort, with explicit NULL ordering. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks no longer treats # as a comment. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Parsing now respects dialect precedence for IS predicates. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks no longer defaults column names for multi-array UNNEST. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- SortArray is merged into ArraySort; update code that uses the former expression. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Hashing now accounts for the case-sensitivity flag on expression nodes, changing hashes for affected nodes. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- ClickHouse generation uses JSONExtractRaw for JSON-valued extraction. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- DuckDB type inference now returns correct types for temporal interval arithmetic. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Teradata now defaults the window aggregate frame to the whole partition. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Correlated UNNEST fields are resolved from projection types. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- infer_schema is removed from the optimizer. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Integer division truncates toward zero instead of rounding. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Preserved function names are scoped to their dialect. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Nested join constructs are expanded during table qualification. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Star expansion follows the order of sources in FROM and expands USING columns first. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- String escape decoding and preservation are corrected across BigQuery, MySQL, Hive, Drill, PostgreSQL, DuckDB, Redshift, and ClickHouse. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)

### New APIs and options

- The optimizer adds PASTE JOIN support. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks admin and job-control statements are parsed as commands. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks now supports AGGREGATE KEY tables. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- MySQL now supports named FOREIGN KEY indexes. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Doris parsing now supports full-text search operators. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- StarRocks now supports HLL columns and the HLL_UNION aggregation type. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Databricks now supports MATCH_RECOGNIZE. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- StarRocks parsing now supports REFRESH MATERIALIZED VIEW options. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- StarRocks parses TIME_SLICE into exp.TimeSlice. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- The MySQL parser supports parsing ASCII and UNICODE. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The optimizer adds a function Mode annotation for DuckDB. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)

### Behavior and default changes

- MySQL parsing now allows constraints without names. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- ALTER actions can be optional and actions and options can appear in any order. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The parser now accepts bare ALTER TABLE ... DROP c syntax. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Spark parses dotted column identifiers in column definitions. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- BigQuery and TSQL rewrite aggregate FILTER clauses into conditional aggregates. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Optimizer type annotations for these functions are based on their argument type. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Hive supports FROM-first multi-table INSERT syntax. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The parser supports ALTER statements containing mixed operations. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)

### Tooling

- Python 3.15 is now supported. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)

### Fixes and other changes

- Hive and Spark now parse ALTER TABLE REPLACE COLUMNS. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- BigQuery transpilation adds support for APPROX_PERCENTILE, along with Trino date parts, FROM_BASE, ARRAY_SORT, and ARRAY_DISTINCT. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- BigQuery transpilation adds support for ARRAY_DISTINCT, along with Trino date parts, FROM_BASE, APPROX_PERCENTILE, and ARRAY_SORT. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- BigQuery transpilation adds support for ARRAY_SORT, along with Trino date parts, FROM_BASE, APPROX_PERCENTILE, and ARRAY_DISTINCT. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- MySQL parsing respects bitwise operator precedence. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- The optimizer registers a CTE reference alias when the CTE is pivoted. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks transpilation keeps DATEDIFF date-part semantics. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- DuckDB generation quotes identifiers that are reserved keywords. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- MySQL parsing preserves exclamation mark operator precedence. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- BigQuery transpilation adds support for FROM_BASE, along with Trino date parts, APPROX_PERCENTILE, ARRAY_SORT, and ARRAY_DISTINCT. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Simplification and the Postgres generator avoid materializing huge interval literals. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Postgres maps the ISO week format pattern IW. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Postgres maps the ISO week-numbering year format pattern IYYY. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Oracle maps ISO week-numbering year IYYY to %G. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks transpilation preserves LIKE argument order. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Other dialects drop the Teradata LOCKING request modifier instead of crashing. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks parses map{...} literals as maps. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- The parser now supports PARTITION BY EXCLUDING. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- ClickHouse parses PASTE JOIN instead of treating it as a table alias. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- BigQuery percentile and distinct-array transpilation is corrected. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks generates PIVOT instead of dropping it. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- MySQL transpilation preserves population and sample aggregate semantics. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- Teradata transpilation supports SAMPLE row counts and fractions. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks infers output columns for static pivots. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- StarRocks transpilation preserves the native TO_DAYS function. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- BigQuery transpilation adds support for Trino date parts, FROM_BASE, APPROX_PERCENTILE, ARRAY_SORT, and ARRAY_DISTINCT. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- MySQL parsing now accounts for relative XOR, OR, and AND precedence. (30.24.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30240---2026-10-20)
- The optimizer now includes semi/anti join references when identifying alias collisions. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Spark parsing now supports all ALTER TABLE DROP COLUMN forms. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- DuckDB translation now treats ARRAY_INSERT at index -1 as append for 1-based arrays. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- DuckDB translation converts ARRAY_SLICE endpoints to SLICE lengths. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- DuckDB translation casts array elements to text before applying the null replacement. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Athena routes tokenization by each engine's rules when the combined tokenizer fails. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Unnesting a COUNT subquery now keeps the alias outside COALESCE. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Oracle parsing now supports CREATE TABLE physical attributes and storage clauses. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Oracle parsing now supports CREATE TABLE TABLESPACE. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Athena CTAS now allows EXTERNAL FUNCTION. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Oracle flashback timestamps are normalized and their parsing is simplified. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Postgres JSON_VALUE support is improved. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Doris now round-trips MATCH operands and quoted analyzers. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Oracle parsing now handles partition clauses and flashback queries. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Oracle parsing expands alternative quoting and supports national literals. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Oracle tokenization now recognizes q'...' quoted string literals. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- When REFRESH falls back to a command, the parser now keeps the whole statement. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- ClickHouse transpilation now converts RegexpCount to countMatches. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- Placeholder replacements now retain their grouping. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- The optimizer now qualifies bare USING columns after SEMI/ANTI JOIN. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- The optimizer now qualifies columns for SPLIT_TO_TABLE. (30.23.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30230---2026-10-14)
- The parser supports dropping multiple columns in one ALTER TABLE DROP. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- BigQuery and DuckDB no longer drop array elements after a subquery. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Bracket flags are preserved in generator serialization. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Optimization preserves CASE branches that precede always-true conditions. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Snowflake parsing supports (+) outer join markers. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- MySQL retains the CHAR length in CHARACTER SET casts. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- An edge case in BigQuery array generation is corrected. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Optimizer column resolution is improved for TVFs, PIVOTs, and Snowflake schemas. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- DuckDB transpiles Spark CONCAT_WS on arrays to ARRAY_TO_STRING. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- ClickHouse generates POSITION(...) > 0 for Contains. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- All OR arms are preserved during DNF pushdown for multi-table branches. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- DROP INDEX accepts db.t syntax. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The MySQL parser supports these constructs. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The optimizer qualifies DuckDB list comprehension variables. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- ClickHouse parsing supports isInfinite. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- ClickHouse maps ISO calendar functions in both directions. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Databricks roundtrips retain LIMIT ALL in recursive CTEs. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Snowflake parsing supports LIST and LS stage commands. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The MySQL parser accepts non-CSV table options and handles misplaced table and index options. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The tokenizer incorporates MySQL rules. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Generation resolves only a query's own ORDER BY aliases when simulating NULLS behavior. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Generation escapes identifier escape characters when generating quoted identifiers. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Optimizer simplification can produce scalar subqueries. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The parser allows SEARCH and CYCLE together, including CYCLE TO ... DEFAULT. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The optimizer annotates sha2 properly for Redshift. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- DuckDB transpilation preserves Spark array slice length. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Snowflake support is added for SPLIT_TO_TABLE. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- PostgreSQL ^@ is parsed as STARTS_WITH. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- The builder allows a None table name for sqlglotc. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- TSQL parsing supports bare table hints. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Trino preserves precision for all temporal literals. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- Trino roundtrips preserve precision for timestamp and time literals. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- ClickHouse generation is added for these functions. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- DuckDB reads the UNIFORM seed set by the Databricks parser. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
- DuckDB generates USING SAMPLE before ORDER BY and LIMIT. (30.22.0) — [release notes](https://github.com/tobymao/sqlglot/blob/e0ccb31966ca81b5adf39aeb1f82add511f1fe54/CHANGELOG.md#v30220---2026-10-09)
