NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3028 most downloaded on PyPI
mypyc-compiled extensions for sqlglot
Last release 4 days ago
30 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 30 of 30 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
31 releases · first in 2026
One column per month.
fix(ci): publish sqlglot independently of sqlglotc [CODEX]
fix(ci): publish sqlglot independently of sqlglotc [CODEX]
due to 2be1e0e - annotate bit_xor for duckdb (PR #8452 by @opencode13241-eng):
annotate bit_xor for duckdb (#8452)
due to 65a0e22 - new projection pushdown algorithm (PR #8440 by @georgesittas):
new projection pushdown algorithm (#8440)
due to e3f71dc - decode backslash escape sequences in string literals (PR #8456 by @georgesittas):
decode backslash escape sequences in string literals (#8456)
due to b4d9e37 - inherit Trino dialect, parser and generator defaults (PR #8464 by @georgesittas):
inherit Trino dialect, parser and generator defaults (#8464)
due to d84f7f3 - preserve BD literal semantics in Hive and Spark (PR #8455 by @georgesittas):
preserve BD literal semantics in Hive and Spark (#8455)
due to 1122046 - convert ARRAY_INSERT position between 0- and 1-based dialects [CLAUDE] (PR #8460 by @anishmehta24):
convert ARRAY_INSERT position between 0- and 1-based dialects [CLAUDE] (#8460)
2be1e0e - optimizer: annotate bit_xor for duckdb (PR #8452 by @opencode13241-eng)7e48d16 - optimizer: add #schema fixture directive (PR #8435 by @fivetran-kwoodbeck)1d40af1 - optimizer: unqualified semi/anti join column bound to table joined (PR #8430 by @fivetran-amrutabhimsenayachit)d9b2b96 - parser: constraint parsing fixup (PR #8457 by @georgesittas)e3f71dc - snowflake: decode backslash escape sequences in string literals (PR #8456 by @georgesittas)
b4d9e37 - athena: inherit Trino dialect, parser and generator defaults (PR #8464 by @georgesittas)
d84f7f3 - preserve BD literal semantics in Hive and Spark (PR #8455 by @georgesittas)1122046 - spark: convert ARRAY_INSERT position between 0- and 1-based dialects [CLAUDE] (PR #8460 by @anishmehta24)18520e2 - clickhouse: generate varPop for VariancePop [CLAUDE] (PR #8469 by @ekut)2960bdd - optimizer: preserve tautological aggregate filters [CODEX] (PR #8466 by @Boulea7)840b482 - postgres: keep WITH ORDINALITY alias columns on LATERAL UNNEST [GROK] (PR #8463 by @00200200)
aa70202 - optimizer: qualify struct paths with conflicting aliases [CODEX] (PR #8467 by @tobymao)b54d32f - optimizer: stop struct lookup at nearest alias [CODEX] (commit by @tobymao)5d16fa8 - ci: publish sqlglot independently of sqlglotc [CODEX] (commit by @tobymao)65a0e22 - optimizer: new projection pushdown algorithm (PR #8440 by @georgesittas)ac940f0 - tokenizer: generalize backslash escape handling, report unterminated escapes (PR #8470 by @georgesittas)feat(optimizer)!: annotate bit_and for duckdb
feat(optimizer)!: annotate bit_and for duckdb
feat(optimizer)!: annotate bitand for duckdb
Apply suggestion from @georgesittas
Co-authored-by: Jo 46752250+georgesittas@users.noreply.github.com
due to 1d0e3f3 - Fix mysql roundtrip for DATE_ADD and DATE_SUB (PR #8417 by @fivetran-amrutabhimsenayachit):
Fix mysql roundtrip for DATE_ADD and DATE_SUB (#8417)
due to 284ea43 - support IGNORE NULLS and RESPECT NULLS in window functions [CLAUDE] (PR #8412 by @UCHPUCHMAK):
support IGNORE NULLS and RESPECT NULLS in window functions [CLAUDE] (#8412)
due to abacf31 - use row-preserving default projection for windowed aggregates (PR #8381 by @treysp):
use row-preserving default projection for windowed aggregates (#8381)
due to a388416 - retain json <string> literals closes #8413 (commit by @georgesittas):
retain json <string> literals closes #8413
due to 20fa8ae - keep TRY_TO_NUMBER safe when it falls back to a cast [CLAUDE] (PR #8424 by @anishmehta24):
keep TRY_TO_NUMBER safe when it falls back to a cast [CLAUDE] (#8424)
due to b85a8c8 - exponential AST growth prevention in merge_subqueries (PR #8427 by @georgesittas):
exponential AST growth prevention in merge_subqueries (#8427)
due to 4c11d07 - avoid AUTOINCREMENT without a primary key (PR #8431 by @georgesittas):
avoid AUTOINCREMENT without a primary key (#8431)
due to d2fbb21 - preserve TIMESTAMP_FROM_PARTS time zones (#8422) (PR #8434 by @georgesittas):
preserve TIMESTAMP_FROM_PARTS time zones (#8422) (#8434)
due to afd6b69 - annotate bit_or for duckdb (PR #8438 by @deepika-kakde):
annotate bit_or for duckdb (#8438)
due to 8bd7686 - annotate bit_and for duckdb (PR #8439 by @Anuja006):
annotate bit_and for duckdb (#8439)
a313c8b - parser: support boolean expressions in update assignments closes #8428 (commit by @georgesittas)afd6b69 - optimizer: annotate bit_or for duckdb (PR #8438 by @deepika-kakde)8bd7686 - optimizer: annotate bit_and for duckdb (PR #8439 by @Anuja006)1d0e3f3 - mysql: Fix mysql roundtrip for DATE_ADD and DATE_SUB (PR #8417 by @fivetran-amrutabhimsenayachit)
284ea43 - starrocks: support IGNORE NULLS and RESPECT NULLS in window functions [CLAUDE] (PR #8412 by @UCHPUCHMAK)abacf31 - optimizer: use row-preserving default projection for windowed aggregates (PR #8381 by @treysp)a388416 - retain json <string> literals closes #8413 (commit by @georgesittas)32a9297 - optimizer: avoid accumulating parentheses when merging repeated references (PR #8425 by @georgesittas)20fa8ae - keep TRY_TO_NUMBER safe when it falls back to a cast [CLAUDE] (PR #8424 by @anishmehta24)b85a8c8 - optimizer: exponential AST growth prevention in merge_subqueries (PR #8427 by @georgesittas)8d9f5d0 - parser: handle singular ROW in FETCH and OFFSET clauses closes #8429 (commit by @georgesittas)981e492 - clickhouse: preserve GLOBAL JOIN after ON conditions fixes #8426 (commit by @georgesittas)4c11d07 - sqlite: avoid AUTOINCREMENT without a primary key (PR #8431 by @georgesittas)
87b1402 - optimizer: preserve grouping when complementing comparisons (PR #8433 by @georgesittas)
d2fbb21 - duckdb: preserve TIMESTAMP_FROM_PARTS time zones (#8422) (PR #8434 by @georgesittas)
d01e946 - optimizer: preserve ordinal ordering with duplicate aliases [CODEX] (PR #8436 by @tobymao)feat(parser): supprot AGG
feat(parser): supprot AGG (#8414)
due to bbb717e - rename union scope type to set operation for consistency (PR #8306 by @georgesittas):
rename union scope type to set operation for consistency (#8306)
due to d7dd2cd - annotate function replace for postgres (PR #8307 by @PiyaDaswadkar):
annotate function replace for postgres (#8307)
due to 9794193 - preserve the order of CUBE, ROLLUP and GROUPING SETS in GROUP BY (PR #8312 by @georgesittas):
preserve the order of CUBE, ROLLUP and GROUPING SETS in GROUP BY (#8312)
due to 8bf484c - Fix the json path with single quote issue (PR #8309 by @fivetran-amrutabhimsenayachit):
Fix the json path with single quote issue (#8309)
due to 1d753d7 - EXISTS over a scalar aggregate is always true [CLAUDE] (PR #8304 by @jbylund):
EXISTS over a scalar aggregate is always true [CLAUDE] (#8304)
due to 106ad25 - decorrelation when non-EQ keys are present (PR #8317 by @georgesittas):
decorrelation when non-EQ keys are present (#8317)
due to 0d88a21 - don't fan out EXISTS decorrelation over grouped subqueries (PR #8318 by @georgesittas):
don't fan out EXISTS decorrelation over grouped subqueries (#8318)
due to 0714112 - only propagate constants through non-nullable columns (PR #8326 by @geooo109):
only propagate constants through non-nullable columns (#8326)
due to a34fc27 - star referencing outer-scope from correlated subquery (PR #8291 by @treysp):
star referencing outer-scope from correlated subquery (#8291)
due to 9f604b3 - preserve GREATEST/LEAST NULL semantics (PR #8320 by @Kunal8954):
preserve GREATEST/LEAST NULL semantics (#8320)
due to 83abff6 - render a DynamicIdentifier in Table.name [CLAUDE] (PR #8329 by @chaitanyaatlan):
render a DynamicIdentifier in Table.name [CLAUDE] (#8329)
due to 9ec72cf - parse MySQL index prefixes (PR #8335 by @burnison):
parse MySQL index prefixes (#8335)
due to 64d6f59 - for simplify fold contradictory comparisons to FALSE only for non-null columns (PR #8338 by @geooo109):
for simplify fold contradictory comparisons to FALSE only for non-null columns (#8338)
due to 56a66cd - avoid to rewrite RIGHT JOIN ... ON TRUE to CROSS JOIN in simplify (PR #8340 by @geooo109):
avoid to rewrite RIGHT JOIN ... ON TRUE to CROSS JOIN in simplify (#8340)
due to a8719ad - preserve columns when source is a whole-row reference (PR #8332 by @fivetran-kwoodbeck):
preserve columns when source is a whole-row reference (#8332)
due to 5cfb599 - preserve precedence when replacing aliases in predicate pushdown [GLM] (PR #8342 by @tobymao):
preserve precedence when replacing aliases in predicate pushdown [GLM] (#8342)
due to 3ca8248 - preserve coalesce concat semantics closes #8343 (commit by @georgesittas):
preserve coalesce concat semantics closes #8343
due to eee4750 - preserve UNION ALL arm width when nested set op forces column retention (PR #8325 by @fivetran-kwoodbeck):
preserve UNION ALL arm width when nested set op forces column retention (#8325)
due to 4b84b4d - keep scale and length for MONEY, SMALLMONEY, XML and IMAGE [CLAUDE] (PR #8362 by @NielsZeilemaker):
keep scale and length for MONEY, SMALLMONEY, XML and IMAGE [CLAUDE] (#8362)
due to 4eb2c99 - transpile json type to varchar(max), similar to xml (commit by @georgesittas):
transpile json type to varchar(max), similar to xml
due to d53cbc9 - raise on a duplicate OFFSET instead of overwriting it [CLAUDE] (PR #8367 by @jbylund):
raise on a duplicate OFFSET instead of overwriting it [CLAUDE] (#8367)
due to 4e973f0 - honor positional column aliases declared on derived tables and CTEs (PR #8382 by @georgesittas):
honor positional column aliases declared on derived tables and CTEs (#8382)
due to 539b112 - get rid of remove_unused_selections flag in pushdown_projections (commit by @georgesittas):
get rid of remove_unused_selections flag in pushdown_projections
due to f5cb53d - qualify bare right-hand table column ref in SEMI/ANTI join ON (PR #8383 by @treysp):
qualify bare right-hand table column ref in SEMI/ANTI join ON (#8383)
due to 901a678 - preserve DuckDB DATE_TRUNC return type when simplifying. (commit by @fivetran-amrutabhimsenayachit):
preserve DuckDB DATE_TRUNC return type when simplifying.
due to 06c7b3d - preserve precedence when collapsing CASE and IF (PR #8389 by @georgesittas):
preserve precedence when collapsing CASE and IF (#8389)
due to 9beb769 - drop TIMESTAMP_LTZ precision [CODEX] (PR #8403 by @tekumara):
drop TIMESTAMP_LTZ precision [CODEX] (#8403)
due to eeece5a - preserve pagination scope in set operations (PR #8385 by @georgesittas):
preserve pagination scope in set operations (#8385)
due to 1a782c5 - keep the native IF instead of changing it to CASE [CLAUDE] (PR #8409 by @UCHPUCHMAK):
keep the native IF instead of changing it to CASE [CLAUDE] (#8409)
d7dd2cd - optimizer: annotate function replace for postgres (PR #8307 by @PiyaDaswadkar)3f154bf - mysql: add ALTER ... COMMENT. (PR #8310 by @burnison)8bf484c - generator: Fix the json path with single quote issue (PR #8309 by @fivetran-amrutabhimsenayachit)
3d25907 - executor: implement FIRST [CLAUDE] (PR #8319 by @jbylund)90d44b8 - trino: preserve Spark CONCAT_WS array semantics (PR #8391 by @georgesittas)
0256222 - parser: supprot AGG (PR #8414 by @geooo109)9794193 - parser: preserve the order of CUBE, ROLLUP and GROUPING SETS in GROUP BY (PR #8312 by @georgesittas)
3086608 - trino: prefix JSON_QUERY paths with the lax mode specifier (PR #8313 by @Kunal8954)18fc199 - optimizer: keep projections referenced by SORT BY / DISTRIBUTE BY / CLUSTER BY (PR #8302 by @fivetran-kwoodbeck)1d753d7 - optimizer: EXISTS over a scalar aggregate is always true [CLAUDE] (PR #8304 by @jbylund)c9ad903 - optimizer: preserve operand order when simplifying COALESCE comparisons (PR #8316 by @geooo109)106ad25 - optimizer: decorrelation when non-EQ keys are present (PR #8317 by @georgesittas)0d88a21 - optimizer: don't fan out EXISTS decorrelation over grouped subqueries (PR #8318 by @georgesittas)f22bcdb - optimizer: preserve unreferenced UDTF and anonymous-function projections (PR #8314 by @fivetran-kwoodbeck)0714112 - optimizer: only propagate constants through non-nullable columns (PR #8326 by @geooo109)a34fc27 - optimizer: star referencing outer-scope from correlated subquery (PR #8291 by @treysp)faa5ebf - optimizer: in simplify only move MONTH/YEAR intervals across a comparison when the move is exact (PR #8324 by @geooo109)9f604b3 - sqlite: preserve GREATEST/LEAST NULL semantics (PR #8320 by @Kunal8954)
83abff6 - expressions: render a DynamicIdentifier in Table.name [CLAUDE] (PR #8329 by @chaitanyaatlan)
8b374bd - mysql: supportUNIQUE with options (PR #8330 by @burnison)cf8a4db - snowflake: support ROLLBACK as id var and udf name (PR #8334 by @treysp)9ec72cf - mysql: parse MySQL index prefixes (PR #8335 by @burnison)4559569 - mysql: drop implicit NULLS FIRST from UNIQUE/INDEX key parts (commit by @geooo109)70951c7 - implement is_star iteratively (PR #8337 by @georgesittas)64d6f59 - optimizer: for simplify fold contradictory comparisons to FALSE only for non-null columns (PR #8338 by @geooo109)56a66cd - optimizer: avoid to rewrite RIGHT JOIN ... ON TRUE to CROSS JOIN in simplify (PR #8340 by @geooo109)a8719ad - optimizer: preserve columns when source is a whole-row reference (PR #8332 by @fivetran-kwoodbeck)5cfb599 - optimizer: preserve precedence when replacing aliases in predicate pushdown [GLM] (PR #8342 by @tobymao)
5dea557 - doris: add 15 missing words to RESERVED_KEYWORDS (PR #8357 by @raghav-reglobe)9831daa - sqlite: correct nanosecond date difference multiplier [COPILOT] (PR #8346 by @PhuocOng)
87d16d0 - singlestore: ignore nulls in percentile ordering [CODEX] (PR #8352 by @joeharris76)e27b765 - executor: plan DISTINCT before ORDER BY so the sort survives [CLAUDE] (PR #8321 by @jbylund)3ca8248 - sqlite: preserve coalesce concat semantics closes #8343 (commit by @georgesittas)eee4750 - optimizer: preserve UNION ALL arm width when nested set op forces column retention (PR #8325 by @fivetran-kwoodbeck)4b84b4d - fabric: keep scale and length for MONEY, SMALLMONEY, XML and IMAGE [CLAUDE] (PR #8362 by @NielsZeilemaker)4eb2c99 - fabric: transpile json type to varchar(max), similar to xml (commit by @georgesittas)a069a09 - tsql: parse FORMAT(x, 'ffffff') as a time format (commit by @georgesittas)338bb06 - sqlite: evaluate dynamic date-add amounts [COPILOT] (PR #8360 by @PhuocOng)
e946396 - optimizer: preserve COALESCE fallbacks after NULL [CODEX] (PR #8364 by @Kuang-xianxin)d53cbc9 - parser: raise on a duplicate OFFSET instead of overwriting it [CLAUDE] (PR #8367 by @jbylund)fa73693 - parser: support OPERATOR as implicit alias (PR #8365 by @treysp)65eb23b - spark: emit SQL function determinism correctly [CODEX] (PR #8369 by @jaideeppyne)
76004d7 - sqlite: emit GROUP_CONCAT ORDER BY instead of dropping it [CODEX] (PR #8373 by @jaideeppyne)4e973f0 - optimizer: honor positional column aliases declared on derived tables and CTEs (PR #8382 by @georgesittas)f5cb53d - optimizer: qualify bare right-hand table column ref in SEMI/ANTI join ON (PR #8383 by @treysp)901a678 - optimizer: preserve DuckDB DATE_TRUNC return type when simplifying. (commit by @fivetran-amrutabhimsenayachit)a470787 - optimizer: prevent merge_subqueries from folding set-returning projections (PR #8379 by @fivetran-kwoodbeck)06c7b3d - optimizer: preserve precedence when collapsing CASE and IF (PR #8389 by @georgesittas)
9bc418a - snowflake: parse unquoted PUT sources as exp.Put [CODEX] (PR #8400 by @tekumara)
9beb769 - duckdb: drop TIMESTAMP_LTZ precision [CODEX] (PR #8403 by @tekumara)
8b6ff93 - executor: support DISTINCT calculations CLAUDE (PR #8395 by @rubytobi)eeece5a - preserve pagination scope in set operations (PR #8385 by @georgesittas)8c3b989 - mysql: SHOW CREATE TABLE generating a syntax error [CLAUDE] (PR #8408 by @UCHPUCHMAK)1a782c5 - mysql: keep the native IF instead of changing it to CASE [CLAUDE] (PR #8409 by @UCHPUCHMAK)bbb717e - rename union scope type to set operation for consistency (PR #8306 by @georgesittas)5fac41e - optimizer: skip projection pushdown early (PR #8336 by @georgesittas)9d322b9 - handle .pyd suffix (windows builds) (commit by @georgesittas)b6aebcd - refactor NOT DETERMINISTIC on base (PR #8376 by @geooo109)19077cc - sqlite GROUP_CONCAT refactor (PR #8377 by @geooo109)539b112 - optimizer: get rid of remove_unused_selections flag in pushdown_projections (commit by @georgesittas)feat(teradata): mod() func syntax
feat(teradata): mod() func syntax
due to 8f60665 - annotate decode for postgres (PR #8157 by @PiyaDaswadkar):
annotate decode for postgres (#8157)
due to cefce19 - map JSONB_CONTAINS to @>, add JSONBContainsTopKey (PR #8156 by @georgesittas):
map JSONB_CONTAINS to @>, add JSONBContainsTopKey (#8156)
due to 21092b3 - do not normalize identifiers that name data rather than references (PR #8161 by @georgesittas):
do not normalize identifiers that name data rather than references (#8161)
due to b4c9ad5 - parse BTRIM as TRIM (PR #8181 by @jbylund):
parse BTRIM as TRIM (#8181)
due to d7ada74 - annotate Left function for posrgres (PR #8189 by @vaishnavi-polekar):
annotate Left function for posrgres (#8189)
due to 36785ce - Annotate Reverse function for Postgres (PR #8201 by @vaishnavi-polekar):
Annotate Reverse function for Postgres (#8201)
due to cddb7d0 - annotate Overlay function for Postgres (PR #8200 by @vaishnavi-polekar):
annotate Overlay function for Postgres (#8200)
due to bb77a11 - Annotate Right function for Postgres (PR #8203 by @vaishnavi-polekar):
Annotate Right function for Postgres (#8203)
due to 0575d38 - Annotate Rpad function for Postgres (PR #8204 by @vaishnavi-polekar):
Annotate Rpad function for Postgres (#8204)
due to e674a0e - Annotate SplitPart function for Postgres (PR #8205 by @vaishnavi-polekar):
Annotate SplitPart function for Postgres (#8205)
due to 585908b - Annotate To_Hex function for Postgres (PR #8206 by @vaishnavi-polekar):
Annotate To_Hex function for Postgres (#8206)
due to 542f7b4 - Annotate Format function for Postgres (PR #8207 by @vaishnavi-polekar):
Annotate Format function for Postgres (#8207)
due to a580417 - Annotate Normalize function for Postgres (PR #8208 by @vaishnavi-polekar):
Annotate Normalize function for Postgres (#8208)
due to 2c77cb7 - Annotate ToNumber function for Postgres (PR #8210 by @vaishnavi-polekar):
Annotate ToNumber function for Postgres (#8210)
due to 8efda2c - ANALYZE and DROP with multiple tables (PR #8229 by @geooo109):
ANALYZE and DROP with multiple tables (#8229)
due to e105403 - annotate maketime for postgres (PR #8253 by @PiyaDaswadkar):
annotate maketime for postgres (#8253)
due to a3a2a21 - annotate regexpreplace for postgres (PR #8256 by @PiyaDaswadkar):
annotate regexpreplace for postgres (#8256)
due to 79276b6 - annotate make_timestamp for postgres (PR #8258 by @PiyaDaswadkar):
annotate make_timestamp for postgres (#8258)
due to f481c22 - annotate bit_or for postgres (PR #8264 by @PiyaDaswadkar):
annotate bit_or for postgres (#8264)
due to 3762ef4 - Parse MOD at multiplicative precedence (PR #8259 by @fivetran-amrutabhimsenayachit):
Parse MOD at multiplicative precedence (#8259)
due to 5294204 - annotate function bit_xor for postgres (PR #8274 by @PiyaDaswadkar):
annotate function bit_xor for postgres (#8274)
due to 9fac05c - keep the COALESCE wrapping when CONCAT is generated as || (PR #8283 by @ebarkhordar):
keep the COALESCE wrapping when CONCAT is generated as || (#8283)
due to 2be2afc - don't push WHERE predicates into sources a later RIGHT or FULL join null-extends [CLAUDE] (PR #8282 by @jaideeppyne):
don't push WHERE predicates into sources a later RIGHT or FULL join null-extends [CLAUDE] (#8282)
due to b2a1bf5 - annotate localtimestamp for postgres (PR #8295 by @PiyaDaswadkar):
annotate localtimestamp for postgres (#8295)
due to f064484 - normalize DATE_PART unit casing to match EXTRACT [CLAUDE] (PR #8293 by @PhuocOng):
normalize DATE_PART unit casing to match EXTRACT [CLAUDE] (#8293)
due to bb6220b - stop dropping structured types on CREATE TABLE [GROK] (PR #8299 by @ishaan-upadhyay):
stop dropping structured types on CREATE TABLE [GROK] (#8299)
due to b3f23fe - mod generation precedence (PR #8290 by @fivetran-amrutabhimsenayachit):
mod generation precedence (#8290)
6e109b3 - executor: implement DPIPE [CLAUDE] (PR #8146 by @jbylund)8f60665 - optimizer: annotate decode for postgres (PR #8157 by @PiyaDaswadkar)3bc3350 - optimizer: Provide support for databricks div(a,b) function (PR #8143 by @fivetran-amrutabhimsenayachit)eb5d4da - executor: add REVERSE to ENV [CLAUDE] (PR #8180 by @jbylund)f3b7c6c - dremio: support 4-argument REGEXP_SPLIT (PR #8148 by @rusackas)b4c9ad5 - postgres: parse BTRIM as TRIM (PR #8181 by @jbylund)4ff8ab3 - executor: evaluate subqueries the optimizer declines to rewrite [CLAUDE] (PR #8190 by @jbylund)20f2f70 - bigquery: support digit-prefixed field names closes #8175 (PR #8196 by @georgesittas)
d7ada74 - optimizer: annotate Left function for posrgres (PR #8189 by @vaishnavi-polekar)36785ce - optimizer: Annotate Reverse function for Postgres (PR #8201 by @vaishnavi-polekar)cddb7d0 - optimizer: annotate Overlay function for Postgres (PR #8200 by @vaishnavi-polekar)bb77a11 - optimizer: Annotate Right function for Postgres (PR #8203 by @vaishnavi-polekar)0575d38 - optimizer: Annotate Rpad function for Postgres (PR #8204 by @vaishnavi-polekar)e674a0e - optimizer: Annotate SplitPart function for Postgres (PR #8205 by @vaishnavi-polekar)585908b - optimizer: Annotate To_Hex function for Postgres (PR #8206 by @vaishnavi-polekar)542f7b4 - optimizer: Annotate Format function for Postgres (PR #8207 by @vaishnavi-polekar)a580417 - optimizer: Annotate Normalize function for Postgres (PR #8208 by @vaishnavi-polekar)2c77cb7 - optimizer: Annotate ToNumber function for Postgres (PR #8210 by @vaishnavi-polekar)8579d7c - executor: support OFFSET [CLAUDE] (PR #8219 by @jbylund)69b059e - clickhouse: parse trimLeft/trimRight/trimBoth into Trim (PR #8240 by @raghav-reglobe)e105403 - optimizer: annotate maketime for postgres (PR #8253 by @PiyaDaswadkar)a3a2a21 - optimizer: annotate regexpreplace for postgres (PR #8256 by @PiyaDaswadkar)79276b6 - optimizer: annotate make_timestamp for postgres (PR #8258 by @PiyaDaswadkar)f481c22 - optimizer: annotate bit_or for postgres (PR #8264 by @PiyaDaswadkar)5294204 - optimizer: annotate function bit_xor for postgres (PR #8274 by @PiyaDaswadkar)222eb11 - clickhouse: support the view() table function [CLAUDE] (PR #8275 by @ei-grad)45158c3 - explode(map) (PR #8235 by @betodealmeida)5a91be3 - postgres: support LOCK as command (PR #8281 by @treysp)
b2a1bf5 - optimizer: annotate localtimestamp for postgres (PR #8295 by @PiyaDaswadkar)2e86ded - teradata: mod() func syntax (commit by @georgesittas)29acdfd - trino: TIME literal with a timezone (PR #8154 by @fcfangcc)8ced6d5 - duckdb: parenthesize JSON_VALUE arrow extract when parent requires it (PR #8153 by @Jacques-Peeters)cefce19 - postgres: map JSONB_CONTAINS to @>, add JSONBContainsTopKey (PR #8156 by @georgesittas)
ecf5b97 - executor: return NULL from POW instead of raising [CLAUDE] (PR #8159 by @jbylund)d89f392 - mysql: map %x and %r date format specifiers [CLAUDE] (PR #8142 by @codeAnqiang-ma)05f5484 - executor: honor nulls_first when ordering [CLAUDE] (PR #8158 by @jbylund)83129c7 - snowflake: robust filter_sql anonymous func handling, closes #8170 (commit by @georgesittas)d138cae - don't crash in exp.cast() when the input is already a cast to INTERVAL (CLAUDE) (PR #8173 by @eeshsaxena)
bf34105 - sqlite: render RegexpLike as the REGEXP operator [CLAUDE] (PR #8163 by @nikolauspschuetz)
21092b3 - optimizer: do not normalize identifiers that name data rather than references (PR #8161 by @georgesittas)ebd15d9 - executor: return NULL from typed division of NULL [CLAUDE] (PR #8178 by @jbylund)39e289a - executor: parenthesize CASE in generated Python [CLAUDE] (PR #8176 by @jbylund)f64adb4 - bigquery: array_agg(<subquery> ignore nulls) AttributeError closes #8193 (commit by @georgesittas)a570cf8 - bigquery: parse FULL/LEFT before set ops as modifiers, not aliases closes #8195 (commit by @georgesittas)6e30ee7 - parser: inline digit-prefixed field parsing to avoid deepening recursion (commit by @georgesittas)6874e1c - clickhouse: make VALUES tuple wrapping idempotent [CLAUDE] (PR #8185 by @sanket801036)7cca122 - clickhouse: preserve quoted parameterized relations (PR #8198 by @alessio-gastaldo)1ba7b27 - executor: return the rows of an ORDER BY over a set operation [CLAUDE] (PR #8214 by @jbylund)f62c344 - qualify: resolve snowflake positional column refs (PR #8202 by @treysp)038f015 - parser: parse a list of tables in DROP TABLE [CLAUDE] (PR #8223 by @sanket801036)
8efda2c - parser: ANALYZE and DROP with multiple tables (PR #8229 by @geooo109)
05eed63 - executor: execute an IN/ANY subquery that has no FROM [CLAUDE] (PR #8221 by @jbylund)91119bc - mysql: support KEY in CREATE TABLE column definition (PR #8230 by @treysp)
1e9c804 - optimizer: decline decorrelation of a negated correlated IN [CLAUDE] (PR #8236 by @jbylund)b79cbf8 - optimizer: preserve UNPIVOT passthrough columns (PR #8238 by @treysp)ce427c9 - postgres: don't emit JSON_EXTRACT_PATH with no keys for a root-only JSON path [CLAUDE] (PR #8233 by @jaideeppyne)
2a46a03 - clickhouse: generate native lag/lead instead of lagInFrame/leadInFrame (commit by @tobymao)40f285c - clickhouse: preserve multi-array arrayMap and arrayFilter (commit by @tobymao)d5e3f14 - parser, optimizer: support starrocks GENERATE_SERIES parse and qualify (PR #8246 by @geooo109)
a60171e - optimizer: apply qualified star exclusions only to the referenced source (PR #8247 by @geooo109)
88419b1 - dialect: fall back on TokenError when an operand isn't a JSON path (PR #8260 by @jaideeppyne)
f131ec9 - snowflake: parse a qualified wildcard in OBJECT_CONSTRUCT_KEEP_NULL (PR #8270 by @ishaan-upadhyay)
4303c3f - parser: don't raise ValueError on a GRANT or REVOKE with no privileges [CLAUDE] (PR #8271 by @tsamaras)3762ef4 - parser: Parse MOD at multiplicative precedence (PR #8259 by @fivetran-amrutabhimsenayachit)3110e15 - sqlite: preserve explicit end bound in RANGE CURRENT ROW window frames [CLAUDE] (PR #8267 by @AmirF194)
d0aa2b4 - optimizer: raise OptimizeError instead of corrupting the scope graph in _traverse_union [CLAUDE] (PR #8269 by @chaitanyaatlan)
9fac05c - sqlite: keep the COALESCE wrapping when CONCAT is generated as || (PR #8283 by @ebarkhordar)2be2afc - optimizer: don't push WHERE predicates into sources a later RIGHT or FULL join null-extends [CLAUDE] (PR #8282 by @jaideeppyne)9b25ca5 - mysql: parse BINARY column attribute as a column constraint [CLAUDE] (PR #8286 by @PhuocOng)67cf1ec - parser: stop GROUP BY from consuming query modifiers [CLAUDE] (PR #8285 by @Kunal8954)
6b9cb87 - postgres: preserve quoting of the one-byte "char" type [CLAUDE] (PR #8284 by @Kunal8954)
e2f4ad7 - redshift: preserve quoting of the one-byte "char" type (commit by @georgesittas)f064484 - postgres: normalize DATE_PART unit casing to match EXTRACT [CLAUDE] (PR #8293 by @PhuocOng)
d546830 - spark: distinguish GROUPING SETS suffix syntax (PR #8288 by @treysp)
c6c1fa4 - transforms: keep the table when dropping an unnamed UNIQUE constraint [CLAUDE] (PR #8300 by @PhuocOng)
bb6220b - snowflake: stop dropping structured types on CREATE TABLE [GROK] (PR #8299 by @ishaan-upadhyay)
b3f23fe - generator: mod generation precedence (PR #8290 by @fivetran-amrutabhimsenayachit)2391144 - postgres: keep the time zone argument of DATE_TRUNC [CLAUDE] (PR #8305 by @dylanpulver)1fa9653 - dialects: cache dialect classes resolved through the package getattr (PR #8303 by @tobymao)829c2b1 - clean up nth_value from [first|last] support (commit by @georgesittas)b11c3d9 - optimizer: clean up pushdown_projections (commit by @georgesittas)ceb5111 - clickhouse: pin the trim renderings for non-ClickHouse targets (commit by @tobymao)99947fb - executor: pin the clock in test_scalar_functions to fix a rollover flake [CLAUDE] (PR #8276 by @nikolauspschuetz)LENGTH was absent from the executor's ENV, so any query calling it raised name 'LENGTH' is not defined rather than answering. char_length() parses to
LENGTH was absent from the executor's ENV, so any query calling it raised
name 'LENGTH' is not defined rather than answering. char_length() parses to
the same node, so it was unavailable too.
null_if_any(len) matches Postgres on all three cases: 3 for 'abc', 0 for the
empty string, and NULL for NULL.
due to 5c12472 - stop optimizing OR-conditioned joins and anti joins (PR #8118 by @georgesittas):
stop optimizing OR-conditioned joins and anti joins (#8118)
due to 07c2241 - support and, or function syntax (PR #8065 by @fivetran-amrutabhimsenayachit):
support and, or function syntax (#8065)
due to 3d74d62 - prevent pruning columns referenced by GROUP BY / HAVING / QUALIFY (PR #8121 by @fivetran-kwoodbeck):
prevent pruning columns referenced by GROUP BY / HAVING / QUALIFY (#8121)
due to 7c56116 - annoate lag for mysql (PR #8133 by @PiyaDaswadkar):
annoate lag for mysql (#8133)
due to ac7b6d9 - do not prune projections under INTERSECT/EXCEPT ALL or GROUP BY ALL (commit by @georgesittas):
do not prune projections under INTERSECT/EXCEPT ALL or GROUP BY ALL
due to e8836e8 - annotate width_bucket for postgres (PR #8135 by @PiyaDaswadkar):
annotate width_bucket for postgres (#8135)
due to e7685a7 - represent shadowed clause column refs as qualified Columns (PR #8128 by @georgesittas):
represent shadowed clause column refs as qualified Columns (#8128)
due to 8a29419 - stop pruning implicit GROUP BY ALL keys during projection pushdown (PR #8129 by @fivetran-kwoodbeck):
stop pruning implicit GROUP BY ALL keys during projection pushdown (#8129)
due to 8ba0435 - escape gen delimited names (strings, etc) (PR #8134 by @georgesittas):
escape gen delimited names (strings, etc) (#8134)
due to 9312212 - properly support UNION BY NAME in qualify, type inference (PR #8136 by @georgesittas):
properly support UNION BY NAME in qualify, type inference (#8136)
due to 3a76dfd - annotate encode for postgresql (PR #8137 by @PiyaDaswadkar):
annotate encode for postgresql (#8137)
due to b7386b7 - scope DML / DDL query fragments properly (PR #8140 by @georgesittas):
scope DML / DDL query fragments properly (#8140)
31f3751 - trino: parse WHILE/DO/END WHILE routine statements [CLAUDE] (PR #8122 by @rusackas)07c2241 - databricks: support and, or function syntax (PR #8065 by @fivetran-amrutabhimsenayachit)9815786 - trino: parse LOOP/REPEAT/ITERATE/LEAVE routine statements [CLAUDE] (PR #8130 by @rusackas)7c56116 - optimizer: annoate lag for mysql (PR #8133 by @PiyaDaswadkar)e8836e8 - optimizer: annotate width_bucket for postgres (PR #8135 by @PiyaDaswadkar)3a76dfd - optimizer: annotate encode for postgresql (PR #8137 by @PiyaDaswadkar)98f3d66 - executor: implement ILIKE [CLAUDE] (PR #8144 by @jbylund)9a8129b - executor: implement LENGTH [CLAUDE] (PR #8145 by @jbylund)36bc768 - prql: _select_all accepts the Optional its callers pass (commit by @tobymao)5c12472 - optimizer: stop optimizing OR-conditioned joins and anti joins (PR #8118 by @georgesittas)
84447c0 - sqlite: drop a dead is not None guard on a sentinel-typed Token (commit by @tobymao)353d0ff - sqlite: emit STORED for generated columns instead of PERSISTED (PR #8123 by @dgvj-work)3d74d62 - optimizer: prevent pruning columns referenced by GROUP BY / HAVING / QUALIFY (PR #8121 by @fivetran-kwoodbeck)ac7b6d9 - optimizer: do not prune projections under INTERSECT/EXCEPT ALL or GROUP BY ALL (commit by @georgesittas)8a29419 - optimizer: stop pruning implicit GROUP BY ALL keys during projection pushdown (PR #8129 by @fivetran-kwoodbeck)8ba0435 - optimizer: escape gen delimited names (strings, etc) (PR #8134 by @georgesittas)9312212 - optimizer: properly support UNION BY NAME in qualify, type inference (PR #8136 by @georgesittas)1dae76b - executor: only truncate typed division when both operands are integers [CLAUDE] (PR #8138 by @jbylund)
7cab581 - executor: honor the negate flag on LIKE and ILIKE [CLAUDE] (PR #8139 by @jbylund)44b73a0 - executor: fullmatch like semantics (commit by @georgesittas)8619582 - optimizer: preserve identifier meta when restoring JSON dot part case (commit by @georgesittas)b7386b7 - optimizer: scope DML / DDL query fragments properly (PR #8140 by @georgesittas)e7685a7 - optimizer: represent shadowed clause column refs as qualified Columns (PR #8128 by @georgesittas)1183e88 - mypy: Bump version to v.2.3.0.post1 (PR #8126 by @VaggelisD)feat(tokenizer): add optional start/end indexes in TokenError
feat(tokenizer): add optional start/end indexes in TokenError
due to 32d44c5 - annotate bit_and for mysql (PR #8038 by @PiyaDaswadkar):
annotate bit_and for mysql (#8038)
due to 3329bb6 - annotate ArraySize as INT for Hive et al (PR #8046 by @georgesittas):
annotate ArraySize as INT for Hive et al (#8046)
due to 109eb55 - annotate bit_xor, update bit_and for mysql (PR #8045 by @PiyaDaswadkar):
annotate bit_xor, update bit_and for mysql (#8045)
due to 445d04f - annotate bit_or for mysql (PR #8047 by @PiyaDaswadkar):
annotate bit_or for mysql (#8047)
due to d4742de - prevent fabrication of struct-field refs for schema-less correlated columns (PR #8043 by @fivetran-kwoodbeck):
prevent fabrication of struct-field refs for schema-less correlated columns (#8043)
due to c0ee97f - annotate jsonobjecttag for mysql (PR #8048 by @PiyaDaswadkar):
annotate jsonobjecttag for mysql (#8048)
due to 00ca3ed - only qualify lateral sources in their defining scope (PR #8049 by @georgesittas):
only qualify lateral sources in their defining scope (#8049)
due to cb4a821 - trace columns through chained (UN)PIVOT operators (PR #8042 by @georgesittas):
trace columns through chained (UN)PIVOT operators (#8042)
due to 9976fe1 - annotate jsonobject for mysql (PR #8052 by @PiyaDaswadkar):
annotate jsonobject for mysql (#8052)
due to adff713 - annotate jsonextract for mysql (PR #8054 by @PiyaDaswadkar):
annotate jsonextract for mysql (#8054)
due to 5724156 - annotate jsonkeys for mysql (PR #8055 by @PiyaDaswadkar):
annotate jsonkeys for mysql (#8055)
due to ebb9700 - annotate jsontype for mysql (PR #8056 by @PiyaDaswadkar):
annotate jsontype for mysql (#8056)
due to 7daf3e4 - annotate jsonarrayappend for mysql (PR #8057 by @PiyaDaswadkar):
annotate jsonarrayappend for mysql (#8057)
due to cc6ef38 - annotate jsonarrayinsert for mysql (PR #8058 by @PiyaDaswadkar):
annotate jsonarrayinsert for mysql (#8058)
due to 02bc4ed - annotate jsonremove for mysql (PR #8059 by @PiyaDaswadkar):
annotate jsonremove for mysql (#8059)
due to 4eedeeb - annotate jsonset for mysql (PR #8060 by @PiyaDaswadkar):
annotate jsonset for mysql (#8060)
due to a537f84 - annotate grouping for mysql (PR #8062 by @PiyaDaswadkar):
annotate grouping for mysql (#8062)
due to 4e31179 - annotate uuid for mysql (PR #8066 by @PiyaDaswadkar):
annotate uuid for mysql (#8066)
due to 7fa1fbd - annotate ToChar return type (PR #8064 by @vaishnavi-polekar):
annotate ToChar return type (#8064)
due to 30c278e - annotate boolean binary predicates as BOOLEAN [CLAUDE] (PR #8069 by @DivyaNarahari97):
annotate boolean binary predicates as BOOLEAN [CLAUDE] (#8069)
due to a9c0bea - annotate types for adjacent, extends left/right, overlaps (commit by @georgesittas):
annotate types for adjacent, extends left/right, overlaps
due to 9e98d2c - annotate currentrole for mysql (PR #8072 by @PiyaDaswadkar):
annotate currentrole for mysql (#8072)
due to d94b9d5 - annotate TO_CHAR for Spark (commit by @georgesittas):
annotate TO_CHAR for Spark
due to d6d174e - map json_extract func to ->> closes #8076 (commit by @georgesittas):
map json_extract func to ->> closes #8076
due to fa10c2c - preserve json_extract semantics instead of rewriting to -> (PR #8082 by @RogerHYang):
preserve json_extract semantics instead of rewriting to -> (#8082)
due to db7e0fc - annotate current_role function (PR #8094 by @deepika-kakde):
annotate current_role function (#8094)
due to c00ca98 - annotate CurrentRole as VARCHAR (commit by @georgesittas):
annotate CurrentRole as VARCHAR
due to ee1658a - annotate Grouping function for databricks (PR #8098 by @vaishnavi-polekar):
annotate Grouping function for databricks (#8098)
due to 13e6c07 - annotate grouping properly in the hive hierarchy (commit by @georgesittas):
annotate grouping properly in the hive hierarchy
due to afedce6 - annotate lead for mysql (PR #8090 by @PiyaDaswadkar):
annotate lead for mysql (#8090)
due to 66ecca3 - parse MODIFY COLUMN as AlterColumn (PR #8091 by @dgvj-work):
parse MODIFY COLUMN as AlterColumn (#8091)
due to f7dfbac - classify boolean binary operators as Predicate (PR #8073 by @georgesittas):
classify boolean binary operators as Predicate (#8073)
due to 7810755 - move JSON extraction operators to Postgres's binary-operator precedence tier (PR #8063 by @fivetran-kwoodbeck):
move JSON extraction operators to Postgres's binary-operator precedence tier (#8063)
due to 2f914c5 - parse ||, -> and ->> as a single tier that binds tighter than arithmetic closes #8115 (commit by @georgesittas):
parse ||, -> and ->> as a single tier that binds tighter than arithmetic closes #8115
due to 9fc3578 - specify variable length Func spill arg explicitly (PR #8120 by @georgesittas):
specify variable length Func spill arg explicitly (#8120)
32d44c5 - optimizer: annotate bit_and for mysql (PR #8038 by @PiyaDaswadkar)109eb55 - optimizer: annotate bit_xor, update bit_and for mysql (PR #8045 by @PiyaDaswadkar)445d04f - optimizer: annotate bit_or for mysql (PR #8047 by @PiyaDaswadkar)c0ee97f - optimizer: annotate jsonobjecttag for mysql (PR #8048 by @PiyaDaswadkar)9976fe1 - optimizer: annotate jsonobject for mysql (PR #8052 by @PiyaDaswadkar)adff713 - optimizer: annotate jsonextract for mysql (PR #8054 by @PiyaDaswadkar)5724156 - optimizer: annotate jsonkeys for mysql (PR #8055 by @PiyaDaswadkar)ebb9700 - optimizer: annotate jsontype for mysql (PR #8056 by @PiyaDaswadkar)7daf3e4 - optimizer: annotate jsonarrayappend for mysql (PR #8057 by @PiyaDaswadkar)cc6ef38 - optimizer: annotate jsonarrayinsert for mysql (PR #8058 by @PiyaDaswadkar)ffa349a - trino: parse IF/ELSEIF/ELSE routine statements [CLAUDE] (PR #8044 by @rusackas)02bc4ed - optimizer: annotate jsonremove for mysql (PR #8059 by @PiyaDaswadkar)4eedeeb - optimizer: annotate jsonset for mysql (PR #8060 by @PiyaDaswadkar)a537f84 - optimizer: annotate grouping for mysql (PR #8062 by @PiyaDaswadkar)4e31179 - optimizer: annotate uuid for mysql (PR #8066 by @PiyaDaswadkar)7fa1fbd - optimizer: annotate ToChar return type (PR #8064 by @vaishnavi-polekar)a9c0bea - optimizer: annotate types for adjacent, extends left/right, overlaps (commit by @georgesittas)9e98d2c - optimizer: annotate currentrole for mysql (PR #8072 by @PiyaDaswadkar)d94b9d5 - optimizer: annotate TO_CHAR for Spark (commit by @georgesittas)db7e0fc - optimizer: annotate current_role function (PR #8094 by @deepika-kakde)c00ca98 - optimizer: annotate CurrentRole as VARCHAR (commit by @georgesittas)ee1658a - optimizer: annotate Grouping function for databricks (PR #8098 by @vaishnavi-polekar)011c461 - trino: parse CASE routine statements [CLAUDE] (PR #8068 by @rusackas)afedce6 - optimizer: annotate lead for mysql (PR #8090 by @PiyaDaswadkar)bbfb497 - tokenizer: add optional start/end indexes in TokenError (commit by @georgesittas)db410ab - optimizer: remap GROUP BY ordinals on projection prune [GROK] (PR #8025 by @PriyankaDaneva)3329bb6 - optimizer: annotate ArraySize as INT for Hive et al (PR #8046 by @georgesittas)d4742de - optimizer: prevent fabrication of struct-field refs for schema-less correlated columns (PR #8043 by @fivetran-kwoodbeck)00ca3ed - optimizer: only qualify lateral sources in their defining scope (PR #8049 by @georgesittas)cb4a821 - lineage: trace columns through chained (UN)PIVOT operators (PR #8042 by @georgesittas)dedc7e3 - optimizer: expand qualify inner columns with QUALIFY/HAVING (PR #8050 by @fivetran-kwoodbeck)0c19a6d - tsql: support nullability in ALTER COLUMN (PR #8053 by @sravankumarkunadi)463c015 - optimizer: restore FLOOR type annotation lost in ANNOTATORS refactor [CLAUDE] (PR #8067 by @DivyaNarahari97)30c278e - optimizer: annotate boolean binary predicates as BOOLEAN [CLAUDE] (PR #8069 by @DivyaNarahari97)d6d174e - sqlite: map json_extract func to ->> closes #8076 (commit by @georgesittas)fa10c2c - sqlite: preserve json_extract semantics instead of rewriting to -> (PR #8082 by @RogerHYang)
b4776a4 - generator: avoid materializing huge integers when capping numeric type params, closes #8113 (commit by @tobymao)df5ec1e - parser: break out of the function-property loop on a failed property, closes #8112 (commit by @tobymao)c25225d - generator: double the delimiter in Unicode literals instead of applying string escapes, closes #8110 (commit by @dgvj-work)13e6c07 - optimizer: annotate grouping properly in the hive hierarchy (commit by @georgesittas)66ecca3 - clickhouse: parse MODIFY COLUMN as AlterColumn (PR #8091 by @dgvj-work)
f7dfbac - expressions: classify boolean binary operators as Predicate (PR #8073 by @georgesittas)617989c - clickhouse: clean up MODIFY COLUMN handling (commit by @georgesittas)f15c499 - optimizer: keep parens around a predicate under bitwise NOT (PR #8119 by @georgesittas)7810755 - parser: move JSON extraction operators to Postgres's binary-operator precedence tier (PR #8063 by @fivetran-kwoodbeck)
2f914c5 - sqlite: parse ||, -> and ->> as a single tier that binds tighter than arithmetic closes #8115 (commit by @georgesittas)381f49c - trino: parse inline UDF IF branches iteraitvely (commit by @georgesittas)eb7e248 - clean up redundant type annotations (commit by @georgesittas)9fc3578 - expressions: specify variable length Func spill arg explicitly (PR #8120 by @georgesittas)5258f24 - sqlite: cover root, non-literal and subscript paths for json_extract (commit by @georgesittas)c164cce - default UNKNOWN for mysql BIT_AND (commit by @geooo109)515083c - don't leak decimal.InvalidOperation on bad inputs (PR #8117 by @eeshsaxena)e36ba73 - improve type hints to facilitate better mypyc compilation (commit by @georgesittas)fix(optimizer)!: resolve pivot chain aliases in star expansion and ty…
fix(optimizer)!: resolve pivot chain aliases in star expansion and ty…
Chore: retrigger v30.14.0 release
Chore: retrigger v30.14.0 release
due to a715f9f - type annotation for databricks NANVL, SIGN, SHIFTLEFT, SIGNUM, SHUFFLE (PR #7896 by @fivetran-amrutabhimsenayachit):
type annotation for databricks NANVL, SIGN, SHIFTLEFT, SIGNUM, SHUFFLE (#7896)
due to acb635a - don't normalize quoted derived output aliases in qualify_outputs (PR #7921 by @georgesittas):
don't normalize quoted derived output aliases in qualify_outputs (#7921)
due to c090f35 - dedupe colliding star expanded aliases (PR #7872 by @fivetran-kwoodbeck):
dedupe colliding star expanded aliases (#7872)
due to 1b442c9 - handle non-literal star ILIKE patterns and Snowflake backslash escapes (PR #7918 by @georgesittas):
handle non-literal star ILIKE patterns and Snowflake backslash escapes (#7918)
due to 66316e3 - parse single-digit hour/minute/second without padding CLAUDE (PR #7925 by @deepyaman):
parse single-digit hour/minute/second without padding CLAUDE (#7925)
due to c75b7b6 - annotate unhex for duckdb (PR #7930 by @vaishnavi-polekar):
annotate unhex for duckdb (#7930)
due to 88c4b4a - parse and annotate duckdb FROM_HEX (PR #7931 by @geooo109):
parse and annotate duckdb FROM_HEX (#7931)
due to a7725f2 - annotate convert_tz for mysql (PR #7932 by @PiyaDaswadkar):
annotate convert_tz for mysql (#7932)
due to 85e0b7c - annotate UTC_DATE for MySQL (PR #7935 by @PiyaDaswadkar):
annotate UTC_DATE for MySQL (#7935)
due to 7fbb14f - annotate utc_time for mysql (PR #7936 by @PiyaDaswadkar):
annotate utc_time for mysql (#7936)
due to 212fe55 - annotate utc_timestamp for mysql (PR #7937 by @PiyaDaswadkar):
annotate utc_timestamp for mysql (#7937)
due to 166cd4d - annotate substringindex for mysql (PR #7945 by @PiyaDaswadkar):
annotate substringindex for mysql (#7945)
due to 26078eb - annotate unhex for mysql (PR #7944 by @PiyaDaswadkar):
annotate unhex for mysql (#7944)
due to 33de21f - annotate regexpsubstr for mysql (PR #7946 by @PiyaDaswadkar):
annotate regexpsubstr for mysql (#7946)
due to 2aae7f7 - preserve x IS NOT NULL instead of normalizing to NOT x IS NULL (PR #7938 by @geooo109):
preserve x IS NOT NULL instead of normalizing to NOT x IS NULL (#7938)
c402094 - duckdb: transpile BigQuery ARRAY_CONCAT_AGG to DuckDB (PR #7891 by @sirockin)8be76d2 - duckdb: convert ARRAY_AGG IGNORE NULLS to FILTER clause (PR #7893 by @sirockin)a715f9f - optimizer: type annotation for databricks NANVL, SIGN, SHIFTLEFT, SIGNUM, SHUFFLE (PR #7896 by @fivetran-amrutabhimsenayachit)ee5a989 - mysql: support INSERT ... SET ... syntax closes #7927 (PR #7929 by @georgesittas)
c75b7b6 - optimizer: annotate unhex for duckdb (PR #7930 by @vaishnavi-polekar)88c4b4a - optimizer: parse and annotate duckdb FROM_HEX (PR #7931 by @geooo109)3cd3e58 - duckdb: transpile BigQuery IN UNNEST(array) to ARRAY_CONTAINS (PR #7892 by @sirockin)a7725f2 - optimizer: annotate convert_tz for mysql (PR #7932 by @PiyaDaswadkar)85e0b7c - optimizer: annotate UTC_DATE for MySQL (PR #7935 by @PiyaDaswadkar)7fbb14f - optimizer: annotate utc_time for mysql (PR #7936 by @PiyaDaswadkar)212fe55 - optimizer: annotate utc_timestamp for mysql (PR #7937 by @PiyaDaswadkar)6bb78c9 - snowflake: add support for input => select ... kwarg syntax (commit by @georgesittas)166cd4d - optimizer: annotate substringindex for mysql (PR #7945 by @PiyaDaswadkar)26078eb - optimizer: annotate unhex for mysql (PR #7944 by @PiyaDaswadkar)33de21f - optimizer: annotate regexpsubstr for mysql (PR #7946 by @PiyaDaswadkar)2aae7f7 - postgres: preserve x IS NOT NULL instead of normalizing to NOT x IS NULL (PR #7938 by @geooo109)
c368c5e - duckdb: handle ORDER BY and LIMIT for bq ARRAY_CONCAT_AGG (PR #7920 by @geooo109)acb635a - optimizer: don't normalize quoted derived output aliases in qualify_outputs (PR #7921 by @georgesittas)
c090f35 - optimizer: dedupe colliding star expanded aliases (PR #7872 by @fivetran-kwoodbeck)1b442c9 - handle non-literal star ILIKE patterns and Snowflake backslash escapes (PR #7918 by @georgesittas)66316e3 - hive: parse single-digit hour/minute/second without padding CLAUDE (PR #7925 by @deepyaman)e265dca - optimizer: canonicalize unaliased scalar subquery projections (PR #7928 by @fivetran-kwoodbeck)b0a8635 - parser: treat TokenType.OUT as an identifier token (PR #7933 by @georgesittas)ba0bff3 - jsonpath: preserve falsey union members (PR #7957 by @dev-willbird1936)
b9fd4c9 - typing: on_qualify expects a Table argument (commit by @georgesittas)1a38c05 - optimizer: speed up merge_subqueries (PR #7924 by @fivetran-kwoodbeck)b8180fd - optimizer: speed up merge_subqueries (PR #7924 by @fivetran-kwoodbeck)cda0147 - generator: refactor ARRAY_AGG tests and bq -> duckdb transpilation (PR #7922 by @geooo109)f37d1b5 - duckdb: refactor transpilation of IN UNNEST (commit by @geooo109)296d8b0 - polish README file (PR #7947 by @georgesittas)29c651b - retrigger v30.14.0 release (commit by @georgesittas)Sync w/ integration tests
Sync w/ integration tests
due to 58f5bf9 - databricks type annotation for REGEXP_COUNT, REGEXP_EXTRACT_ALL (PR #7797 by @fivetran-amrutabhimsenayachit):
databricks type annotation for REGEXP_COUNT, REGEXP_EXTRACT_ALL (#7797)
due to fd6d4d6 - annotate repeat function (PR #7803 by @PiyaDaswadkar):
annotate repeat function (#7803)
due to 93802ce - annotate type for REGEXP_REPLACE hive chain (PR #7804 by @vishvambhar-ranoshe):
annotate type for REGEXP_REPLACE hive chain (#7804)
due to cbc9206 - annotate to_json for hive-like dialects (PR #7814 by @vishvambhar-ranoshe):
annotate to_json for hive-like dialects (#7814)
due to 85fea2c - more robust date formats (PR #7813 by @geooo109):
more robust date formats (#7813)
due to abdac97 - annotate str_to_map for hive-like dialects (PR #7822 by @vishvambhar-ranoshe):
annotate str_to_map for hive-like dialects (#7822)
due to 79d1061 - add databricks type inference for REGEXP_INSTR, REGEXP_LIKE, REGEXP_SUBSTR, REGR_AVGX (PR #7815 by @fivetran-amrutabhimsenayachit):
add databricks type inference for REGEXP_INSTR, REGEXP_LIKE, REGEXP_SUBSTR, REGR_AVGX (#7815)
due to aeb2711 - parse regexp extract (and variants) correctly (commit by @georgesittas):
parse regexp extract (and variants) correctly
due to b29ef61 - true/null in t.true/null should be identifiers (PR #7831 by @georgesittas):
true/null in t.true/null should be identifiers (#7831)
due to a5ab08b - preserve SHA256/SHA512 digest semantics, render SHA2 as hex string (PR #7824 by @Pawansingh3889):
preserve SHA256/SHA512 digest semantics, render SHA2 as hex string (#7824)
due to e9b0140 - normalization of synthesized output aliases (PR #7816 by @fivetran-kwoodbeck):
normalization of synthesized output aliases (#7816)
due to 94e82ff - map native SHA512 to SHA2Digest, mirroring SHA256 (PR #7832 by @Pawansingh3889):
map native SHA512 to SHA2Digest, mirroring SHA256 (#7832)
due to c2fac5d - annotate insert for mysql (PR #7836 by @PiyaDaswadkar):
annotate insert for mysql (#7836)
due to f37c71e - use a dedicated token for PROJECTION closes #7837 (commit by @georgesittas):
use a dedicated token for PROJECTION closes #7837
due to 0ce4063 - annotate hex for mysql (PR #7841 by @PiyaDaswadkar):
annotate hex for mysql (#7841)
due to da55602 - delimited text incorrectly consumed by _match_texts, _match_text_seq (PR #7843 by @georgesittas):
delimited text incorrectly consumed by _match_texts, _match_text_seq (#7843)
due to 77c7814 - annotate type for databricks REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE (PR #7820 by @fivetran-amrutabhimsenayachit):
annotate type for databricks REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE (#7820)
due to ab77e9f - annotate lpad for mysql (PR #7846 by @PiyaDaswadkar):
annotate lpad for mysql (#7846)
due to 93d1659 - annotate left for mysql (PR #7848 by @PiyaDaswadkar):
annotate left for mysql (#7848)
due to 122b44f - merge window issue (PR #7845 by @fivetran-kwoodbeck):
merge window issue (#7845)
due to 3ec3506 - annotate localtimestamp for mysql (PR #7850 by @PiyaDaswadkar):
annotate localtimestamp for mysql (#7850)
due to fdb1b86 - annotate format for mysql (PR #7858 by @PiyaDaswadkar):
annotate format for mysql (#7858)
due to 88a0143 - annotate corr for clickhouse (PR #7860 by @vaishnavi-polekar):
annotate corr for clickhouse (#7860)
due to c2e935f - preserve leading zeros in subsecond_precision (PR #7854 by @c-tonneslan):
preserve leading zeros in subsecond_precision (#7854)
due to 70c0a18 - merge_subqueries issue with numeric literal ORDER BY (PR #7856 by @fivetran-kwoodbeck):
merge_subqueries issue with numeric literal ORDER BY (#7856)
due to adb29c7 - annotate minute for mysql (PR #7863 by @PiyaDaswadkar):
annotate minute for mysql (#7863)
due to 79fb3af - annotate right for mysql (PR #7862 by @PiyaDaswadkar):
annotate right for mysql (#7862)
due to 21ebde8 - type annotation for databricks REGR_SXX, REGR_SXY, REGR_SYY (PR #7851 by @fivetran-amrutabhimsenayachit):
type annotation for databricks REGR_SXX, REGR_SXY, REGR_SYY (#7851)
due to 26123c1 - incorrect handling of negated (i)like operator closes #7866 (PR #7867 by @georgesittas):
incorrect handling of negated (i)like operator closes #7866 (#7867)
due to e17ab30 - evict mutated projections from the annotator cache (PR #7868 by @georgesittas):
evict mutated projections from the annotator cache (#7868)
due to 8c7941f - handle escaped quote before closing multi-char delimiter, preserve escapes in raw strings (PR #7870 by @georgesittas):
handle escaped quote before closing multi-char delimiter, preserve escapes in raw strings (#7870)
due to f617f30 - type annotation for databricks RINT (PR #7869 by @fivetran-amrutabhimsenayachit):
type annotation for databricks RINT (#7869)
due to a62c4d9 - annotate reverse for mysql (PR #7861 by @PiyaDaswadkar):
annotate reverse for mysql (#7861)
due to 6581f8c - parse month/day without leading 0 (PR #7773 by @deepyaman):
parse month/day without leading 0 (#7773)
due to 0a374bf - simplify lax/strict %m, %d transpilation to hive hierarchy (PR #7873 by @georgesittas):
simplify lax/strict %m, %d transpilation to hive hierarchy (#7873)
due to 559b2c1 - transpile DATEDIFF with day from MySQL correctly (commit by @georgesittas):
transpile DATEDIFF with day from MySQL correctly
due to 91a284b - parse camelCase dateTrunc, not just date_trunc [CLAUDE] (PR #7876 by @chuenchen309):
parse camelCase dateTrunc, not just date_trunc [CLAUDE] (#7876)
due to 5e08bb9 - preserve UNPIVOT IN-list literal labels [CLAUDE] (PR #7877 by @chuenchen309):
preserve UNPIVOT IN-list literal labels [CLAUDE] (#7877)
due to 618804c - resolve NATURAL JOIN common columns in qualify [CLAUDE] (PR #7880 by @chuenchen309):
resolve NATURAL JOIN common columns in qualify [CLAUDE] (#7880)
due to 72a125e - type annotation for databricks RTRIM, SEARCH (PR #7886 by @fivetran-amrutabhimsenayachit):
type annotation for databricks RTRIM, SEARCH (#7886)
due to 2f9c628 - improve generator of FILTER() (PR #7889 by @georgesittas):
improve generator of FILTER() (#7889)
due to a85eeff - properly support VALUES as a set operation operand (PR #7897 by @georgesittas):
properly support VALUES as a set operation operand (#7897)
due to 812294b - annotate decode for duckdb (PR #7910 by @vaishnavi-polekar):
annotate decode for duckdb (#7910)
due to ae702b1 - don't push predicates into a subquery with LIMIT/OFFSET [CLAUDE] (PR #7901 by @chuenchen309):
don't push predicates into a subquery with LIMIT/OFFSET [CLAUDE] (#7901)
due to 199547a - keep columns a recursive CTE reads from itself [CLAUDE] (PR #7899 by @isaka1022):
keep columns a recursive CTE reads from itself [CLAUDE] (#7899)
due to 24d6d73 - respect date part boundary semantics in DATE_DIFF transpilation (PR #7911 by @georgesittas):
respect date part boundary semantics in DATE_DIFF transpilation (#7911)
due to da43c5c - annotate truncate for mysql (PR #7914 by @PiyaDaswadkar):
annotate truncate for mysql (#7914)
due to b110593 - annotate encode for duckdb (PR #7915 by @vaishnavi-polekar):
annotate encode for duckdb (#7915)
due to 755e95e - preserve ILIKE roundtrip (commit by @georgesittas):
preserve ILIKE roundtrip
due to c933fe3 - canonicalize numeric-literal GROUP BY to positional ordinal on merge (PR #7883 by @fivetran-kwoodbeck):
canonicalize numeric-literal GROUP BY to positional ordinal on merge (#7883)
58f5bf9 - optimizer: databricks type annotation for REGEXP_COUNT, REGEXP_EXTRACT_ALL (PR #7797 by @fivetran-amrutabhimsenayachit)fd6d4d6 - optimizer: annotate repeat function (PR #7803 by @PiyaDaswadkar)cbc9206 - optimizer: annotate to_json for hive-like dialects (PR #7814 by @vishvambhar-ranoshe)abdac97 - typing: annotate str_to_map for hive-like dialects (PR #7822 by @vishvambhar-ranoshe)79d1061 - typing: add databricks type inference for REGEXP_INSTR, REGEXP_LIKE, REGEXP_SUBSTR, REGR_AVGX (PR #7815 by @fivetran-amrutabhimsenayachit)c2fac5d - optimizer: annotate insert for mysql (PR #7836 by @PiyaDaswadkar)ce1aab9 - duckdb: transpile snowflake count_if all-null semantics closes #7833 (commit by @georgesittas)0ce4063 - optimizer: annotate hex for mysql (PR #7841 by @PiyaDaswadkar)ab77e9f - optimizer: annotate lpad for mysql (PR #7846 by @PiyaDaswadkar)93d1659 - optimizer: annotate left for mysql (PR #7848 by @PiyaDaswadkar)3ec3506 - optimizer: annotate localtimestamp for mysql (PR #7850 by @PiyaDaswadkar)fdb1b86 - optimizer: annotate format for mysql (PR #7858 by @PiyaDaswadkar)88a0143 - optimizer: annotate corr for clickhouse (PR #7860 by @vaishnavi-polekar)adb29c7 - optimizer: annotate minute for mysql (PR #7863 by @PiyaDaswadkar)79fb3af - optimizer: annotate right for mysql (PR #7862 by @PiyaDaswadkar)21ebde8 - optimizer: type annotation for databricks REGR_SXX, REGR_SXY, REGR_SYY (PR #7851 by @fivetran-amrutabhimsenayachit)f617f30 - optimizer: type annotation for databricks RINT (PR #7869 by @fivetran-amrutabhimsenayachit)a62c4d9 - optimizer: annotate reverse for mysql (PR #7861 by @PiyaDaswadkar)31bc57e - dremio: support AT SNAPSHOT and AT TIMESTAMP time travel [CLAUDE] (PR #7888 by @nruia-penn)72a125e - optimizer: type annotation for databricks RTRIM, SEARCH (PR #7886 by @fivetran-amrutabhimsenayachit)19983a7 - databricks: support timeseries pk constraints closes #7887 (commit by @georgesittas)a60ec81 - dax scaffolding (PR #7890 by @tobymao)812294b - optimizer: annotate decode for duckdb (PR #7910 by @vaishnavi-polekar)da43c5c - optimizer: annotate truncate for mysql (PR #7914 by @PiyaDaswadkar)b110593 - optimizer: annotate encode for duckdb (PR #7915 by @vaishnavi-polekar)93802ce - optimizer: annotate type for REGEXP_REPLACE hive chain (PR #7804 by @vishvambhar-ranoshe)287cc39 - parser: prioritize parsing parenthesized expressions as Tuple when multi-expression CSV exists (PR #7807 by @Hasnaathussain)
4e271fb - duckdb: default missing year to 1970 for BigQuery PARSE_DATE/PARSE_TIMESTAMP (PR #7800 by @greymoth-jp)cf7e4bf - parser: parse chained range operators (IN/LIKE) instead of raising [CLAUDE] (PR #7809 by @jichaowang02-lang)
e17d918 - trino: transpile FROM_ISO8601_TIMESTAMP_NANOS to cast (PR #7808 by @greymoth-jp)85fea2c - postgres: more robust date formats (PR #7813 by @geooo109)52b8f4a - hive: PARSE_JSON and TO_JSON roundtrip (PR #7818 by @geooo109)ed70375 - optimizer: incorrect canonical names for certain qualified star queries (PR #7819 by @fivetran-kwoodbeck)aeb2711 - clickhouse: parse regexp extract (and variants) correctly (commit by @georgesittas)faf15e6 - generator: emit LIMIT 1 for countless FETCH FIRST ROWS ONLY CLAUDE (PR #7825 by @gaoflow)a66104f - bigquery: mypyc generation bug due to wrong type hints closes #7826 (commit by @georgesittas)b29ef61 - true/null in t.true/null should be identifiers (PR #7831 by @georgesittas)a5ab08b - presto: preserve SHA256/SHA512 digest semantics, render SHA2 as hex string (PR #7824 by @Pawansingh3889)e9b0140 - optimizer: normalization of synthesized output aliases (PR #7816 by @fivetran-kwoodbeck)94e82ff - bigquery: map native SHA512 to SHA2Digest, mirroring SHA256 (PR #7832 by @Pawansingh3889)bcc8b1c - tsql: parse EXEC return status parameter (CLAUDE) (PR #7835 by @AnayGarodia)
f37c71e - clickhouse: use a dedicated token for PROJECTION closes #7837 (commit by @georgesittas)da55602 - parser: delimited text incorrectly consumed by _match_texts, _match_text_seq (PR #7843 by @georgesittas)77c7814 - optimizer: annotate type for databricks REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE (PR #7820 by @fivetran-amrutabhimsenayachit)122b44f - optimizer: merge window issue (PR #7845 by @fivetran-kwoodbeck)c2e935f - preserve leading zeros in subsecond_precision (PR #7854 by @c-tonneslan)70c0a18 - optimizer: merge_subqueries issue with numeric literal ORDER BY (PR #7856 by @fivetran-kwoodbeck)2d86a76 - bigquery: transpile single projection GENERATE_SERIES from postgres (PR #7855 by @geooo109)
26123c1 - optimizer: incorrect handling of negated (i)like operator closes #7866 (PR #7867 by @georgesittas)e17ab30 - optimizer: evict mutated projections from the annotator cache (PR #7868 by @georgesittas)8c7941f - tokenizer: handle escaped quote before closing multi-char delimiter, preserve escapes in raw strings (PR #7870 by @georgesittas)6581f8c - hive: parse month/day without leading 0 (PR #7773 by @deepyaman)7099d89 - optimizer: incorrect merge with literal alias collision (PR #7847 by @fivetran-kwoodbeck)559b2c1 - postgres: transpile DATEDIFF with day from MySQL correctly (commit by @georgesittas)91a284b - clickhouse: parse camelCase dateTrunc, not just date_trunc [CLAUDE] (PR #7876 by @chuenchen309)5e08bb9 - oracle: preserve UNPIVOT IN-list literal labels [CLAUDE] (PR #7877 by @chuenchen309)a7058d6 - oracle: unrecognized WITH hangs the parser [CLAUDE] (PR #7881 by @chuenchen309)618804c - optimizer: resolve NATURAL JOIN common columns in qualify [CLAUDE] (PR #7880 by @chuenchen309)
b2c07a1 - snowflake: wrap FILTER condition inside DISTINCT/ORDER BY args [CLAUDE] (PR #7884 by @chuenchen309)2814421 - snowflake: parse AUTOINCREMENT parts independently [CLAUDE] (PR #7885 by @chuenchen309)a85eeff - properly support VALUES as a set operation operand (PR #7897 by @georgesittas)a247168 - use .this and .expression instead of .left and .right in more places (commit by @georgesittas)a034db7 - sqlite: unwrap INTERVAL amount in DATE_ADD [CLAUDE] (PR #7908 by @chuenchen309)ae702b1 - optimizer: don't push predicates into a subquery with LIMIT/OFFSET [CLAUDE] (PR #7901 by @chuenchen309)655876f - optimizer: don't push predicates into a subquery with QUALIFY (commit by @georgesittas)199547a - optimizer: keep columns a recursive CTE reads from itself [CLAUDE] (PR #7899 by @isaka1022)47e255d - snowflake: rewrite COUNT(*) FILTER to COUNT_IF [CLAUDE] (PR #7900 by @chuenchen309)e4d2ea5 - presto: TIMESTAMP_DIFF/DATETIME_DIFF transpilation to Presto/Trino [CLAUDE] (PR #7895 by @winklemad)1bc99a9 - snowflake: more robust transpilation for duckdb COUNT(*) FILTER (WHERE) (commit by @geooo109)24d6d73 - presto: respect date part boundary semantics in DATE_DIFF transpilation (PR #7911 by @georgesittas)6d29878 - drill: generate native ILIKE function instead of invalid infix operator (PR #7913 by @vidigoat)a1e3338 - postgres: support unicode escape string literals U&'...' closes #7898 (commit by @georgesittas)169b836 - duckdb: position table alias correctly when combined with time-travel syntax closes #7916 (commit by @georgesittas)c933fe3 - optimizer: canonicalize numeric-literal GROUP BY to positional ordinal on merge (PR #7883 by @fivetran-kwoodbeck)693b3e3 - optimizer: memoize UNNEST/EXPLODE column-type resolution [CLAUDE] (PR #7823 by @dvryaboy)
e58f3cf - tokens: remove per-thread tokenizer core cache (commit by @tobymao)0a374bf - simplify lax/strict %m, %d transpilation to hive hierarchy (PR #7873 by @georgesittas)2f9c628 - snowflake: improve generator of FILTER() (PR #7889 by @georgesittas)bbb376d - tighten the self-referencing cte check in projection pushdown (commit by @georgesittas)755e95e - druid: preserve ILIKE roundtrip (commit by @georgesittas)b9051e7 - mysql: add string input test for MAKETIME (PR #7859 by @PiyaDaswadkar)af73b1c - tests for REGEXP_REPLACE hive chain (commit by @geooo109)d5a01c4 - minor refactor for REGEXP_REPLACE tests (commit by @geooo109)6c1f081 - improve sqlglotc detection in the tokenizer (PR #7812 by @georgesittas)
5d9c56e - add policy regarding LLM-assisted PRs (PR #7817 by @georgesittas)aedf83a - remove invalid CONCAT_WS redshift test (commit by @geooo109)daf9aeb - ci: cache sqlglotc versions (PR #7849 by @geooo109)b58dd66 - extend LOCALTIMESTAMP annotation tests for mysql (commit by @geooo109)65491dc - mysql format 3 arg annotate test (commit by @geooo109)b83659b - compile sqlglotc in parallel by default (PR #7865 by @georgesittas)ceda825 - clickhouse CORR type annotation clean up (commit by @geooo109)baf9534 - minor annotate_functions.sql change (commit by @geooo109)a39ad08 - mysql type annotator clean up (commit by @geooo109)a6b71a5 - refactor REVERSE mysql annotation (commit by @geooo109)39333fc - mypyc: Bump sqlglot-mypy to post8 (PR #7878 by @VaggelisD)154df7c - remove stray raise in simplify (PR #7882 by @georgesittas)c8e56e4 - mypyc: Bump sqlglot-mypy to post9 (PR #7894 by @geooo109)2965ee5 - refactor DISTINCT agg func parsing + duckdb support (PR #7875 by @geooo109)fix(clickhouse)!: support arrayMap and arrayFilter roundtrips [CODEX]…
fix(clickhouse)!: support arrayMap and arrayFilter roundtrips [CODEX]…
due to d0ebc83 - Annotate MINUTE function (PR #7747 by @vishvambhar-ranoshe):
Annotate MINUTE function (#7747)
due to 2e7f8b7 - add UNDROP support for all Snowflake Time Travel object types (PR #7735 by @Danielhaiman):
add UNDROP support for all Snowflake Time Travel object types (#7735)
due to 87b1da8 - json extract with : roundtrip (PR #7750 by @geooo109):
json extract with : roundtrip (#7750)
due to dbc83df - JSON path key quote granularity (PR #7758 by @geooo109):
JSON path key quote granularity (#7758)
due to 5ad2add - preserve line breaks between consecutive comments in pretty mode (PR #7770 by @tobymao):
preserve line breaks between consecutive comments in pretty mode (#7770)
due to 719a34c - annotate replace for mysql (PR #7774 by @PiyaDaswadkar):
annotate replace for mysql (#7774)
due to 4d621b2 - Annotate Typeof for Spark/DBX (PR #7772 by @Anuja006):
Annotate Typeof for Spark/DBX (#7772)
due to 0971a28 - annotate TYPEOF as string globally (PR #7781 by @georgesittas):
annotate TYPEOF as string globally (#7781)
due to 91a781b - coerce bigquery date function arg types [CLAUDE] (PR #7790 by @etonlels):
coerce bigquery date function arg types [CLAUDE] (#7790)
due to 075eaf5 - annotate DIV for Hive/Spark/DBX (PR #7788 by @AbhishekASLK):
annotate DIV for Hive/Spark/DBX (#7788)
due to b1a0070 - resolve lateral subquery columns (PR #7802 by @georgesittas):
resolve lateral subquery columns (#7802)
due to 64e268a - support arrayMap and arrayFilter roundtrips [CODEX] (PR #7794 by @gaoflow):
support arrayMap and arrayFilter roundtrips [CODEX] (#7794)
a288150 - duckdb: Add transpilation support for TRY_CAST INTERVAL (PR #7731 by @fivetran-amrutabhimsenayachit)d0ebc83 - optimizer: Annotate MINUTE function (PR #7747 by @vishvambhar-ranoshe)2e7f8b7 - snowflake: add UNDROP support for all Snowflake Time Travel object types (PR #7735 by @Danielhaiman)
4804de4 - snowflake: support RENAME TO clause in UNDROP statement (commit by @georgesittas)72e6796 - duckdb: Fix and updates tests for pivot subquery string lietral column names (PR #7757 by @fivetran-amrutabhimsenayachit)78c5cf9 - snowflake: transpile Snowflake IDENTIFIER function to DuckDB (PR #7723 by @fivetran-kwoodbeck)12eba76 - duckdb: Add transpilation support for Snowflake STARTS WITH ... CONNECT BY (PR #7709 by @fivetran-kwoodbeck)5ad2add - preserve line breaks between consecutive comments in pretty mode (PR #7770 by @tobymao)
719a34c - optimizer: annotate replace for mysql (PR #7774 by @PiyaDaswadkar)d4c74a2 - bigquery: reject connected adjacent string literals closes #7780 (commit by @georgesittas)4d621b2 - optimizer: Annotate Typeof for Spark/DBX (PR #7772 by @Anuja006)eaa3f98 - optimizer: move typeof annotator to hive instead of spark (commit by @georgesittas)0971a28 - optimizer: annotate TYPEOF as string globally (PR #7781 by @georgesittas)2ecdfe5 - duckdb: transpile CONNECT_BY_ROOT (commit by @georgesittas)6dbcf81 - optimizer: Annotate types tests for spark2, spark, databricks ABS function (PR #7789 by @fivetran-amrutabhimsenayachit)9f18b77 - parser: support CALLED ON NULL INPUT function property (PR #7792 by @eruditmorina)
523f7c2 - snowflake: support properties before column definitions in CREATE statements (PR #7787 by @eruditmorina)075eaf5 - optimizer: annotate DIV for Hive/Spark/DBX (PR #7788 by @AbhishekASLK)7a0a9ab - snowflake: support invoking dynamically-resolved functions via IDENTIFIER() (PR #7796 by @eruditmorina)8889df9 - transpile-bug: update core, generator, optimizer, and parser files for select-star-ilike-rename (PR #7720 by @fivetran-amrutabhimsenayachit)bd7a989 - parser: add single quotes escape for hive hierarchy (PR #7741 by @cchambers-rdi)56390d6 - parser: revert single quote escape for hive hierarchy (commit by @geooo109)27aee3e - duckdb: add ParseDatetime transpilation for BigQuery to DuckDB (PR #7704 by @william-goode)9bebfd2 - optimizer: unwrap parens less aggressively in qualify_tables (PR #7742 by @georgesittas)4c2cd15 - clickhouse: SETTINGS cannot act as an alias token closes #7749 (commit by @georgesittas)87b1da8 - databricks: json extract with : roundtrip (PR #7750 by @geooo109)da26192 - _KEYWORD_TRIE type annotation: keys are str | int (PR #7753 by @tobymao)8375e06 - bigquery: extend PROJECTION_ALIASES_SHADOW_SOURCE_NAMES to QUALIFY clause (commit by @tobymao)4ada15a - parser: more robust ON CONFLICT (PR #7760 by @geooo109)
dbc83df - parser: JSON path key quote granularity (PR #7758 by @geooo109)02e2469 - postgres: support jsonpath @? operator CODEX (PR #7766 by @fpatz)82f700e - postgres: preserve ARRAY roundtrip for SET OPS (PR #7765 by @geooo109)bc71151 - postgres: 1 arg UUID roundtrip (PR #7767 by @geooo109)31cee10 - druid: add JSON_VALUE RETURNING support (PR #7771 by @sitelight)499d132 - postgres: preserve contained-by operator direction CODEX (PR #7768 by @fpatz)7db4d25 - snowflake: transpile FROM_ISO8601_TIMESTAMP to cast [CLAUDE] (PR #7776 by @baruchoxman)
43a3d9f - presto: transpile FROM_ISO8601_DATE to cast [CLAUDE] (PR #7778 by @baruchoxman)
2637c56 - snowflake: preserve PATTERN clause on staged files without FILE_FORMAT (PR #7783 by @eruditmorina)
9222960 - duckdb: Fix lexical backslash handling (PR #7769 by @fivetran-amrutabhimsenayachit)9385433 - optimizer: stacked decorators bug (PR #7784 by @fivetran-kwoodbeck)6de030d - optimizer: add timestamp sub-day unit support (PR #7785 by @fivetran-kwoodbeck)52fe296 - exasol: robust LISTAGG support CLAUDE (PR #7786 by @gaoflow)e16a179 - optimizer: handle non-commutative subtraction in simplify_equality (PR #7791 by @code-alexander)91a781b - annotate_types: coerce bigquery date function arg types [CLAUDE] (PR #7790 by @etonlels)b1a0070 - optimizer: resolve lateral subquery columns (PR #7802 by @georgesittas)
64e268a - clickhouse: support arrayMap and arrayFilter roundtrips [CODEX] (PR #7794 by @gaoflow)6f4a990 - parser: PARSE_DATETIME uses year as default (PR #7743 by @geooo109)62a0ba5 - duckdb: Add transpilation tests for ilike-replace (PR #7744 by @fivetran-amrutabhimsenayachit)6f99d4e - fix makefile to install integration tests (commit by @tobymao)07fe98b - LISTAGG refactor for exasol (commit by @geooo109)Fix(optimizer)!: ConcatWs args set incorrectly in simplify_concat
Fix(optimizer)!: ConcatWs args set incorrectly in simplify_concat
due to df507aa - GET_JSON_OBJECT roundtrip (PR #7728 by @geooo109):
GET_JSON_OBJECT roundtrip (#7728)
due to 333e3c7 - ConcatWs args set incorrectly in simplify_concat (commit by @georgesittas):
ConcatWs args set incorrectly in simplify_concat
74bef2f - lineage: add support for UNPIVOT (PR #7729 by @georgesittas)
f3ba8e4 - lineage: more UNPIVOT lineage improvements (PR #7736 by @georgesittas)6ae4b49 - tsql: do not bubble up CTEs in TVF DDLs with inline RETURN queries closes #7721 (commit by @georgesittas)df507aa - databricks: GET_JSON_OBJECT roundtrip (PR #7728 by @geooo109)1955881 - sqlglotc: pin sqlglot to the exact matching version (PR #7730 by @georgesittas)2284484 - optimizer: infinite recursion in the resolver (PR #7737 by @georgesittas)
333e3c7 - optimizer: ConcatWs args set incorrectly in simplify_concat (commit by @georgesittas)Fix(optimizer): merge_subqueries bug where Identifier was set as …
Fix(optimizer): merge_subqueries bug where Identifier was set as …
due to 287df74 - parsing and generation of CLUSTER BY (PR #7716 by @JoshuaM176):
parsing and generation of CLUSTER BY (#7716)
6ae53c2 - duckdb: Add transpilation support for TRY_CAST date-format (PR #7707 by @fivetran-amrutabhimsenayachit)8be7236 - clickhouse: parse file() as a table function instead of a table alias (PR #7717 by @tobymao)
6c7c9e8 - optimizer: column-to-dot conversion bug in qualify due to looking at wrong source set (PR #7718 by @georgesittas)a76439c - presto: Use valid bitwise shift left and right functions (PR #7719 by @gertjanal)287df74 - parsing and generation of CLUSTER BY (PR #7716 by @JoshuaM176)982bd16 - optimizer: merge_subqueries bug where Identifier was set as a table alias (commit by @georgesittas)Chore!: bump sqlglot-mypy
Chore!: bump sqlglot-mypy
due to a40dde9 - delimited global/temp table references closes #7657 (commit by @georgesittas):
delimited global/temp table references closes #7657
due to cc3f980 - improve datatype typing (PR #7654 by @OutSquareCapital):
improve datatype typing (#7654)
due to f00bb4a - rename Distance3d to DistanceNd (commit by @georgesittas):
rename Distance3d to DistanceNd
due to 0e9e0a4 - qualify column reference in NULLS LAST CASE simulation (PR #7641 by @brdbry):
qualify column reference in NULLS LAST CASE simulation (#7641)
due to edf731c - propagate type through Lag/Lead/NthValue window functions [CLAUDE] (PR #7652 by @RichardHughes-amp):
propagate type through Lag/Lead/NthValue window functions [CLAUDE] (#7652)
due to 4698d08 - annotate ranking window functions with constant return types [CLAUDE] (PR #7658 by @RichardHughes-amp):
annotate ranking window functions with constant return types [CLAUDE] (#7658)
due to 0be0887 - skip unnesting NOT IN to preserve NULL semantics (PR #7671 by @georgesittas):
skip unnesting NOT IN to preserve NULL semantics (#7671)
due to cd06eb6 - support INSERT IGNORE and offset-only limits [CODEX] (PR #7674 by @russellromney):
support INSERT IGNORE and offset-only limits [CODEX] (#7674)
due to c3fa1ce - CONCAT/PAD type leaks non-string arg when string args aren't TEXT [CLAUDE] (PR #7661 by @RichardHughes-amp):
CONCAT/PAD type leaks non-string arg when string args aren't TEXT [CLAUDE] (#7661)
due to 603433d - fix for Snowflake transpilation issue related to PIVOT and string literal column names (PR #7660 by @fivetran-kwoodbeck):
fix for Snowflake transpilation issue related to PIVOT and string literal column names (#7660)
due to 3e42f92 - parse xor(a,b,c) as xor(a,xor(b,c)), fix value unpacking bug in normalize (PR #7702 by @georgesittas):
parse xor(a,b,c) as xor(a,xor(b,c)), fix value unpacking bug in normalize (#7702)
due to 2f6434e - bump sqlglot-mypy (commit by @georgesittas):
bump sqlglot-mypy
f8b184e - mysql: transpile MAKE_INTERVAL closes #7646 (commit by @georgesittas)2f2dd8c - duckdb: Add transpilation unsupported for GET_IGNORE_CASE function (PR #7642 by @fivetran-amrutabhimsenayachit)10af777 - tsql: support FOR JSON clause [CLAUDE] (PR #7649 by @lvanoverberghe)cc448ac - postgres: add support for PostGIS 3D distance operator <<->> (PR #7655 by @vnataliia)edf731c - annotate_types: propagate type through Lag/Lead/NthValue window functions [CLAUDE] (PR #7652 by @RichardHughes-amp)4698d08 - annotate_types: annotate ranking window functions with constant return types [CLAUDE] (PR #7658 by @RichardHughes-amp)33b31be - snowflake: support OBJECT_AGG(DISTINCT ...) (commit by @georgesittas)6084d34 - oracle: add support for ^= not-equals operator closes #7662 (commit by @georgesittas)e0c1933 - optimizer: annotate types for CovarPop/Samp, PercentileCont/Disc, and WithinGroup [CLAUDE] (PR #7656 by @RichardHughes-amp)e5c6b6a - bigquery: support LOAD DATA INTO TEMP TABLE syntax (PR #7675 by @simonlourson)9e6faab - bigquery: support LOAD DATA INTO TEMP TABLE syntax (PR #7675 by @simonlourson)bd4a397 - oracle: support DEFAULT clause in TO_NUMBER func closes #7685 (commit by @georgesittas)96a90be - duckdb: add support for overloaded MACRO DDL syntax (PR #7690 by @georgesittas)
13a8b8d - exasol: transpile MySQL SHOW DATABASES/SCHEMAS to SELECT over SYS.EXA_SCHEMAS (PR #7695 by @mariadb-AllenHerrera)e23a9ee - duckdb: Add transpilation support for BOOLEAN and TEXT cases of TRY_CAST function (PR #7681 by @fivetran-amrutabhimsenayachit)0a43a44 - optimizer: guard against None type in _coerce_datediff_args (PR #7647 by @fangzheng)a40dde9 - tsql: delimited global/temp table references closes #7657 (commit by @georgesittas)c19bb4b - parser: Avoid __tmp# CTEs getting replaced with outer CTEs for pipe syntax (PR #7659 by @sean-rose)0e9e0a4 - mysql: qualify column reference in NULLS LAST CASE simulation (PR #7641 by @brdbry)b748094 - raise ParseError, not IndexError, on an unclosed JSONPath filter (PR #7665 by @c-tonneslan)f173fde - optimizer: unnest_subqueries produces invalid column references when subquery contains a UNION (PR #7667 by @snovik75)
0be0887 - optimizer: skip unnesting NOT IN to preserve NULL semantics (PR #7671 by @georgesittas)5683e3d - improve transpilation of e'...' strings (PR #7677 by @SAY-5)
a7e21a4 - duckdb: add transpilation support for bq func PARSE_TIME (PR #7673 by @william-goode)c072a26 - mysql: joined table UPDATE syntax handling (PR #7680 by @georgesittas)
cd06eb6 - sqlite: support INSERT IGNORE and offset-only limits [CODEX] (PR #7674 by @russellromney)c3fa1ce - spark: CONCAT/PAD type leaks non-string arg when string args aren't TEXT [CLAUDE] (PR #7661 by @RichardHughes-amp)07faa10 - postgres: parse schema-qualified COMMENT ON TYPE, VIEW, SEQUENCE, and INDEX (PR #7684 by @devfros)
08e61b7 - expressions: invalidate cached _hash on append() (commit by @tobymao)5c916ee - optimizer: retain set-returning projections in pushdown_projections (PR #7686 by @tobymao)8520e68 - parser: pipe syntax AGGREGATE projection order (PR #7689 by @geooo109)9457cf6 - multiline comment idempotency in connectors [GEMINI] (PR #7691 by @dcolestock)19f5aea - duckdb: fix for Snowflake transpilation issue related to PIVOT and string literal column names (PR #7660 by @fivetran-kwoodbeck)603433d - duckdb: fix for Snowflake transpilation issue related to PIVOT and string literal column names (PR #7660 by @fivetran-kwoodbeck)98b2b92 - bigquery: avoid self join auto unnest (PR #7697 by @geooo109)3e42f92 - parse xor(a,b,c) as xor(a,xor(b,c)), fix value unpacking bug in normalize (PR #7702 by @georgesittas)
a32a69f - bigquery: roundtrip for CAST with DATE/TIMESTAMP FORMAT (PR #7703 by @geooo109)2216a6e - bigquery: preserve domain-scoped project IDs [CLAUDE] (PR #7693 by @etonlels)ec93edf - make DataType.type return self instead of a clone (PR #7708 by @VaggelisD)35bc1e0 - optimizer: skip O(n^2) connector simplification when no operands can combine (PR #7687 by @tobymao)dcd70a2 - cache gen dispatch table (PR #7705 by @georgesittas)eb35b13 - improve __hash__ performance (PR #7706 by @georgesittas)cc3f980 - typing: improve datatype typing (PR #7654 by @OutSquareCapital)f00bb4a - postgres: rename Distance3d to DistanceNd (commit by @georgesittas)0399cca - bump sqlglot-mypy, fix leakcheck (commit by @georgesittas)1b78667 - bump sqlglot-mypy to post9 (commit by @georgesittas)b02ed52 - small clean up for within group (commit by @geooo109)515e2b0 - bump sqlglot-mypy to 2.1.0.post1 (PR #7669 by @VaggelisD)ec5fb1c - add makefile rule to run only updated tests (PR #7692 by @fivetran-kwoodbeck)2f6434e - bump sqlglot-mypy (commit by @georgesittas)due to `6944a6c` - Improve typing annotations for planner, schema, serde, and transforms modules *(PR #7579 by @OutSquareCapital)*:
due to 6944a6c - Improve typing annotations for planner, schema, serde, and transforms modules (PR #7579 by @OutSquareCapital):
Improve typing annotations for planner, schema, serde, and transforms modules (#7579)
due to 9d84348 - annotate MD5 for clickhouse (PR #7602 by @AbhishekASLK):
annotate MD5 for clickhouse (#7602)
due to d1147b6 - roundtrip for ST_MAKEPOINT / 4 parameters (PR #7605 by @fivetran-kwoodbeck):
roundtrip for ST_MAKEPOINT / 4 parameters (#7605)
due to 4bd7d1d - preserve NOT LIKE quantifiers during generation (PR #7611 by @bialkou):
preserve NOT LIKE quantifiers during generation (#7611)
due to fc6b87a - parse CONVERT into Cast instead of TryCast (PR #7609 by @fivetran-kwoodbeck):
parse CONVERT into Cast instead of TryCast (#7609)
due to b6d2c76 - avoid pushdown projections for column dependent funcs (PR #7614 by @geooo109):
avoid pushdown projections for column dependent funcs (#7614)
due to a16f7d0 - disambiguate 2-arg date_add from 3-arg dateadd [CLAUDE] (PR #7588 by @RichardHughes-amp):
disambiguate 2-arg date_add from 3-arg dateadd [CLAUDE] (#7588)
due to ae58fd1 - parse CREATE TYPE statements (PR #7616 by @devfros):
parse CREATE TYPE statements (#7616)
due to 8dcb2d3 - register First and Last in Hive typing (PR #7623 by @RichardHughes-amp):
register First and Last in Hive typing (#7623)
due to 8ce7d78 - PIVOT qualify with alias + type annotation (PR #7586 by @geooo109):
PIVOT qualify with alias + type annotation (#7586)
due to c876570 - roundtrip for HH12 time mapping (PR #7626 by @fivetran-kwoodbeck):
roundtrip for HH12 time mapping (#7626)
due to 87cc106 - roundtrip support for CURRENT_USER_ID and USER (PR #7633 by @fivetran-kwoodbeck):
roundtrip support for CURRENT_USER_ID and USER (#7633)
due to c6615a9 - propagate type through IgnoreNulls/RespectNulls wrappers [CLAUDE] (PR #7636 by @RichardHughes-amp):
propagate type through IgnoreNulls/RespectNulls wrappers [CLAUDE] (#7636)
due to 9e37283 - case-insensitive alias matching for LOCAL. prefix (PR #7631 by @antonireus):
case-insensitive alias matching for LOCAL. prefix (#7631)
af5dc38 - duckdb: Add transpilation support for HEX_DECODE_STRING (PR #7590 by @fivetran-amrutabhimsenayachit)9507aad - duckdb: Consolidate HEX_ENCODE_ into HEX function (PR #7603 by @fivetran-amrutabhimsenayachit)9d84348 - optimizer: annotate MD5 for clickhouse (PR #7602 by @AbhishekASLK)ae58fd1 - postgres: parse CREATE TYPE statements (PR #7616 by @devfros)
80e0929 - parser: handle COLLATE in nested types and CAST closes #7624 (PR #7630 by @georgesittas)8ce7d78 - optimizer: PIVOT qualify with alias + type annotation (PR #7586 by @geooo109)cbd3576 - mysql: Support CHANGE COLUMN. (PR #7638 by @burnison)593d5a3 - redshift: support ALL in aggregate funcs (PR #7592 by @fivetran-kwoodbeck)b8bf13e - redshift: support OBJECT_TRANSFORM function (PR #7601 by @fivetran-kwoodbeck)1206bea - redshift: parser issue for TOP N DISTINCT (PR #7594 by @fivetran-kwoodbeck)d1147b6 - redshift: roundtrip for ST_MAKEPOINT / 4 parameters (PR #7605 by @fivetran-kwoodbeck)b9f18ee - sqlite: support named CTE columns closes #7617 (commit by @georgesittas)c8b19aa - Parametrized bigdecimal mapping was being concatenated with params (PR #7584 by @themisvaltinos)4bd7d1d - postgres: preserve NOT LIKE quantifiers during generation (PR #7611 by @bialkou)fc6b87a - redshift: parse CONVERT into Cast instead of TryCast (PR #7609 by @fivetran-kwoodbeck)b6d2c76 - optimizer: avoid pushdown projections for column dependent funcs (PR #7614 by @geooo109)
a16f7d0 - databricks: disambiguate 2-arg date_add from 3-arg dateadd [CLAUDE] (PR #7588 by @RichardHughes-amp)6931eec - redshift: roundtrip fix ARRAY_CONTAINS (PR #7606 by @fivetran-kwoodbeck)8dcb2d3 - annotate: register First and Last in Hive typing (PR #7623 by @RichardHughes-amp)a1fa154 - parser: from-first duckdb syntax improvement for pivot fixes #7628 (commit by @georgesittas)e7e1fb0 - parser: issue with no parenthesis functions (PR #7621 by @fivetran-kwoodbeck)b1aa0c5 - redshift: try_cast roundtrip (PR #7622 by @fivetran-kwoodbeck)5525f3f - sqlite: prevent ALTER TABLE RENAME TO from falling back to Command (PR #7629 by @dedyoc)
c876570 - redshift: roundtrip for HH12 time mapping (PR #7626 by @fivetran-kwoodbeck)87cc106 - redshift: roundtrip support for CURRENT_USER_ID and USER (PR #7633 by @fivetran-kwoodbeck)6329684 - parser: allow WINDOW clause without FROM (PR #7640 by @1fanwang)
c6615a9 - annotate_types: propagate type through IgnoreNulls/RespectNulls wrappers [CLAUDE] (PR #7636 by @RichardHughes-amp)9e37283 - exasol: case-insensitive alias matching for LOCAL. prefix (PR #7631 by @antonireus)6944a6c - Improve typing annotations for planner, schema, serde, and transforms modules (PR #7579 by @OutSquareCapital)a2a9ba5 - schema: cache find lookups in schema (PR #7615 by @georgesittas)958b27d - improve optimizer::pushdown_predicates typing (PR #7613 by @OutSquareCapital)96716a6 - improve optimizer::{eliminate_joins, eliminate_subqueries} typing (PR #7618 by @OutSquareCapital)7e7cf8b - make dialect in build_formatted_time optional, fetch it from parser (PR #7639 by @georgesittas)`1a10806` - mypyc: Enable incremental compilation, deprecate Python 3.9 *(PR #7574 by @VaggelisD)*
due to 68861d9 - support DROP PRIMARY KEY. (PR #7530 by @burnison):
support DROP PRIMARY KEY. (#7530)
due to 8669e55 - mark DECOMPRESS_STRING as unsupported [CLAUDE] (PR #7545 by @fivetran-ashashankar):
mark DECOMPRESS_STRING as unsupported [CLAUDE] (#7545)
due to b334dcc - mark DECOMPRESS_BINARY as unsupported (PR #7546 by @fivetran-ashashankar):
mark DECOMPRESS_BINARY as unsupported (#7546)
due to 8f572f8 - qualify UNPIVOT on CTE sources (PR #7550 by @georgesittas):
qualify UNPIVOT on CTE sources (#7550)
due to b4dea8c - Transpilation support for UUID_STRING (commit by @fivetran-ashashankar):
Transpilation support for UUID_STRING
due to e883b0b - map duckdb LIST to ArrayAgg (PR #7552 by @georgesittas):
map duckdb LIST to ArrayAgg (#7552)
due to ded89c2 - Add transpilation support for STRTOK_TO_ARRAY function (PR #7536 by @fivetran-amrutabhimsenayachit):
Add transpilation support for STRTOK_TO_ARRAY function (#7536)
due to f743755 - register NAMED_STRUCT in parser so struct fields annotate CLAUDE (PR #7561 by @RichardHughes-amp):
register NAMED_STRUCT in parser so struct fields annotate CLAUDE (#7561)
due to 4cca3a0 - support arbitrarily many args in JSONArray [CLAUDE] (PR #7559 by @maxa-jonathan-hallee):
support arbitrarily many args in JSONArray [CLAUDE] (#7559)
due to 206e2f8 - full MODIFY COLUMN support. (PR #7562 by @burnison):
full MODIFY COLUMN support. (#7562)
due to fd48100 - generate "SUBSTR" instead of "SUBSTRING" for Substr expr (PR #7583 by @georgesittas):
generate "SUBSTR" instead of "SUBSTRING" for Substr expr (#7583)
due to 17432c6 - do not indent newlines within identifiers in pretty mode fixes #7953 (commit by @georgesittas):
do not indent newlines within identifiers in pretty mode fixes #7953
cf1c9b7 - tests: add leakcheck harness for sqlglot[c] (PR #7533 by @VaggelisD)68861d9 - mysql: support DROP PRIMARY KEY. (PR #7530 by @burnison)8669e55 - duckdb: mark DECOMPRESS_STRING as unsupported [CLAUDE] (PR #7545 by @fivetran-ashashankar)b334dcc - duckdb: mark DECOMPRESS_BINARY as unsupported (PR #7546 by @fivetran-ashashankar)234198a - exasol: transpile USE/OPEN SCHEMA and SHOW TABLES to system-table query (PR #7538 by @mkcorneli)e3fee4d - snowflake: transpile DuckDB list() and list_distinct() [CLAUDE] (PR #7551 by @maxa-jonathan-hallee)92aea6b - duckdb: Add UUID v5 unsupported error for Snowflake UUID_STRING transpilation (commit by @fivetran-ashashankar)b4dea8c - snowflake: Transpilation support for UUID_STRING (commit by @fivetran-ashashankar)b828e30 - snowflake: add UUID_IS_STRING_TYPE flag and UUID_STRING parser (commit by @fivetran-ashashankar)ded89c2 - duckdb: Add transpilation support for STRTOK_TO_ARRAY function (PR #7536 by @fivetran-amrutabhimsenayachit)f743755 - hive: register NAMED_STRUCT in parser so struct fields annotate CLAUDE (PR #7561 by @RichardHughes-amp)4cca3a0 - duckdb: support arbitrarily many args in JSONArray [CLAUDE] (PR #7559 by @maxa-jonathan-hallee)3bc8f38 - oracle: support LISTAGG(... ON OVERFLOW ...) (PR #7565 by @galunto)1a10806 - mypyc: Enable incremental compilation, deprecate Python 3.9 (PR #7574 by @VaggelisD)d146dcd - lineage: support all-columns mode and on_node callback (PR #7575 by @georgesittas)25552ee - optimizer: canonicalize internal query names (PR #7580 by @georgesittas)fab6ccf - duckdb: Add transpilation support for HEX_ENCODE function (PR #7591 by @fivetran-amrutabhimsenayachit)8583c2d - correctly handle follow-tokens for unit-less intervals (PR #7529 by @jvstein)daca12a - mysql: accept quoted charset in USING. (PR #7522 by @burnison)6053db6 - optimizer: robust scope for UDTF (PR #7535 by @geooo109)a88dfce - mysql: support SHOW TABLES IN <schema> parsing (PR #7537 by @mkcorneli)0bd0c46 - optimizer: handle ColumnDef in typed table alias columns (PR #7542 by @tobymao)f387112 - parser: robust CONCAT_WS (PR #7544 by @geooo109)
5351ca1 - optimizer: EXPLODE qualify and annotate (PR #7549 by @geooo109)
8f572f8 - optimizer: qualify UNPIVOT on CTE sources (PR #7550 by @georgesittas)cf0ffd9 - optimizer: qualify (UN)PIVOT on CTE sources (PR #7560 by @georgesittas)2c1a90c - clickhouse: apply version-aware unit lowercase to DateTrunc [CLAUDE] (PR #7564 by @markcheney1)206e2f8 - mysql: full MODIFY COLUMN support. (PR #7562 by @burnison)6110de6 - lineage: avoid self-loops from cached non-owned upstream nodes (commit by @georgesittas)e078e5d - postgres: TRIM with UNNEST and ORDINALITY (PR #7573 by @geooo109)
a20ec0e - optimizer: unpivot annotate types (PR #7543 by @geooo109)fd48100 - presto: generate "SUBSTR" instead of "SUBSTRING" for Substr expr (PR #7583 by @georgesittas)
1cf31d6 - annotate: register typing for FirstValue and RegexpExtract (commit by @RichardHughes-amp)9f169ab - redshift: support APPROXIMATE PERCENTILE_DISC round-trip (PR #7585 by @fivetran-kwoodbeck)17432c6 - generator: do not indent newlines within identifiers in pretty mode fixes #7953 (commit by @georgesittas)e550d00 - parser: FROM with JOIN subqueries (PR #7597 by @geooo109)
63f8dc6 - tokens: cache TokenizerCore per thread (PR #7547 by @tobymao)9b65c91 - build: parallelize mypyc compile with -j $(NPROC) (PR #7554 by @tobymao)fc6e7cb - parser: short-circuit _parse_pivots when next token isn't PIVOT/UNPIVOT (PR #7557 by @tobymao)38b8986 - simplify uuid_sql using @unsupported_args decorator (commit by @fivetran-ashashankar)49787a5 - remove redundant CAST from UUID_V5_TEMPLATE (commit by @fivetran-ashashankar)e883b0b - map duckdb LIST to ArrayAgg (PR #7552 by @georgesittas)1d976e6 - raise if a projection is unnamed in lineage (commit by @georgesittas)b3fa159 - optimizer: continuation on typing coverage improvements (PR #7572 by @OutSquareCapital)9bc9ef2 - update UUID_STRING test for removed CAST (commit by @fivetran-ashashankar)fc99ddc - update integration tests submodule (commit by @fivetran-ashashankar)e4a2fdc - exasol: test GROUP BY alias rewrite via _add_local_prefix_for_aliases (PR #7569 by @mkcorneli)43be379 - bump sqlglot-mypy to 1.20.0.post6 (PR #7598 by @VaggelisD)9bd7e7c - publish: Do not build sqlglotc wheels for 3.9 (PR #7600 by @VaggelisD)due to `dcf9ed5` - compile python generator *(PR #7528 by @georgesittas)*:
due to dcf9ed5 - compile python generator (PR #7528 by @georgesittas):
compile python generator (#7528)
dcf9ed5 - mypyc: compile python generator (PR #7528 by @georgesittas)8e5e255 - postgres: dotted function calls in create trigger ddls closes #7527 (commit by @georgesittas)08ea329 - avoid git submodule errors when publishing API docs (PR #7526 by @georgesittas)due to `98ca4cd` - transpile TRY_DIVIDE to/from other dialects [CLAUDE] *(PR #7489 by @baruchoxman)*:
due to 98ca4cd - transpile TRY_DIVIDE to/from other dialects [CLAUDE] (PR #7489 by @baruchoxman):
transpile TRY_DIVIDE to/from other dialects [CLAUDE] (#7489)
due to ec516f2 - add typed AI scalar function nodes (PR #7479 by @RedZapdos123):
add typed AI scalar function nodes (#7479)
due to 800ca41 - support LOAD DATA FROM FILES syntax (PR #7482 by @RedZapdos123):
support LOAD DATA FROM FILES syntax (#7482)
due to efbc5e2 - add missing TO_CHAR format tokens (Mon, Month, Day, Dy, AM/PM, HH) (PR #7477 by @mwade0118):
add missing TO_CHAR format tokens (Mon, Month, Day, Dy, AM/PM, HH) (#7477)
due to d289db3 - stop eliminating semi/anti joins, QUALIFY, and FULL OUTER JOIN [CLAUDE] (PR #7524 by @dwoldemariam-klav):
stop eliminating semi/anti joins, QUALIFY, and FULL OUTER JOIN [CLAUDE] (#7524)
c80c3fd - duckdb: warn when transpiling snowflake's ENCRYPT (PR #7472 by @fivetran-ashashankar)e150296 - duckdb: warn when generating Snowflake's [TRY_]DECRYPT_RAW (PR #7475 by @fivetran-ashashankar)4ac6389 - snowflake: mark ENCRYPT_RAW as unsupported in DuckDB (PR #7485 by @fivetran-ashashankar)ec516f2 - bigquery: add typed AI scalar function nodes (PR #7479 by @RedZapdos123)
a7ae102 - duckdb: mark PARSE_URL as unsupported (PR #7499 by @fivetran-ashashankar)045f30e - duckdb: mark PARSE_IP as unsupported [CLAUDE] (PR #7500 by @fivetran-ashashankar)70dec2e - duckdb: Add transpilation support for INSERT function (PR #7486 by @fivetran-amrutabhimsenayachit)fb7d5b2 - oracle: Support WHERE on MERGE statement (PR #7492 by @galunto)ed58b9b - clickhouse: support groupConcat parametric syntax (PR #7487 by @betodealmeida)73c1983 - parser: introduce flag to control AST size (PR #7502 by @georgesittas)b985092 - duckdb: Add transpilation support for SUBSTR-SUBSTRING functions (PR #7471 by @fivetran-amrutabhimsenayachit)1a55f07 - duckdb: transpile snowflake's JAROWINKLER_SIMILARITY properly (PR #7501 by @fivetran-ashashankar)5fb1f7c - duckdb: Mark ARRAY_UNION_AGG as unsupported [CLAUDE] (PR #7503 by @fivetran-amrutabhimsenayachit)d0407ed - duckdb: support dollars in identifiers closes #7509 (commit by @georgesittas)6678ee0 - mysql: Add INVISIBLE column constraint for MySQL. (PR #7510 by @burnison)cb91d91 - mysql: support ALTER TABLE ... RENAME INDEX. (PR #7511 by @burnison)7660486 - doris, starrocks: support two-argument DATE_ADD/DATE_SUB (PR #7514 by @wuqicyber)
e2d6bfe - mysql: parse ALTER TABLE AUTO_INCREMENT. (PR #7520 by @burnison)0cd09c2 - mysql: parse hints on UPDATE and DELETE. (PR #7523 by @burnison)ceb14fa - duckdb: Add transpilation unsupported for SOUNDEX function (PR #7517 by @fivetran-amrutabhimsenayachit)d289db3 - starrocks: stop eliminating semi/anti joins, QUALIFY, and FULL OUTER JOIN [CLAUDE] (PR #7524 by @dwoldemariam-klav)ecd325b - databricks: support IFF as a synonym for IF [CLAUDE] (PR #7488 by @baruchoxman)
e3cd4a4 - bigquery: parse FOR SYSTEM TIME AS OF (with spaces) (PR #7493 by @lawrence3699)
c16630f - snowflake: map JSON type to VARIANT in Snowflake generator [CLAUDE] (PR #7496 by @maxa-jonathan-hallee)98ca4cd - databricks: transpile TRY_DIVIDE to/from other dialects [CLAUDE] (PR #7489 by @baruchoxman)
800ca41 - bigquery: support LOAD DATA FROM FILES syntax (PR #7482 by @RedZapdos123)
efbc5e2 - postgres: add missing TO_CHAR format tokens (Mon, Month, Day, Dy, AM/PM, HH) (PR #7477 by @mwade0118)
0b46b39 - snowflake: transpile REDUCE to DuckDB LIST_REDUCE (PR #7505 by @fivetran-ashashankar)35c6d37 - duckdb: wrap OCTET_LENGTH string arguments with ENCODE (PR #7507 by @fivetran-ashashankar)930ff33 - snowflake: transpile DuckDB JSON_ARRAY to ARRAY_CONSTRUCT [CLAUDE] (PR #7497 by @maxa-jonathan-hallee)998b42b - exasol: enable minus (PR #7521 by @Hfuegl)18231ca - mysql: parse quoted constraint names. (PR #7519 by @burnison)6da9653 - optimizer: support bigquery type inference for unnest + array + struct (PR #7525 by @geooo109)ad2c98d - databricks: add explicit tests for SET VAR / SET VARIABLE [CLAUDE] (PR #7490 by @baruchoxman)
224e64d - style for dbx tests (commit by @geooo109)c1f929f - Fix PR 7510 (PR #7513 by @VaggelisD)`713e95f` - snowflake: parse GET_DDL #unknown_policy in ROW ACCESS POLICY [CLAUDE] *(PR #7491 by @eakmanrq)*
`d04595e` - incomplete ColumnMapping type hint *(commit by @georgesittas)*
d04595e - incomplete ColumnMapping type hint (commit by @georgesittas)`24ff8bb` - duckdb: Add transpilation support for COLLATE function *(PR #7461 by @fivetran-amrutabhimsenayachit)*
24ff8bb - duckdb: Add transpilation support for COLLATE function (PR #7461 by @fivetran-amrutabhimsenayachit)6717634 - snowflake: transpilation support for CONCAT_WS NULL semantics when transpiling to DuckDB (PR #7464 by @fivetran-ashashankar)00970d8 - duckdb: Add transpilation support for RTRIMMED_LENGTH function (PR #7468 by @fivetran-amrutabhimsenayachit)d3c2eeb - tsql: improve SELECT TOP parsing (commit by @georgesittas)800c0c4 - snowflake: emit proper HANDLER property syntax (commit by @georgesittas)due to `d044414` - support transpilation of function LEFT from Snowflake … *(PR #7419 by @fivetran-ashashankar)*:
due to d044414 - support transpilation of function LEFT from Snowflake … (PR #7419 by @fivetran-ashashankar):
support transpilation of function LEFT from Snowflake … (#7419)
due to 61bb18c - Transpilation support for TO_DECIMAL, TO_NUMBER,NUMERIC (PR #7315 by @fivetran-ashashankar):
Transpilation support for TO_DECIMAL, TO_NUMBER,NUMERIC (#7315)
d044414 - duckdb: support transpilation of function LEFT from Snowflake … (PR #7419 by @fivetran-ashashankar)11e0dab - add Expr.pipe and Expr.apply methods (PR #7442 by @OutSquareCapital)21f4ecc - duckdb: transpilation support for position with binary arguments (PR #7433 by @fivetran-ashashankar)d57221a - hive: add native AST support for USING JAR/FILE/ARCHIVE in CREATE FUNCTION (PR #7436 by @hashwnath)
8a070fd - duckdb: Add transpilation unsupported for COMPRESS function (PR #7445 by @fivetran-amrutabhimsenayachit)eb9dbac - bigquery: support AI.FORECAST function (PR #7457 by @RedZapdos123)
61bb18c - snowflake: Transpilation support for TO_DECIMAL, TO_NUMBER,NUMERIC (PR #7315 by @fivetran-ashashankar)4c29711 - duckdb: Add transpilation support for COLLATION function (PR #7443 by @fivetran-amrutabhimsenayachit)9cf3485 - snowflake: parse and generate ROW ACCESS POLICY on views [CLAUDE] (PR #7467 by @eakmanrq)09b5912 - sqlite: support PRAGMA full syntax (PR #7441 by @geooo109)
b61a85f - bigquery: column offset (PR #7451 by @geooo109)
b7c057d - bigquery: pipe syntax DISTINCT (PR #7450 by @geooo109)
2b3dba1 - presto: iterate over copy in eliminate_semi_and_anti_joins (PR #7455 by @Evgeniy-Sinyak)2fc0c25 - bigquery: parse MODEL-first AI/ML GENERATE signatures (PR #7463 by @RedZapdos123)
4deba62 - typing: add annotations in dialect/parser/schema modules (PR #7444 by @OutSquareCapital)c31e2e3 - Optimizer: improve typing coverage of optimizer modules (PR #7446 by @OutSquareCapital)08b51e8 - use ruff UP rule to modernize coding style (PR #7459 by @georgesittas)2e7dec0 - Bump sqlglot-mypy to 1.20 (PR #7439 by @VaggelisD)500e0ce - Fix uv sync picking up sqlglotc in python 3.9 (PR #7452 by @VaggelisD)0445c24 - Revert setup.py for sqlglot-mypy (PR #7458 by @VaggelisD)576b5a8 - add MaxCompute plugin to dialects list (PR #7466 by @azurechen97)`6983aed` - postgres: _date_add_sql bug w/ interval inputs *(PR #7440 by @georgesittas)*
6983aed - postgres: _date_add_sql bug w/ interval inputs (PR #7440 by @georgesittas)due to `4bc6857` - Transpilation support for STRIP_NULL_VALUE transpilation *(PR #7403 by @fivetran-ashashankar)*:
due to 4bc6857 - Transpilation support for STRIP_NULL_VALUE transpilation (PR #7403 by @fivetran-ashashankar):
Transpilation support for STRIP_NULL_VALUE transpilation (#7403)
due to e27477f - Compile annotate_types.py with mypyc (PR #7407 by @VaggelisD):
Compile annotate_types.py with mypyc (#7407)
due to 31595ba - Compile simplify.py with mypyc (PR #7415 by @VaggelisD):
Compile simplify.py with mypyc (#7415)
due to 395ada8 - Transpilation support for UNICODE transpilation. (PR #7408 by @fivetran-ashashankar):
Transpilation support for UNICODE transpilation. (#7408)
due to 7a91128 - give precises types to all **opts argument, optimize ensure_list() (PR #7393 by @OutSquareCapital):
give precises types to all **opts argument, optimize ensure_list() (#7393)
3f4e92e - duckdb: Add transpilation support to TRY_PARSE_JSON (PR #7406 by @fivetran-amrutabhimsenayachit)4bc6857 - snowflake: Transpilation support for STRIP_NULL_VALUE transpilation (PR #7403 by @fivetran-ashashankar)395ada8 - snowflake: Transpilation support for UNICODE transpilation. (PR #7408 by @fivetran-ashashankar)8bebadf - duckdb: Support DuckDB table functions (PR #7410 by @pittst3r)62d7176 - duckdb: Add transpilation support for BIT_LENGTH (PR #7421 by @fivetran-amrutabhimsenayachit)c2b69d4 - sqlite: support virtual table ddl closes #7425 (commit by @georgesittas)3f31ffe - duckdb: Add transpilation support for CHR function. (PR #7430 by @fivetran-amrutabhimsenayachit)22a5bc2 - optimizer: simplify ranges with negative constants (PR #7405 by @geooo109)24738e4 - bigquery: nested queries in EXPORT statement fixes #7409 (commit by @georgesittas)2ac9a20 - duckdb: support TRUNC with decimal arg (PR #7414 by @geooo109)
64c4438 - duckdb: transpilation for snowflake TRUNC with non integer scale (PR #7417 by @geooo109)9068242 - bigquery: support hyphen, numbers, single dot as JSON keys (PR #7420 by @geooo109)8e0b9f5 - snowflake: Fix annotate_types crashes for FLATTEN over STRUCT and WithinGroup (PR #7434 by @georgesittas)e27477f - optimizer: Compile annotate_types.py with mypyc (PR #7407 by @VaggelisD)31595ba - optimizer: Compile simplify.py with mypyc (PR #7415 by @VaggelisD)247548f - Expressions: add into_expr method to DType enum (PR #7411 by @OutSquareCapital)7a91128 - give precises types to all **opts argument, optimize ensure_list() (PR #7393 by @OutSquareCapital)ab8f808 - expressions: Remove mypyc init_subclass workaround and simplify EXPR_CLASSES (PR #7426 by @VaggelisD)ce16997 - clean tokenizer/dialect code from **opts, and minor typing improvements (PR #7422 by @OutSquareCapital)`f7bb6be` - use collections.abc and built-in types for typing to avoid deprecation *(PR #7329 by @OutSquareCapital)*
due to 0921899 - support for TEXTLEN function (PR #7346 by @AbhishekASLK):
support for TEXTLEN function (#7346)
due to 83e7851 - Compile base Generator with mypyc (PR #7351 by @VaggelisD):
Compile base Generator with mypyc (#7351)
due to a424037 - Extract and compile generator (PR #7362 by @VaggelisD):
Extract and compile generator (#7362)
due to a482dc5 - Extract and compile generator (PR #7363 by @VaggelisD):
Extract and compile generator (#7363)
due to cb78bc3 - Extract and compile generator (PR #7365 by @VaggelisD):
Extract and compile generator (#7365)
due to adf0032 - Extract and compile generator (PR #7366 by @VaggelisD):
Extract and compile generator (#7366)
due to 7d26eed - Extract and compile generator (PR #7367 by @VaggelisD):
Extract and compile generator (#7367)
due to 56e7a88 - Extract and compile generator (PR #7370 by @VaggelisD):
Extract and compile generator (#7370)
due to 2e8d3dd - Extract and compile generator (PR #7374 by @VaggelisD):
Extract and compile generator (#7374)
due to b1d5a06 - Extract and compile generator (PR #7364 by @VaggelisD):
Extract and compile generator (#7364)
due to 3ab4cf2 - Extract and compile generator (PR #7371 by @VaggelisD):
Extract and compile generator (#7371)
due to 0a13068 - Extract and compile generator (PR #7376 by @VaggelisD):
Extract and compile generator (#7376)
due to 09cc35d - Extract and compile generator (PR #7373 by @VaggelisD):
Extract and compile generator (#7373)
due to d301233 - Extract and compile generator (PR #7372 by @VaggelisD):
Extract and compile generator (#7372)
due to d1b0d8f - Fix [NOT] REGEXP / REGEXP_LIKE transpilation from Snowflake to DuckDB (PR #7354 by @fivetran-amrutabhimsenayachit):
Fix [NOT] REGEXP / REGEXP_LIKE transpilation from Snowflake to DuckDB (#7354)
due to 53d56d4 - Extract and compile generator (PR #7369 by @VaggelisD):
Extract and compile generator (#7369)
due to 586e28e - Extract and compile generator (PR #7377 by @VaggelisD):
Extract and compile generator (#7377)
due to dcf01c1 - Extract and compile generator (PR #7379 by @VaggelisD):
Extract and compile generator (#7379)
due to f7668a7 - Extract and compile generator (PR #7368 by @VaggelisD):
Extract and compile generator (#7368)
due to 21693d7 - refactor JSON extract (PR #7302 by @geooo109):
refactor JSON extract (#7302)
due to 850bf1e - Extract and compile generator (PR #7375 by @VaggelisD):
Extract and compile generator (#7375)
due to 1b14a79 - Extract and compile generator (PR #7381 by @VaggelisD):
Extract and compile generator (#7381)
due to fcc09dd - Add transpilation support for ARRAY_UNIQUE_AGG function (PR #7386 by @fivetran-amrutabhimsenayachit):
Add transpilation support for ARRAY_UNIQUE_AGG function (#7386)
4a077ca - duckdb: Add transpilation support for neg position args for CHARINDEX (PR #7334 by @fivetran-amrutabhimsenayachit)0921899 - redshift: support for TEXTLEN function (PR #7346 by @AbhishekASLK)64f7e6c - duckdb: Add transpilation support for check_json function (PR #7353 by @fivetran-amrutabhimsenayachit)4743e76 - optimizer: annotate types for ORDER BY alias references (PR #7281 by @doripo)d1b0d8f - duckdb: Fix [NOT] REGEXP / REGEXP_LIKE transpilation from Snowflake to DuckDB (PR #7354 by @fivetran-amrutabhimsenayachit)d5f74a6 - duckdb: Add tests for NOT RLIKE to check the full match semantics (PR #7384 by @fivetran-amrutabhimsenayachit)3a52141 - postgres: handle non-literal interval values in datetime addition (PR #7360 by @georgesittas)fcc09dd - duckdb: Add transpilation support for ARRAY_UNIQUE_AGG function (PR #7386 by @fivetran-amrutabhimsenayachit)263bb7f - duckdb: do not issue CREATE unsupported iceberg property warning (PR #7396 by @treysp)438f031 - duckdb: support the full SHOW TABLES syntax spec (commit by @georgesittas)7216cf9 - snowflake: support DROP ICEBERG TABLE (PR #7398 by @treysp)b6ada45 - snowflake: support ALTER ICEBERG TABLE (PR #7401 by @treysp)877e184 - duckdb: Add transpilation support for ILIKE ANY, LIKE ANY/ALL functions for ESCAPE pattern (PR #7394 by @fivetran-amrutabhimsenayachit)d257e76 - clickhouse: lowercase dateTrunc units for versions before 23.12 (PR #7331 by @markcheney1)2cb9772 - optimizer: enhance simplify_parens to handle additional parent types (PR #7339 by @MuSilk)
9973623 - optimizer: qualify column named END (PR #7345 by @geooo109)
13e971d - clickhouse: UUID property (PR #7349 by @geooo109)
2a248f1 - optimizer: fix correlated subquery (PR #7343 by @fivetran-amrutabhimsenayachit)
0624bbf - mysql: Fix AttributeError crash when transpiling IGNORE/RESPECT NULLS (PR #7361 by @ShubhamKapoor992)
0344937 - handle pipe operator after subquery closes #7388 (PR #7391 by @georgesittas)2b19bdc - bigquery: support parentheses for CAST FORMAT syntax (PR #7395 by @ShubhamKapoor992)
83e7851 - generator: Compile base Generator with mypyc (PR #7351 by @VaggelisD)a424037 - tableau: Extract and compile generator (PR #7362 by @VaggelisD)a482dc5 - teradata: Extract and compile generator (PR #7363 by @VaggelisD)cb78bc3 - druid: Extract and compile generator (PR #7365 by @VaggelisD)adf0032 - sqlite: Extract and compile generator (PR #7366 by @VaggelisD)7d26eed - dremio: Extract and compile generator (PR #7367 by @VaggelisD)56e7a88 - snowflake: Extract and compile generator (PR #7370 by @VaggelisD)2e8d3dd - hive: Extract and compile generator (PR #7374 by @VaggelisD)b1d5a06 - drill: Extract and compile generator (PR #7364 by @VaggelisD)3ab4cf2 - oracle: Extract and compile generator (PR #7371 by @VaggelisD)0a13068 - postgres: Extract and compile generator (PR #7376 by @VaggelisD)09cc35d - tsql: Extract and compile generator (PR #7373 by @VaggelisD)d301233 - bigquery: Extract and compile generator (PR #7372 by @VaggelisD)53d56d4 - exasol: Extract and compile generator (PR #7369 by @VaggelisD)586e28e - spark: Extract and compile generator (PR #7377 by @VaggelisD)dcf01c1 - presto: Extract and compile generator (PR #7379 by @VaggelisD)f7668a7 - clickhouse: Extract and compile generator (PR #7368 by @VaggelisD)850bf1e - duckdb: Extract and compile generator (PR #7375 by @VaggelisD)1b14a79 - mysql: Extract and compile generator (PR #7381 by @VaggelisD)3582aa5 - generators: Cleanup and fully compile all generators (PR #7389 by @VaggelisD)4e9ed57 - benchworkflow (PR #7340 by @tobymao)0fce391 - refactor duckdb strposition_sql (commit by @geooo109)f7bb6be - use collections.abc and built-in types for typing to avoid deprecation (PR #7329 by @OutSquareCapital)f5e0a8a - always run sqlglot integration tests (PR #7350 by @georgesittas)f0f04d9 - Fix mypyc setup (PR #7382 by @VaggelisD)47325ce - only trigger the benchmark job manually (PR #7383 by @georgesittas)21693d7 - parser: refactor JSON extract (PR #7302 by @geooo109)c1842b2 - added annotations to all **opts arguments (PR #7342 by @OutSquareCapital)`f87ebe0` - use mypyc i64 for parser index fields (~1.6% faster) *(commit by @tobymao)*
due to `936617e` - escape comment markers in sanitize_comment for all dialects *(PR #7301 by @llimllib)*:
due to 936617e - escape comment markers in sanitize_comment for all dialects (PR #7301 by @llimllib):
escape comment markers in sanitize_comment for all dialects (#7301)
due to 4f6bcd3 - Add transpilation support for ARRAY_TO_STRING function (PR #7289 by @fivetran-amrutabhimsenayachit):
Add transpilation support for ARRAY_TO_STRING function (#7289)
4f6bcd3 - duckdb: Add transpilation support for ARRAY_TO_STRING function (PR #7289 by @fivetran-amrutabhimsenayachit)b41a99a - duckdb: FROM pipe syntax in subquery (PR #7311 by @geooo109)
936617e - escape comment markers in sanitize_comment for all dialects (PR #7301 by @llimllib)6ddaee3 - expressions: restore Expression.alias behaviour for non-Identifier alias nodes (PR #7310 by @treff7es)ce08047 - snowflake: ILIKE/LIKE ANY/ALL with single element transpilation to duckdb (PR #7314 by @geooo109)
8a52de6 - parser: Add builder for ARRAY_INTERSECT (PR #7328 by @VaggelisD)
f8a7ab2 - parser: Do not consume constraints following UNIQUE (PR #7330 by @VaggelisD)
64509a2 - sqlglotc sdist install fails when ../sqlglot dir doesn't exist (PR #7337 by @tobymao)
0ac52aa - move instance variables to init for perf (commit by @tobymao)c95ae50 - optimize parser for nested function calls (-41% on nested_funct… (PR #7307 by @tobymao)1697bc3 - optimize parser fast path for simple table references (commit by @tobymao)18f15ca - inline token parsing for massive gains (PR #7335 by @tobymao)fe7874f - update changelog with v30 release notes (PR #7309 by @georgesittas)8a914f0 - use ProcessPoolExecutor in test_executor (PR #7313 by @georgesittas)604fe3f - improve integration test submodule automations (PR #7320 by @georgesittas)c7b55c1 - Fix uv sync failing for sqlglotc (PR #7322 by @VaggelisD)
158424c - update readme (commit by @tobymao)`7bcad5c` - auto pin sqlglotc version to sqlglot so there's no version mismatch closes #7304 *(commit by @tobymao)*
This required restructuring several internal modules, which introduces breaking changes for users who depend on internal APIs, subclass parsers, or im…
SQLGlot v30 is a major release focused on performance and compilation. Some of the core components of the library are now fully compilable by mypyc, delivering significant speedups when installed with the [c] extra. This required restructuring several internal modules, which introduces breaking changes for users who depend on internal APIs, subclass parsers, or import from internal paths.
If you only use the public API (
sqlglot.parse,sqlglot.parse_one,sqlglot.transpile,sqlglot.exp.*,sqlglot.optimizer.*), most code will work without changes.
due to `fdfdfb1` - support GET_CURRENT_TIME() for DuckDB *(PR #7126 by @AbhishekASLK)*:
due to fdfdfb1 - support GET_CURRENT_TIME() for DuckDB (PR #7126 by @AbhishekASLK):
support GET_CURRENT_TIME() for DuckDB (#7126)
fdfdfb1 - duckdb: support GET_CURRENT_TIME() for DuckDB (PR #7126 by @AbhishekASLK)due to `c8ddcc3` - Annotate COLLATION(expr) for Spark/DBX *(PR #6957 by @AbhishekASLK)*:
due to c8ddcc3 - Annotate COLLATION(expr) for Spark/DBX (PR #6957 by @AbhishekASLK):
Annotate COLLATION(expr) for Spark/DBX (#6957)
due to fc4b332 - Annotate BITMAP_COUNT(expr) for Spark/DBX (PR #6956 by @AbhishekASLK):
Annotate BITMAP_COUNT(expr) for Spark/DBX (#6956)
due to 8725010 - add exp.Trunc for numeric truncation (PR #6923 by @doripo):
add exp.Trunc for numeric truncation (#6923)
due to 1418494 - Annotate FORMAT_STRING(expr) for Spark/DBX (PR #6962 by @AbhishekASLK):
Annotate FORMAT_STRING(expr) for Spark/DBX (#6962)
due to 37fa84e - support CURRENT_VERSION() transpilation for Spark (PR #6964 by @AbhishekASLK):
support CURRENT_VERSION() transpilation for Spark (#6964)
due to 51d3ebd - transpile CURRENT_VERSION() to MySQL (PR #6965 by @AbhishekASLK):
transpile CURRENT_VERSION() to MySQL (#6965)
due to 9008553 - transpile CURRENT_VERSION() to ClickHouse, Postgres, Trino, Redshift (PR #6966 by @AbhishekASLK):
transpile CURRENT_VERSION() to ClickHouse, Postgres, Trino, Redshift (#6966)
due to e8b379e - Map SQLITE_VERSION() to exp.CurrentVersion expression (PR #6967 by @AbhishekASLK):
Map SQLITE_VERSION() to exp.CurrentVersion expression (#6967)
due to dfd299f - Annotate RANDSTR(expr) for Spark/DBX (PR #6971 by @AbhishekASLK):
Annotate RANDSTR(expr) for Spark/DBX (#6971)
due to 969e45d - Annotate REPEAT(expr) for Hive, Spark, DBX (PR #6974 by @AbhishekASLK):
Annotate REPEAT(expr) for Hive, Spark, DBX (#6974)
due to ade3639 - transpilation support current_database (PR #6973 by @fivetran-ashashankar):
transpilation support current_database (#6973)
due to 57093d1 - Annotate OVERLAY(expr) for Spark/DBX (PR #6970 by @AbhishekASLK):
Annotate OVERLAY(expr) for Spark/DBX (#6970)
due to f5b2328 - Annotate RIGHT(expr) for Spark/DBX (PR #6980 by @AbhishekASLK):
Annotate RIGHT(expr) for Spark/DBX (#6980)
due to 61a0d3f - add support for JAROWINKLER_SIMILARITY (PR #6977 by @kyle-cheung):
add support for JAROWINKLER_SIMILARITY (#6977)
due to 9d1f4e0 - transpilation support current_schema (PR #6976 by @fivetran-ashashankar):
transpilation support current_schema (#6976)
due to 0d345aa - Annotate REPLACE(expr) for Hive, Spark and DBX (PR #6975 by @AbhishekASLK):
Annotate REPLACE(expr) for Hive, Spark and DBX (#6975)
due to 19f9000 - transpilation support current_version (PR #6960 by @fivetran-ashashankar):
transpilation support current_version (#6960)
due to f103a16 - support parsing VERSION() for ClickHouse (PR #6986 by @AbhishekASLK):
support parsing VERSION() for ClickHouse (#6986)
due to 2751c8f - parse support for VERSION() (PR #6985 by @AbhishekASLK):
parse support for VERSION() (#6985)
due to 37db91c - Annotate REVERSE(expr) for Hive, Spark and DBX (PR #6979 by @AbhishekASLK):
Annotate REVERSE(expr) for Hive, Spark and DBX (#6979)
due to f4d53a2 - support parsing VERSION() for Postgres/Redshift (PR #6987 by @AbhishekASLK):
support parsing VERSION() for Postgres/Redshift (#6987)
due to 71bb0c3 - support for version() for trino (PR #6988 by @AbhishekASLK):
support for version() for trino (#6988)
due to fbca704 - Annotate SPLIT(expr) for Hive/Spark/DBX (PR #6990 by @AbhishekASLK):
Annotate SPLIT(expr) for Hive/Spark/DBX (#6990)
due to 264e95f - Move TRANSLATE(expr) annotator to base (PR #6992 by @AbhishekASLK):
Move TRANSLATE(expr) annotator to base (#6992)
due to eb8ad51 - Annotate FILTER(expr, func) for Spark/DBX (PR #6995 by @AbhishekASLK):
Annotate FILTER(expr, func) for Spark/DBX (#6995)
due to 12e0869 - annotate CURRENT_TIMESTAMP for MySQL (PR #7004 by @AbhishekASLK):
annotate CURRENT_TIMESTAMP for MySQL (#7004)
due to cbdad37 - support CURTIME() for MySQL/SingleStore (PR #7005 by @AbhishekASLK):
support CURTIME() for MySQL/SingleStore (#7005)
due to d16cc62 - annotate ADD_MONTH(expr) for Hive/Spark/DBX (PR #7003 by @AbhishekASLK):
annotate ADD_MONTH(expr) for Hive/Spark/DBX (#7003)
due to 6381c48 - support NOW() for exasol (PR #7006 by @AbhishekASLK):
support NOW() for exasol (#7006)
due to d9ea168 - annotate CURRENT_USER to base (PR #7007 by @AbhishekASLK):
annotate CURRENT_USER to base (#7007)
due to 7a2a777 - annotate FROM_UTC_TIMESTAMP(expr) for Spark/DBX (PR #7008 by @AbhishekASLK):
annotate FROM_UTC_TIMESTAMP(expr) for Spark/DBX (#7008)
due to 8be32fd - support MAKE_TIMESTAMP(expr) for Spark/DBX (PR #7009 by @AbhishekASLK):
support MAKE_TIMESTAMP(expr) for Spark/DBX (#7009)
due to b951d74 - annotate NEXT_DAY(expr) for Hive/Spark/DBX (PR #7010 by @AbhishekASLK):
annotate NEXT_DAY(expr) for Hive/Spark/DBX (#7010)
due to 404797a - Move CURRENT_SCHEMA() to Base Annotator (PR #7021 by @AbhishekASLK):
Move CURRENT_SCHEMA() to Base Annotator (#7021)
due to 994d3a3 - robust STAR with EXCLUDE (redshift) (PR #6972 by @geooo109):
robust STAR with EXCLUDE (redshift) (#6972)
due to 3ea80fb - annotate REVERSE(str) for DuckDB (PR #7018 by @AbhishekASLK):
annotate REVERSE(str) for DuckDB (#7018)
due to 352fb94 - annotate ISODOW(expr) for DuckDB (PR #7016 by @AbhishekASLK):
annotate ISODOW(expr) for DuckDB (#7016)
due to c2e5954 - annotate COUNTIF(expr) for DuckDB (PR #7012 by @AbhishekASLK):
annotate COUNTIF(expr) for DuckDB (#7012)
due to e35ee14 - annotate CountIf(expr) for ClickHouse (PR #7013 by @AbhishekASLK):
annotate CountIf(expr) for ClickHouse (#7013)
due to b73be3e - support today() for duckdb (PR #7015 by @AbhishekASLK):
support today() for duckdb (#7015)
due to 36e3310 - support current_schema as no_param (PR #7000 by @AbhishekASLK):
support current_schema as no_param (#7000)
due to fd8860b - annotate FORMAT(expr) for DuckDB (PR #7017 by @AbhishekASLK):
annotate FORMAT(expr) for DuckDB (#7017)
due to eecdfa1 - Annotate DAYOFWEEK(expr), DAYOFMONTH(expr) for Hive/Spark/DBX (PR #6996 by @AbhishekASLK):
Annotate DAYOFWEEK(expr), DAYOFMONTH(expr) for Hive/Spark/DBX (#6996)
due to 4fc26f0 - annotate TIME_BUCKET(expr) for DuckDB (PR #7014 by @AbhishekASLK):
annotate TIME_BUCKET(expr) for DuckDB (#7014)
due to 00e6d9a - annotate UNIX_DATE(expr) for Spark/DBX (PR #7011 by @AbhishekASLK):
annotate UNIX_DATE(expr) for Spark/DBX (#7011)
due to 86a5509 - support user for exasol (PR #7001 by @AbhishekASLK):
support user for exasol (#7001)
due to b27c163 - support CURDATE for Exasol (PR #6999 by @AbhishekASLK):
support CURDATE for Exasol (#6999)
due to 47dc558 - annotate ARRAY_COMPACT(expr) for Spark/DBX (PR #7034 by @AbhishekASLK):
annotate ARRAY_COMPACT(expr) for Spark/DBX (#7034)
due to 9d7db06 - Generator for ARRAY_INSERT(expr) (PR #7036 by @AbhishekASLK):
Generator for ARRAY_INSERT(expr) (#7036)
due to 235b8ac - annotate ARRAY_INTERSECT(expr) for Hive/Spark/DBX (PR #7037 by @AbhishekASLK):
annotate ARRAY_INTERSECT(expr) for Hive/Spark/DBX (#7037)
due to f476d07 - update transpilation of SEQ functions and GENERATOR for DuckDB (PR #7029 by @fivetran-kwoodbeck):
update transpilation of SEQ functions and GENERATOR for DuckDB (#7029)
due to 643a6c7 - Transpilation support for Snowflake REGEXP_LIKE to DuckDB (PR #7030 by @fivetran-kwoodbeck):
Transpilation support for Snowflake REGEXP_LIKE to DuckDB (#7030)
due to b1f0542 - tokenizer optimizations (PR #7038 by @geooo109):
tokenizer optimizations (#7038)
due to 70d6f2b - annotate ARRAY_INSERT(expr) for Spark/DBX (PR #7044 by @AbhishekASLK):
annotate ARRAY_INSERT(expr) for Spark/DBX (#7044)
due to 3019d0a - Map BIT_GET to GETBIT for Spark/DBX (PR #7041 by @AbhishekASLK):
Map BIT_GET to GETBIT for Spark/DBX (#7041)
due to 27ae429 - transpile BIT_COUNT to DuckDB (PR #7039 by @AbhishekASLK):
transpile BIT_COUNT to DuckDB (#7039)
due to f6cbd27 - Add support for trigger DDL statements (PR #6978 by @fivetran-amrutabhimsenayachit):
Add support for trigger DDL statements (#6978)
due to 749cf18 - require original SQL in Parser.parse (PR #7045 by @georgesittas):
require original SQL in Parser.parse (#7045)
due to f9d1f73 - refactor colon (extract) parsing precedence (PR #7046 by @georgesittas):
refactor colon (extract) parsing precedence (#7046)
due to c5939c1 - Map curdate to current_date for Spark/DBX (PR #7048 by @AbhishekASLK):
Map curdate to current_date for Spark/DBX (#7048)
due to 58419e1 - move SessionUser to base (PR #7049 by @AbhishekASLK):
move SessionUser to base (#7049)
due to 13ee312 - use IntEnum instead of auto/string enums (PR #7050 by @georgesittas):
use IntEnum instead of auto/string enums (#7050)
due to f98cba1 - move exp.Rand to base (PR #7065 by @AbhishekASLK):
move exp.Rand to base (#7065)
due to 4f8a49c - Transpilation support for Snowflake REGEXP_COUNT to DuckDB (PR #7054 by @fivetran-kwoodbeck):
Transpilation support for Snowflake REGEXP_COUNT to DuckDB (#7054)
due to eaba8dc - move DEGREES(expr) to base (PR #7074 by @AbhishekASLK):
move DEGREES(expr) to base (#7074)
due to a87c1b4 - annotate DEGREES(expr) for T-SQL (PR #7077 by @AbhishekASLK):
annotate DEGREES(expr) for T-SQL (#7077)
due to f057a1b - move MONTHNAME to base (PR #7083 by @AbhishekASLK):
move MONTHNAME to base (#7083)
due to dd2cf85 - support UTCTimestamp (PR #7082 by @AbhishekASLK):
support UTCTimestamp (#7082)
due to 7ff13c6 - transpilation support map_contains_key (PR #7070 by @fivetran-ashashankar):
transpilation support map_contains_key (#7070)
due to 6fa494d - support arrayCompact(expr) function (PR #7084 by @AbhishekASLK):
support arrayCompact(expr) function (#7084)
due to a58c37d - transpilation of Snowflake REGEXP_REPLACE to DuckDB (PR #7078 by @fivetran-kwoodbeck):
transpilation of Snowflake REGEXP_REPLACE to DuckDB (#7078)
due to dfcd5d7 - Add Exasol reserved keywords to exasol dialect (PR #7086 by @nnamdi16):
Add Exasol reserved keywords to exasol dialect (#7086)
due to 7664358 - fix parsing error in json_value for exasol dialect (PR #7088 by @nnamdi16):
fix parsing error in json_value for exasol dialect (#7088)
due to 217e960 - annotate ARRAY_CONTAINS (PR #7099 by @geooo109):
annotate ARRAY_CONTAINS (#7099)
due to 1074d66 - transpilation of Snowflake REGEXP_INSTR to DuckDB (PR #7097 by @fivetran-kwoodbeck):
transpilation of Snowflake REGEXP_INSTR to DuckDB (#7097)
due to ab1c2ab - annotate PERCENTILE/APPROX_PERCENTILE for hive, spark2, spark, dbx (PR #7100 by @geooo109):
annotate PERCENTILE/APPROX_PERCENTILE for hive, spark2, spark, dbx (#7100)
due to 0f8287d - annotate BIT_OR(expr) for Spark/DBX (PR #7101 by @AbhishekASLK):
annotate BIT_OR(expr) for Spark/DBX (#7101)
due to e19abfd - annotate BIT_AND(expr) for Spark/DBX (PR #7103 by @AbhishekASLK):
annotate BIT_AND(expr) for Spark/DBX (#7103)
due to 0c4f74f - parse and annotate ELEMENT_AT for spark2, spark, dbx (PR #7104 by @geooo109):
parse and annotate ELEMENT_AT for spark2, spark, dbx (#7104)
due to 8b8aef0 - annotate BIT_XOR(expr) for Spark/DBX (PR #7106 by @AbhishekASLK):
annotate BIT_XOR(expr) for Spark/DBX (#7106)
due to 1b1d57a - transpilation of Snowflake REGEXP_SUBSTR and REGEXP_SUBSTR_ALL to DuckDB (PR #7095 by @fivetran-kwoodbeck):
transpilation of Snowflake REGEXP_SUBSTR and REGEXP_SUBSTR_ALL to DuckDB (#7095)
due to 4f964db - remove prefix from data type and cleanup (commit by @tobymao):
remove prefix from data type and cleanup
due to 0858599 - support arrayConcat to clickhouse (PR #7108 by @AbhishekASLK):
support arrayConcat to clickhouse (#7108)
due to 73ab9af - support arrayDistinct(expr) for clickhouse (PR #7114 by @AbhishekASLK):
support arrayDistinct(expr) for clickhouse (#7114)
due to 37fa8c7 - Split core functionality to TokenizerCore (PR #7116 by @VaggelisD):
Split core functionality to TokenizerCore (#7116)
due to 1150e39 - expression_core which is now compilable by mypyc (PR #7117 by @tobymao):
expression_core which is now compilable by mypyc (#7117)
due to f796956 - annotate ArrayDistinct for Hive/Spark/DBX (PR #7119 by @AbhishekASLK):
annotate ArrayDistinct for Hive/Spark/DBX (#7119)
due to 2069b06 - annotate ARRAY_EXCEPT for Hive/Spark/DBX (PR #7123 by @AbhishekASLK):
annotate ARRAY_EXCEPT for Hive/Spark/DBX (#7123)
due to 5a30754 - support current_localtimestamp() for DuckDB (PR #7128 by @AbhishekASLK):
support current_localtimestamp() for DuckDB (#7128)
due to 93bf337 - annotate date_diff(expr) for DuckDB (PR #7125 by @AbhishekASLK):
annotate date_diff(expr) for DuckDB (#7125)
c8ddcc3 - optimizer: Annotate COLLATION(expr) for Spark/DBX (PR #6957 by @AbhishekASLK)fc4b332 - optimizer: Annotate BITMAP_COUNT(expr) for Spark/DBX (PR #6956 by @AbhishekASLK)8725010 - add exp.Trunc for numeric truncation (PR #6923 by @doripo)1418494 - optimizer: Annotate FORMAT_STRING(expr) for Spark/DBX (PR #6962 by @AbhishekASLK)ff1fd52 - generator: Add numeric TRUNC output for additional dialects (PR #6961 by @doripo)37fa84e - snowflake: support CURRENT_VERSION() transpilation for Spark (PR #6964 by @AbhishekASLK)51d3ebd - snowflake: transpile CURRENT_VERSION() to MySQL (PR #6965 by @AbhishekASLK)9008553 - snowflake: transpile CURRENT_VERSION() to ClickHouse, Postgres, Trino, Redshift (PR #6966 by @AbhishekASLK)e8b379e - sqlite: Map SQLITE_VERSION() to exp.CurrentVersion expression (PR #6967 by @AbhishekASLK)dfd299f - optimizer: Annotate RANDSTR(expr) for Spark/DBX (PR #6971 by @AbhishekASLK)969e45d - optimizer: Annotate REPEAT(expr) for Hive, Spark, DBX (PR #6974 by @AbhishekASLK)ade3639 - snowflake: transpilation support current_database (PR #6973 by @fivetran-ashashankar)57093d1 - optimizer: Annotate OVERLAY(expr) for Spark/DBX (PR #6970 by @AbhishekASLK)f5b2328 - optimizer: Annotate RIGHT(expr) for Spark/DBX (PR #6980 by @AbhishekASLK)61a0d3f - snowflake: add support for JAROWINKLER_SIMILARITY (PR #6977 by @kyle-cheung)9d1f4e0 - snowflake: transpilation support current_schema (PR #6976 by @fivetran-ashashankar)0d345aa - optimizer: Annotate REPLACE(expr) for Hive, Spark and DBX (PR #6975 by @AbhishekASLK)19f9000 - snowflake: transpilation support current_version (PR #6960 by @fivetran-ashashankar)f103a16 - optimizer: support parsing VERSION() for ClickHouse (PR #6986 by @AbhishekASLK)2751c8f - mysql: parse support for VERSION() (PR #6985 by @AbhishekASLK)37db91c - optimizer: Annotate REVERSE(expr) for Hive, Spark and DBX (PR #6979 by @AbhishekASLK)f4d53a2 - postgres: support parsing VERSION() for Postgres/Redshift (PR #6987 by @AbhishekASLK)71bb0c3 - trino: support for version() for trino (PR #6988 by @AbhishekASLK)fbca704 - optimizer: Annotate SPLIT(expr) for Hive/Spark/DBX (PR #6990 by @AbhishekASLK)264e95f - optimizer: Move TRANSLATE(expr) annotator to base (PR #6992 by @AbhishekASLK)eb8ad51 - optimizer: Annotate FILTER(expr, func) for Spark/DBX (PR #6995 by @AbhishekASLK)12e0869 - optimizer: annotate CURRENT_TIMESTAMP for MySQL (PR #7004 by @AbhishekASLK)cbdad37 - mysql: support CURTIME() for MySQL/SingleStore (PR #7005 by @AbhishekASLK)d16cc62 - optimizer: annotate ADD_MONTH(expr) for Hive/Spark/DBX (PR #7003 by @AbhishekASLK)6381c48 - exasol: support NOW() for exasol (PR #7006 by @AbhishekASLK)d9ea168 - optimizer: annotate CURRENT_USER to base (PR #7007 by @AbhishekASLK)7a2a777 - optimizer: annotate FROM_UTC_TIMESTAMP(expr) for Spark/DBX (PR #7008 by @AbhishekASLK)8be32fd - spark: support MAKE_TIMESTAMP(expr) for Spark/DBX (PR #7009 by @AbhishekASLK)b951d74 - optimizer: annotate NEXT_DAY(expr) for Hive/Spark/DBX (PR #7010 by @AbhishekASLK)404797a - optimizer: Move CURRENT_SCHEMA() to Base Annotator (PR #7021 by @AbhishekASLK)994d3a3 - parser: robust STAR with EXCLUDE (redshift) (PR #6972 by @geooo109)
3ea80fb - optimizer: annotate REVERSE(str) for DuckDB (PR #7018 by @AbhishekASLK)352fb94 - optimizer: annotate ISODOW(expr) for DuckDB (PR #7016 by @AbhishekASLK)c2e5954 - optimizer: annotate COUNTIF(expr) for DuckDB (PR #7012 by @AbhishekASLK)e35ee14 - optimizer: annotate CountIf(expr) for ClickHouse (PR #7013 by @AbhishekASLK)6971c17 - snowflake: support aliases in semantic view dimensions (PR #6994 by @georgesittas)
b73be3e - duckdb: support today() for duckdb (PR #7015 by @AbhishekASLK)36e3310 - exasol: support current_schema as no_param (PR #7000 by @AbhishekASLK)fd8860b - optimizer: annotate FORMAT(expr) for DuckDB (PR #7017 by @AbhishekASLK)eecdfa1 - optimizer: Annotate DAYOFWEEK(expr), DAYOFMONTH(expr) for Hive/Spark/DBX (PR #6996 by @AbhishekASLK)4fc26f0 - optimizer: annotate TIME_BUCKET(expr) for DuckDB (PR #7014 by @AbhishekASLK)00e6d9a - optimizer: annotate UNIX_DATE(expr) for Spark/DBX (PR #7011 by @AbhishekASLK)86a5509 - exasol: support user for exasol (PR #7001 by @AbhishekASLK)b27c163 - optimizer: support CURDATE for Exasol (PR #6999 by @AbhishekASLK)47dc558 - optimizer: annotate ARRAY_COMPACT(expr) for Spark/DBX (PR #7034 by @AbhishekASLK)235b8ac - optimizer: annotate ARRAY_INTERSECT(expr) for Hive/Spark/DBX (PR #7037 by @AbhishekASLK)643a6c7 - snowflake: Transpilation support for Snowflake REGEXP_LIKE to DuckDB (PR #7030 by @fivetran-kwoodbeck)70d6f2b - optimizer: annotate ARRAY_INSERT(expr) for Spark/DBX (PR #7044 by @AbhishekASLK)1011fca - duckdb: transpile Snowflake's current_schemas (PR #7042 by @fivetran-ashashankar)3019d0a - spark: Map BIT_GET to GETBIT for Spark/DBX (PR #7041 by @AbhishekASLK)27ae429 - spark: transpile BIT_COUNT to DuckDB (PR #7039 by @AbhishekASLK)f6cbd27 - postgres: Add support for trigger DDL statements (PR #6978 by @fivetran-amrutabhimsenayachit)
c5939c1 - spark: Map curdate to current_date for Spark/DBX (PR #7048 by @AbhishekASLK)58419e1 - optimizer: move SessionUser to base (PR #7049 by @AbhishekASLK)3c67ec0 - duckdb: Add traspilation support for NULL values in ARRAY_CONTAINS function (PR #7055 by @fivetran-amrutabhimsenayachit)f98cba1 - optimizer: move exp.Rand to base (PR #7065 by @AbhishekASLK)4f8a49c - snowflake: Transpilation support for Snowflake REGEXP_COUNT to DuckDB (PR #7054 by @fivetran-kwoodbeck)eaba8dc - optimizer: move DEGREES(expr) to base (PR #7074 by @AbhishekASLK)a87c1b4 - optimizer: annotate DEGREES(expr) for T-SQL (PR #7077 by @AbhishekASLK)f057a1b - optimizer: move MONTHNAME to base (PR #7083 by @AbhishekASLK)dd2cf85 - clickhouse: support UTCTimestamp (PR #7082 by @AbhishekASLK)7ff13c6 - snowflake: transpilation support map_contains_key (PR #7070 by @fivetran-ashashankar)6fa494d - clickhouse: support arrayCompact(expr) function (PR #7084 by @AbhishekASLK)a58c37d - snowflake: transpilation of Snowflake REGEXP_REPLACE to DuckDB (PR #7078 by @fivetran-kwoodbeck)3a453d0 - duckdb: Add transpilation support for NULLs in ARRAY_DISTINCT (PR #7069 by @fivetran-amrutabhimsenayachit)dfcd5d7 - exasol: Add Exasol reserved keywords to exasol dialect (PR #7086 by @nnamdi16)b569a3d - DuckDb: Add transpilation support for ARRAY_MAX and ARRAY_MIN functions (PR #7080 by @fivetran-amrutabhimsenayachit)1074d66 - snowflake: transpilation of Snowflake REGEXP_INSTR to DuckDB (PR #7097 by @fivetran-kwoodbeck)ab1c2ab - optimizer: annotate PERCENTILE/APPROX_PERCENTILE for hive, spark2, spark, dbx (PR #7100 by @geooo109)
0f8287d - optimizer: annotate BIT_OR(expr) for Spark/DBX (PR #7101 by @AbhishekASLK)e19abfd - optimizer: annotate BIT_AND(expr) for Spark/DBX (PR #7103 by @AbhishekASLK)0c4f74f - optimizer: parse and annotate ELEMENT_AT for spark2, spark, dbx (PR #7104 by @geooo109)
8b8aef0 - optimizer: annotate BIT_XOR(expr) for Spark/DBX (PR #7106 by @AbhishekASLK)ce09e81 - DuckDB: Enable transpilation for ARRAY_EXCEPT function (PR #7094 by @fivetran-amrutabhimsenayachit)1b1d57a - snowflake: transpilation of Snowflake REGEXP_SUBSTR and REGEXP_SUBSTR_ALL to DuckDB (PR #7095 by @fivetran-kwoodbeck)0858599 - clickhouse: support arrayConcat to clickhouse (PR #7108 by @AbhishekASLK)9100ea7 - parser: support DECLARE spark, dbx (PR #7113 by @geooo109)
73ab9af - clickhouse: support arrayDistinct(expr) for clickhouse (PR #7114 by @AbhishekASLK)f796956 - optimizer: annotate ArrayDistinct for Hive/Spark/DBX (PR #7119 by @AbhishekASLK)2069b06 - optimizer: annotate ARRAY_EXCEPT for Hive/Spark/DBX (PR #7123 by @AbhishekASLK)5a30754 - duckdb: support current_localtimestamp() for DuckDB (PR #7128 by @AbhishekASLK)836cc60 - parser: Limit named PK parsing to MySQL only (PR #6991 by @VaggelisD)
495920e - snowflake: Parse MODIFY as ALTER in ALTER TABLE (PR #7024 by @VaggelisD)
1e753a3 - parser: parse cast argument using _parse_assignment closes #7027 (commit by @georgesittas)67e47a4 - Support missing meta when updating position metadata for an expression (PR #7032 by @izeigerman)9bffc99 - snowflake: wrap jarowinkler similarity in UPPER for case-insensitivty (PR #7022 by @kyle-cheung)9d7db06 - spark: Generator for ARRAY_INSERT(expr) (PR #7036 by @AbhishekASLK)
f476d07 - duckdb: update transpilation of SEQ functions and GENERATOR for DuckDB (PR #7029 by @fivetran-kwoodbeck)
aa14297 - duckdb: transpile LATERAL VIEW INLINE from spark to DuckDB (PR #7033 by @fivetran-felixhuang)f9d1f73 - snowflake: refactor colon (extract) parsing precedence (PR #7046 by @georgesittas)5ef8bef - bigquery: Parse & generate table alias before its version (PR #7075 by @VaggelisD)
bd4db6b - parser: INTERVAL units with DCOLON (PR #7076 by @geooo109)
7664358 - exasol: fix parsing error in json_value for exasol dialect (PR #7088 by @nnamdi16)af8c3e9 - missing comments in subquery (commit by @tobymao)217e960 - optimizer: annotate ARRAY_CONTAINS (PR #7099 by @geooo109)3ff4e0d - deploy: Fix _version not exists (PR #7129 by @VaggelisD)93bf337 - optimizer: annotate date_diff(expr) for DuckDB (PR #7125 by @AbhishekASLK)4a38462 - deploy: Use GA ARM machine (PR #7131 by @VaggelisD)a8aa371 - improve DataType.build perf by removing unnecessary constructor (PR #7092 by @georgesittas)f12a58f - extract Column instance check out of _set_type in annotate_types (PR #7091 by @georgesittas)ddbf64c - optimize large query performance in optimizer pipeline (PR #7090 by @sabrikaragonen)
749cf18 - require original SQL in Parser.parse (PR #7045 by @georgesittas)
13ee312 - use IntEnum instead of auto/string enums (PR #7050 by @georgesittas)4f964db - remove prefix from data type and cleanup (commit by @tobymao)1150e39 - expression_core which is now coNothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →