NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #375 most downloaded on PyPI
An easily customizable SQL parser and transpiler
Last release 3 days ago
22 Sep 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 54 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
6 years old
782 releases · first in 2021
One column per quarter.
due to `142c3e7` - Support TO_DOUBLE function *(PR #4255 by @VaggelisD)*:
due to 142c3e7 - Support TO_DOUBLE function (PR #4255 by @VaggelisD):
Support TO_DOUBLE function (#4255)
due to 13d0696 - Support TRY_TO_TIMESTAMP function (PR #4257 by @VaggelisD):
Support TRY_TO_TIMESTAMP function (#4257)
due to 7fc0055 - dont parse right-hand side operands of ARRAY JOIN as Tables (PR #4258 by @georgesittas):
dont parse right-hand side operands of ARRAY JOIN as Tables (#4258)
due to 222152e - Add type hints for optimizer rules eliminate & merge subqueries (PR #4267 by @VaggelisD):
Add type hints for optimizer rules eliminate & merge subqueries (#4267)
6f32e53 - support non-strict qualify_columns (PR #4243 by @hsheth2)ed97954 - duckdb: Transpile Spark's LATERAL VIEW EXPLODE (PR #4252 by @VaggelisD)
8f5efc7 - oracle: parse hints (PR #4249 by @mkmoisen)8b7ff5e - starrocks: support for ALTER TABLE SWAP WITH (PR #4256 by @mrhamburg)1c43348 - trino: Support for LISTAGG function (PR #4253 by @VaggelisD)
142c3e7 - snowflake: Support TO_DOUBLE function (PR #4255 by @VaggelisD)13d0696 - snowflake: Support TRY_TO_TIMESTAMP function (PR #4257 by @VaggelisD)04dccf3 - tsql: Support for stored procedure options (PR #4260 by @rsanchez-xtillion)36f6841 - bigquery: support EDIT_DISTANCE (Levinshtein) function (PR #4276 by @esciara)
fcc05c9 - bigquery: Early expand only aliased names in GROUP BY (PR #4246 by @VaggelisD)5655cfb - add support for negative intervals in to_interval (commit by @georgesittas)51f4d26 - generate single argument ArrayConcat without trailing comma fixes #4259 (commit by @georgesittas)7fc0055 - clickhouse: dont parse right-hand side operands of ARRAY JOIN as Tables (PR #4258 by @georgesittas)
8f49ad8 - clickhouse: traverse_scope with FINAL modifier (PR #4263 by @pkit)
83167ea - hive dialect hierarchy has no CURRENT_TIME func (PR #4264 by @georgesittas)7a5c7e0 - presto: transpile BIT to BOOLEAN (commit by @georgesittas)48be3d8 - make the semantic diffing aware of changes to non-expression leaves (PR #4268 by @georgesittas)4543fb3 - optimizer: Fix merge_subqueries.py::rename_inner_sources() (PR #4266 by @VaggelisD)
222152e - optimizer: Add type hints for optimizer rules eliminate & merge subqueries (PR #4267 by @VaggelisD)94013a2 - simplify _expression_only_args helper in diff module (PR #4251 by @georgesittas)41e2eba - Oracle: simplify hint arg formatting (commit by @georgesittas)cfd692f - move SwapTable logic to the base Parser/Generator classes (commit by @georgesittas)`e6567ae` - small overload fix for ensure list taking None *(PR #4248 by @benfdking)*
e6567ae - small overload fix for ensure list taking None (PR #4248 by @benfdking)due to `275b64b` - refactor set operation builders so they can work with N expressions *(PR #4226 by @georgesittas)*:
due to 275b64b - refactor set operation builders so they can work with N expressions (PR #4226 by @georgesittas):
refactor set operation builders so they can work with N expressions (#4226)
due to aee76da - Native annotations for string functions (PR #4231 by @VaggelisD):
Native annotations for string functions (#4231)
due to 202aaa0 - Native annotations for string functions (PR #4234 by @VaggelisD):
Native annotations for string functions (#4234)
due to 5741180 - produce exp.Column for the RHS of <value> IN <name> (PR #4239 by @georgesittas):
produce exp.Column for the RHS of <value> IN <name> (#4239)
due to 4da2502 - make Explode a UDTF subclass (PR #4242 by @georgesittas):
make Explode a UDTF subclass (#4242)
163e943 - tsql: SPLIT_PART function and conversion to PARSENAME in tsql (PR #4211 by @daihuynh)275b64b - refactor set operation builders so they can work with N expressions (PR #4226 by @georgesittas)3f6ba3e - clickhouse: Support varlen arrays for ARRAY JOIN (PR #4229 by @VaggelisD)
aee76da - bigquery: Native annotations for string functions (PR #4231 by @VaggelisD)202aaa0 - bigquery: Native annotations for string functions (PR #4234 by @VaggelisD)eeae25e - support EXPLAIN in mysql (PR #4235 by @xiaoyu-meng-mxy)06748d9 - mysql: add support for operation modifiers like HIGH_PRIORITY (PR #4238 by @georgesittas)
dcdec95 - Make exp.Update a DML node (PR #4223 by @VaggelisD)
79caf51 - clickhouse: rename BOOLEAN type to Bool fixes #4230 (commit by @georgesittas)b26a3f6 - satisfy mypy (commit by @georgesittas)5741180 - parser: produce exp.Column for the RHS of <value> IN <name> (PR #4239 by @georgesittas)
daa6e78 - optimizer: handle subquery predicate substitution correctly in de morgan's rule (PR #4240 by @georgesittas)c0a8355 - parser: parse a column reference for the RHS of the IN clause (PR #4241 by @georgesittas)0882f03 - Rename exp.RenameTable to exp.AlterRename (PR #4224 by @VaggelisD)
fd42b5c - Simplify PARSENAME <-> SPLIT_PART transpilation (PR #4225 by @VaggelisD)4da2502 - make Explode a UDTF subclass (PR #4242 by @georgesittas)`22a1684` - bigquery: Native annotations for more math functions *(PR #4212 by @VaggelisD)*
22a1684 - bigquery: Native annotations for more math functions (PR #4212 by @VaggelisD)354cfff - add builder methods to exp.Update and add with_ arg to exp.update (PR #4217 by @brdbry)2c513b7 - Attach CTE comments before commas (PR #4218 by @VaggelisD)
`484df7d` - tsql union with limit *(commit by @tobymao)*
`25b18d2` - trino: Support JSON_QUERY *(PR #4206 by @VaggelisD)*
25b18d2 - trino: Support JSON_QUERY (PR #4206 by @VaggelisD)
5781b45 - duckdb: Add more Postgres operators (PR #4199 by @VaggelisD)
89c0703 - bigquery: Native math function annotations (PR #4201 by @VaggelisD)977d9e5 - allow supplying dialect in diff, conditionally copy ASTs (PR #4208 by @georgesittas)
`c8b7c1e` - optimizer: Fixture file for function annotations *(PR #4182 by @VaggelisD)*
c8b7c1e - optimizer: Fixture file for function annotations (PR #4182 by @VaggelisD)0adbbf7 - duckdb: Parse ** and ^ operators as POW (PR #4193 by @VaggelisD)
4949906 - duckdb: Parse ~~~ as GLOB (PR #4194 by @VaggelisD)
6ba2bb0 - oracle: Add support for BULK COLLECT INTO (PR #4181 by @mkmoisen)0de59ce - mark expressions as unsupported in Into generator (commit by @georgesittas)475f7a3 - redshift: Add unsupported warnings for UNNEST (PR #4173 by @VaggelisD)
d38e023 - spark: Offset TRY_ELEMENT_AT by one (PR #4183 by @VaggelisD)3d1c643 - rename SHA function to SHA1 for DuckDB (PR #4191 by @rustyconover)0388a51 - add support for UHUGEINT for duckdb (PR #4190 by @rustyconover)
9eba00d - duckdb: Parse ~~ as LIKE (PR #4195 by @VaggelisD)
6a65973 - expand UPDATABLE_EXPRESSION_TYPES to account for Identifier changes (PR #4197 by @georgesittas)
a6c28c6 - sqlite: generate StrPosition as INSTR (PR #4198 by @pruzko)
5a123a5 - oracle: retreat properly when parsing BULK COLLECT INTO (commit by @georgesittas)f935e42 - properly escape closing identifier delimiters (PR #4202 by @georgesittas)`7af33a2` - spark: Custom annotation for more string functions *(PR #4156 by @VaggelisD)*
7af33a2 - spark: Custom annotation for more string functions (PR #4156 by @VaggelisD)due to `3ab6dfb` - Generalize COLUMNS(...) APPLY *(PR #4161 by @VaggelisD)*:
due to 3ab6dfb - Generalize COLUMNS(...) APPLY (PR #4161 by @VaggelisD):
Generalize COLUMNS(...) APPLY (#4161)
93cef30 - postgres: Support OVERLAY function (PR #4165 by @VaggelisD)
0a5444d - expose a flag to automatically exclude Keep diff nodes (PR #4168 by @georgesittas)9c17264 - hive: Enclose exp.Split with \E (PR #4163 by @VaggelisD)
3ab6dfb - clickhouse: Generalize COLUMNS(...) APPLY (PR #4161 by @VaggelisD)
2540e50 - simplify check_deploy job (commit by @georgesittas)f6d3bdd - update supported dialect count (21 -> 23) (commit by @georgesittas)`eca05d3` - tweak should_deploy_rs script to avoid marking CI as failed *(commit by @georgesittas)*
eca05d3 - tweak should_deploy_rs script to avoid marking CI as failed (commit by @georgesittas)`349b8f8` - fetch all history to allow workflow script to skip sqlglotrs deployments *(PR #4162 by @georgesittas)*
349b8f8 - fetch all history to allow workflow script to skip sqlglotrs deployments (PR #4162 by @georgesittas)due to `da51ea5` - refactor exp.Chr *(PR #4081 by @georgesittas)*:
due to da51ea5 - refactor exp.Chr (PR #4081 by @georgesittas):
refactor exp.Chr (#4081)
due to 9c527b5 - treat Nullable as an arg instead of a DataType.TYPE (PR #4094 by @georgesittas):
treat Nullable as an arg instead of a DataType.TYPE (#4094)
due to ba015dc - add returning to merge expression builder (PR #4125 by @max-muoto):
add returning to merge expression builder (#4125)
due to 77a514d - Parse VALUES & query modifiers in wrapped FROM clause (PR #4135 by @VaggelisD):
Parse VALUES & query modifiers in wrapped FROM clause (#4135)
5771d8d - add merge expression builder (PR #4084 by @max-muoto)1d52709 - postgres: Parse DO NOTHING and RETURNING in MERGE statement (PR #4087 by @VaggelisD)
1615bad - Add support for UUID function (PR #4089 by @VaggelisD)5733600 - bigquery: transpile UUID type to STRING (PR #4093 by @georgesittas)
75230f5 - bigquery: add support for the MERGE ... THEN INSERT ROW syntax (PR #4096 by @georgesittas)
f8d4dc4 - parser: add support for ALTER INDEX closes #4105 (commit by @georgesittas)28c6f27 - duckdb: Support *COLUMNS() function (PR #4106 by @VaggelisD)
3cb0041 - snowflake: Fix exp.Pivot FOR IN clause (PR #4109 by @VaggelisD)
7ac21a0 - athena: Improve DDL query support (PR #4099 by @erindru)a34f8b6 - oracle: support TRUNC without fmt argument fixes #4116 (commit by @georgesittas)bd8e050 - clickhouse: support ON CLUSTER clause in DELETE (PR #4119 by @treysp)1fac6a9 - expose sqlglot.expressions.delete as a sqlglot module function (PR #4126 by @max-muoto)4506b3b - duckdb: add support for the UNION type (PR #4128 by @georgesittas)ba015dc - add returning to merge expression builder (PR #4125 by @max-muoto)3ec96ab - clickhouse: Add support for APPLY query modifier (PR #4141 by @VaggelisD)
04ddc54 - bigquery: Support RANGE<T> type (PR #4148 by @VaggelisD)
17533ee - Add support for GRANT DDL (PR #4138 by @VaggelisD)1a240ec - Add SUBSTR Support (PR #4153 by @mwc360)da51ea5 - parser: refactor exp.Chr (PR #4081 by @georgesittas)
6294f9e - starrocks: generate ARRAY_FILTER for exp.ArrayFilter (PR #4088 by @gauravsagar483)1e02c02 - mysql: convert VARCHAR without size to TEXT for DDLs (PR #4092 by @georgesittas)cb5bcff - clickhouse: generate formatDateTime instead of DATE_FORMAT fixes #4098 (commit by @georgesittas)b10255e - snowflake: Manually escape single quotes in colon operator (PR #4104 by @VaggelisD)
67a9ad8 - Move JSON path escape to generation (PR #4110 by @VaggelisD)
06c76f7 - calling interval without unit (commit by @tobymao)66c3295 - optimizer: Enable USING expansion with multiple joins (PR #4113 by @dg-hellotwin)
21f5bcd - parse struct(...)[] type properly (PR #4123 by @georgesittas)22c456d - Do not generate DISTINCT keyword in FILTER (PR #4130 by @VaggelisD)
089b77e - athena: DDL fixes (PR #4132 by @erindru)e6c9902 - invalid regex (commit by @tobymao)77a514d - parser: Parse VALUES & query modifiers in wrapped FROM clause (PR #4135 by @VaggelisD)
8822d6c - parser: handle brackets in column op json extract arrow parser (PR #4140 by @georgesittas)
be0a4a8 - bigquery: Consume dashed identifiers only if they're connected (PR #4144 by @VaggelisD)0444819 - optimizer: don't reorder subquery predicates in simplify (PR #4147 by @georgesittas)89519bb - clickhouse: make ToTableProperty appear right after the DDL name (PR #4151 by @georgesittas)
9c527b5 - treat Nullable as an arg instead of a DataType.TYPE (PR #4094 by @georgesittas)2961049 - implement decorator to easily mark args as unsupported (PR #4111 by @georgesittas)7cf1d70 - optimizer: Optimize USING expansion (PR #4115 by @VaggelisD)75e6406 - prql: rewrite tests to use validate_all() (PR #4097 by @JJHCool)e1f6ae3 - prql: use validate_all instead of validate_identity (commit by @georgesittas)2dc0b86 - optimizer: rename helper function in expand_using (PR #4117 by @georgesittas)fd8b8ba - create ARRAY_TYPES set under DataType (commit by @georgesittas)due to `ba015dc` - add returning to merge expression builder *(PR #4125 by @max-muoto)*:
due to ba015dc - add returning to merge expression builder (PR #4125 by @max-muoto):
add returning to merge expression builder (#4125)
1fac6a9 - expose sqlglot.expressions.delete as a sqlglot module function (PR #4126 by @max-muoto)4506b3b - duckdb: add support for the UNION type (PR #4128 by @georgesittas)ba015dc - add returning to merge expression builder (PR #4125 by @max-muoto)`bd8e050` - clickhouse: support ON CLUSTER clause in DELETE *(PR #4119 by @treysp)*
`a34f8b6` - oracle: support TRUNC without fmt argument fixes #4116 *(commit by @georgesittas)*
a34f8b6 - oracle: support TRUNC without fmt argument fixes #4116 (commit by @georgesittas)66c3295 - optimizer: Enable USING expansion with multiple joins (PR #4113 by @dg-hellotwin)
7cf1d70 - optimizer: Optimize USING expansion (PR #4115 by @VaggelisD)2dc0b86 - optimizer: rename helper function in expand_using (PR #4117 by @georgesittas)fd8b8ba - create ARRAY_TYPES set under DataType (commit by @georgesittas)`06c76f7` - calling interval without unit *(commit by @tobymao)*
due to `da51ea5` - refactor exp.Chr *(PR #4081 by @georgesittas)*:
due to da51ea5 - refactor exp.Chr (PR #4081 by @georgesittas):
refactor exp.Chr (#4081)
due to 9c527b5 - treat Nullable as an arg instead of a DataType.TYPE (PR #4094 by @georgesittas):
treat Nullable as an arg instead of a DataType.TYPE (#4094)
5771d8d - add merge expression builder (PR #4084 by @max-muoto)1d52709 - postgres: Parse DO NOTHING and RETURNING in MERGE statement (PR #4087 by @VaggelisD)
1615bad - Add support for UUID function (PR #4089 by @VaggelisD)5733600 - bigquery: transpile UUID type to STRING (PR #4093 by @georgesittas)
75230f5 - bigquery: add support for the MERGE ... THEN INSERT ROW syntax (PR #4096 by @georgesittas)
f8d4dc4 - parser: add support for ALTER INDEX closes #4105 (commit by @georgesittas)28c6f27 - duckdb: Support *COLUMNS() function (PR #4106 by @VaggelisD)
3cb0041 - snowflake: Fix exp.Pivot FOR IN clause (PR #4109 by @VaggelisD)
7ac21a0 - athena: Improve DDL query support (PR #4099 by @erindru)da51ea5 - parser: refactor exp.Chr (PR #4081 by @georgesittas)
6294f9e - starrocks: generate ARRAY_FILTER for exp.ArrayFilter (PR #4088 by @gauravsagar483)1e02c02 - mysql: convert VARCHAR without size to TEXT for DDLs (PR #4092 by @georgesittas)cb5bcff - clickhouse: generate formatDateTime instead of DATE_FORMAT fixes #4098 (commit by @georgesittas)b10255e - snowflake: Manually escape single quotes in colon operator (PR #4104 by @VaggelisD)
67a9ad8 - Move JSON path escape to generation (PR #4110 by @VaggelisD)
9c527b5 - treat Nullable as an arg instead of a DataType.TYPE (PR #4094 by @georgesittas)2961049 - implement decorator to easily mark args as unsupported (PR #4111 by @georgesittas)75e6406 - prql: rewrite tests to use validate_all() (PR #4097 by @JJHCool)e1f6ae3 - prql: use validate_all instead of validate_identity (commit by @georgesittas)Nothing published for this version
`8a357cc` - bump sqlglotrs to 0.2.12 -- remove relative readme path *(commit by @georgesittas)*
8a357cc - bump sqlglotrs to 0.2.12 -- remove relative readme path (commit by @georgesittas)due to `3e1af21` - Canonicalize exp.RegexpExtract group default value *(PR #4051 by @VaggelisD)*:
due to 3e1af21 - Canonicalize exp.RegexpExtract group default value (PR #4051 by @VaggelisD):
Canonicalize exp.RegexpExtract group default value (#4051)
due to c8e2eae - do not canonicalize INTERVAL values to number literals (commit by @VaggelisD):
do not canonicalize INTERVAL values to number literals
d3ee5ea - oracle: parse TRUNC to facilitate transpilation closes #4054 (commit by @georgesittas)143f176 - clickhouse: transpile oracle functions chr, lag, lead (PR #4053 by @sleshJdev)d89757e - postgres: add support for the NOT VALID clause in ALTER TABLE fixes #4077 (commit by @georgesittas)3e1af21 - Canonicalize exp.RegexpExtract group default value (PR #4051 by @VaggelisD)
75cafad - starrocks: Move the parse distribute and duplicate to Parser (PR #4062 by @hellozepp)74352d5 - tsql: use plus operator for string concat to support more systems that use tsql (PR #4067 by @cpcloud)
c8e2eae - do not canonicalize INTERVAL values to number literals (commit by @VaggelisD)532a024 - snowflake, bigquery: Remove exp.Trim generation (PR #4070 by @VaggelisD)
ad7e582 - athena: Apply correct quoting to queries depending on type (DML or DDL) (PR #4073 by @erindru)cc5b877 - parser: Wrap column constraints in _parse_column_def() (PR #4078 by @VaggelisD)
4eb384a - clickhouse: Remove CURRENT_TIMESTAMP from NO_PAREN_FUNCTIONS (PR #4079 by @VaggelisD)
534f882 - clickhouse: clean up chr, lag, lead generation (commit by @georgesittas)b986ebe - fill in more details for sqlglotrs pypi page (PR #4071 by @georgesittas)0310926 - bump sqlglotrs to 0.2.11 (update pypi details) (commit by @georgesittas)due to `6da9328` - refactor SET OPERATION handling to set correct defaults *(PR #4009 by @georgesittas)*:
due to 6da9328 - refactor SET OPERATION handling to set correct defaults (PR #4009 by @georgesittas):
refactor SET OPERATION handling to set correct defaults (#4009)
due to 4b69d18 - use TO_GEOGRAPHY, TO_GEOMETRY instead of casts (PR #4017 by @georgesittas):
use TO_GEOGRAPHY, TO_GEOMETRY instead of casts (#4017)
due to 0985907 - Add UnsupportedError to unnest_to_explode transform (PR #4016 by @VaggelisD):
Add UnsupportedError to unnest_to_explode transform (#4016)
due to 7d63d23 - Support JSON_EXISTS, refactor ON handling (PR #4032 by @VaggelisD):
Support JSON_EXISTS, refactor ON handling (#4032)
f550ba1 - presto: support [ SECURITY { DEFINER | INVOKER } ] (PR #4008 by @usmanovbf)dedd757 - oracle: Parse multitable inserts (PR #4000 by @usefulalgorithm)0985907 - Add UnsupportedError to unnest_to_explode transform (PR #4016 by @VaggelisD)8f5fccf - presto: generate non-iso DayOfWeek (commit by @georgesittas)7d63d23 - oracle: Support JSON_EXISTS, refactor ON handling (PR #4032 by @VaggelisD)
85cc7ad - duckdb: Transpile BQ's exp.ArrayToString (PR #4034 by @VaggelisD)7f2c7f1 - Support for NORMALIZE() function (PR #4041 by @VaggelisD)
a1b9803 - support COMPRESS column constraint wihout a value (PR #4045 by @thomascjohnson)8583772 - tsql: Use count_big instead of count (PR #3996 by @colin-ho)
4b7ca2b - spark: Custom annotation for SUBSTRING() (PR #4004 by @VaggelisD)
cb172db - clickhouse: ensure that ALL and DISTINCT are rendered for except and intersect (PR #4007 by @cpcloud)
829fdcb - starrocks: exp.Unnest transpilation (PR #3999 by @hellozepp)
6da9328 - refactor SET OPERATION handling to set correct defaults (PR #4009 by @georgesittas)23a928e - mysql: Preserve roundtrip of %a, %W time formats (PR #4014 by @VaggelisD)
2d4483c - don't log warning in to_json_path conditionally (PR #4015 by @georgesittas)
4b69d18 - snowflake: use TO_GEOGRAPHY, TO_GEOMETRY instead of casts (PR #4017 by @georgesittas)1108426 - optimizer: annotate unary expressions correctly (PR #4019 by @georgesittas)5fad18c - presto: exp.DayOfWeek (PR #4024 by @hellozepp)ea9a494 - parser: consume STREAM in _parse_select only if it's a VAR, closes #4029 (commit by @georgesittas)c239a74 - transpile null exclusion for ARRAY_AGG (PR #4033 by @georgesittas)
60a8f16 - parser: don't consume strings in match_text_seq (commit by @georgesittas)a726583 - parser: don't consume strings in match_texts (commit by @georgesittas)551d32f - postgres: Support for DROP INDEX CONCURRENTLY. (PR #4040 by @EdgyEdgemond)
f55647d - starrocks: exp.Create transpilation (PR #4023 by @hellozepp)
bf0f5fa - parser: Ensure exp.Coalesce expressions is a list (PR #4050 by @VaggelisD)
6494776 - simplify multi-insert generation, fix pretty mode (commit by @georgesittas)b11c73e - clean up starrocks DISTRIBUTED BY property generation (commit by @georgesittas)c35a62c - set the license for sqlglotrs (PR #4048 by @georgesittas)
9b7eb2e - bump sqlglotrs to v0.2.10 (commit by @georgesittas)due to `22bb9a0` - stop normalizing qualified anonymous functions *(PR #3969 by @georgesittas)*:
due to 22bb9a0 - stop normalizing qualified anonymous functions (PR #3969 by @georgesittas):
stop normalizing qualified anonymous functions (#3969)
due to 8aec682 - mysql/tsql datetime precision, formatting, exp.AtTimeZone (PR #3951 by @erindru):
mysql/tsql datetime precision, formatting, exp.AtTimeZone (#3951)
due to 2f3626a - Generation of exp.SHA2, exp.Transform, exp.IgnoreNulls (PR #3980 by @VaggelisD):
Generation of exp.SHA2, exp.Transform, exp.IgnoreNulls (#3980)
due to 905b722 - preserve each distinct CUBE/ROLLUP/GROUPING SET clause (PR #3985 by @georgesittas):
preserve each distinct CUBE/ROLLUP/GROUPING SET clause (#3985)
48b214d - postgres: Support for IS JSON predicate (PR #3971 by @VaggelisD)
f7e4e4a - duckdb: add support for the GLOB table function closes #3973 (commit by @georgesittas)a0d1377 - spark: add support for table statement in INSERT (PR #3986 by @georgesittas)
f5bfd67 - mysql: Parse JSON_VALUE() (PR #3987 by @VaggelisD)
79e92ad - spark: Default naming of STRUCT fields (PR #3991 by @VaggelisD)
22bb9a0 - stop normalizing qualified anonymous functions (PR #3969 by @georgesittas)
8aec682 - mysql/tsql datetime precision, formatting, exp.AtTimeZone (PR #3951 by @erindru)d37a5bb - snowflake: handle DIV0 case where divident is null (PR #3975 by @georgesittas)
b2f877b - oracle: Use LTRIM/RTRIM unless BOTH is specified (PR #3977 by @VaggelisD)201b51a - sqlite: Make IS parser more lenient (PR #3981 by @VaggelisD)
2f3626a - duckdb: Generation of exp.SHA2, exp.Transform, exp.IgnoreNulls (PR #3980 by @VaggelisD)
905b722 - parser: preserve each distinct CUBE/ROLLUP/GROUPING SET clause (PR #3985 by @georgesittas)
ee9dc39 - Fix binding of TABLESAMPLE to exp.Subquery instead of top-level exp.Select (PR #3994 by @VaggelisD)
due to `0a9ba05` - 0 is falsey *(commit by @tobymao)*:
42b725e - flaky test closes #3961 (commit by @tobymao)cc29921 - Parse LTRIM/RTRIM functions as positional exp.Trim (PR #3958 by @VaggelisD)
678e692 - make sample an arg of table, not a wrapper (PR #3963 by @barakalon)0a9ba05 - 0 is falsey (commit by @tobymao)c1ac987 - starrocks: exp.Array generation, exp.Unnest alias (PR #3964 by @VaggelisD)
`c4e5be7` - include dialect when parsing inside cast *(PR #3960 by @eakmanrq)*
794dc4c - update readme to include onboarding doc (commit by @georgesittas)due to `f68d155` - exp.Merge, for Trino and Postgres, dont strip the target alias from then WHEN MATCHED condition to prevent an ambiguous column erro
due to f68d155 - exp.Merge, for Trino and Postgres, dont strip the target alias from then WHEN MATCHED condition to prevent an ambiguous column error (PR #3940 by @erindru):
exp.Merge, for Trino and Postgres, dont strip the target alias from then WHEN MATCHED condition to prevent an ambiguous column error (#3940)
due to 667f7d9 - attach INTERPOLATE expressions to WithFill (PR #3944 by @georgesittas):
attach INTERPOLATE expressions to WithFill (#3944)
due to 145fdbf - Redshift date format (PR #3942 by @erindru):
Redshift date format (#3942)
due to a84a21a - Add timezone support to exp.TimeStrToTime (PR #3938 by @erindru):
Add timezone support to exp.TimeStrToTime (#3938)
a84a21a - Add timezone support to exp.TimeStrToTime (PR #3938 by @erindru)70a052a - transpile from_iso8601_timestamp from presto/trino to duckdb (PR #3956 by @georgesittas)f68d155 - exp.Merge, for Trino and Postgres, dont strip the target alias from then WHEN MATCHED condition to prevent an ambiguous column error (PR #3940 by @erindru)0458dc0 - optimizer: expand alias refs recursive CTE edge case patch (PR #3943 by @georgesittas)145fdbf - Redshift date format (PR #3942 by @erindru)6233c2c - parser: Support sqls with DESCRIBE partition (PR #3945 by @gp1105739)
85cd6e5 - bigquery: Map %e to %-d (PR #3946 by @VaggelisD)1ba0f03 - duckdb: TIME does not support modifiers (PR #3947 by @georgesittas)d5d3615 - optimizer: convert TsOrDsToDate to Cast more conservatively (PR #3949 by @barakalon)fb6edc7 - oracle/snowflake comments closes #3950 (commit by @tobymao)1284fd0 - oracle: Revert NVL() being parsed into exp.Anonymous (PR #3954 by @VaggelisD)
c99f8d5 - duckdb: Fix exp.Unnest generation for BQ's nested arrays (PR #3931 by @VaggelisD)f16b0e7 - iteratively generate binary expressions (PR #3926 by @MatMoore)667f7d9 - clickhouse: attach INTERPOLATE expressions to WithFill (PR #3944 by @georgesittas)c697357 - slightly refactor Generator.binary, add stress test (commit by @georgesittas)6a5f619 - New doc - Onboarding Doc (PR #3902 by @VaggelisD)due to `a668655` - preserve SYSDATE *(PR #3935 by @georgesittas)*:
due to a668655 - preserve SYSDATE (PR #3935 by @georgesittas):
preserve SYSDATE (#3935)
be11f4c - clickhouse: add support for "@"-style parameters (PR #3939 by @georgesittas)a668655 - oracle: preserve SYSDATE (PR #3935 by @georgesittas)
b824f8a - parser: allow complex expressions for UNPIVOT alias (PR #3937 by @georgesittas)
f4c34d3 - move "MINUS": TokenType.EXCEPT to hive instead of spark (commit by @georgesittas)due to `605f1b2` - use creatable kind mapping dict for schema<-->database substitution *(PR #3924 by @treysp)*:
due to 605f1b2 - use creatable kind mapping dict for schema<-->database substitution (PR #3924 by @treysp):
use creatable kind mapping dict for schema<-->database substitution (#3924)
due to f418caa - skip nullable comparison in is_type by default (PR #3927 by @georgesittas):
skip nullable comparison in is_type by default (#3927)
f418caa - skip nullable comparison in is_type by default (PR #3927 by @georgesittas)due to `102f5d4` - infer set op types more accurately *(PR #3918 by @georgesittas)*:
due to 102f5d4 - infer set op types more accurately (PR #3918 by @georgesittas):
infer set op types more accurately (#3918)
due to 46496a6 - improve transpilation of nullable/non-nullable data types (PR #3921 by @georgesittas):
improve transpilation of nullable/non-nullable data types (#3921)
c74a8fd - clickhouse: make try_cast toXXXOrNull() functions case-specific (PR #3917 by @treysp)102f5d4 - optimizer: infer set op types more accurately (PR #3918 by @georgesittas)
1d436d4 - clickhouse: transpile TRY_CAST(x AS T) to CAST(x AS Nullable(T)) (PR #3919 by @georgesittas)46496a6 - clickhouse: improve transpilation of nullable/non-nullable data types (PR #3921 by @georgesittas)due to `e8e70f3` - treat DATABASE kind as SCHEMA (and conversely) in exp.Create *(PR #3912 by @georgesittas)*:
due to e8e70f3 - treat DATABASE kind as SCHEMA (and conversely) in exp.Create (PR #3912 by @georgesittas):
treat DATABASE kind as SCHEMA (and conversely) in exp.Create (#3912)
9a66903 - clickhouse: add support for TryCast generation (PR #3913 by @georgesittas)7965cac - clickhouse: wrap query in CTAS when COMMENT prop is present (PR #3911 by @georgesittas)e8e70f3 - clickhouse: treat DATABASE kind as SCHEMA (and conversely) in exp.Create (PR #3912 by @georgesittas)`57f7aa9` - clickhouse: COMMENT property in CTAS needs to come last *(PR #3910 by @georgesittas)*
57f7aa9 - clickhouse: COMMENT property in CTAS needs to come last (PR #3910 by @georgesittas)`c22f411` - clickhouse: ensure we generate the Table in creatable_sql if it represents a db ref *(commit by @georgesittas)*
c22f411 - clickhouse: ensure we generate the Table in creatable_sql if it represents a db ref (commit by @georgesittas)19eee93 - various fixups for unnest(generatedatearray) transpilation (PR #3906 by @georgesittas)`790c1b1` - clickhouse: support PARTITION BY, SETTINGS in Insert expression *(PR #3904 by @georgesittas)*
790c1b1 - clickhouse: support PARTITION BY, SETTINGS in Insert expression (PR #3904 by @georgesittas)due to `0428c37` - Support ALTER VIEW AS SELECT *(PR #3873 by @xiaohui-sun)*:
due to 0428c37 - Support ALTER VIEW AS SELECT (PR #3873 by @xiaohui-sun):
Support ALTER VIEW AS SELECT (#3873)
due to a666117 - parse v NOT IN (subquery) as v <> ALL (subquery) (PR #3891 by @georgesittas):
parse v NOT IN (subquery) as v <> ALL (subquery) (#3891)
due to d968932 - treat identifiers as case-sensitive, handle EMPTY table property, generate DateStrToDate (PR #3895 by @jwhitaker-gridcog):
treat identifiers as case-sensitive, handle EMPTY table property, generate DateStrToDate (#3895)
due to 1d7319a - transpile Unnest(GenerateDateArray(...)) to various dialects (PR #3899 by @georgesittas):
transpile Unnest(GenerateDateArray(...)) to various dialects (#3899)
0428c37 - parser: Support ALTER VIEW AS SELECT (PR #3873 by @xiaohui-sun)8a48458 - athena: parse UNLOAD into exp.Command closes #3896 (commit by @georgesittas)6f1527f - bigquery: transpile format_datetime, datetime_trunc to duckdb (PR #3894 by @skadel)1d7319a - transpile Unnest(GenerateDateArray(...)) to various dialects (PR #3899 by @georgesittas)2cac14f - generate set ops in ALTER VIEW AS statement (commit by @georgesittas)a666117 - snowflake: parse v NOT IN (subquery) as v <> ALL (subquery) (PR #3891 by @georgesittas)
924a4af - oracle: preserve function-style MOD syntax fixes #3897 (commit by @georgesittas)d968932 - clickhouse: treat identifiers as case-sensitive, handle EMPTY table property, generate DateStrToDate (PR #3895 by @jwhitaker-gridcog)3e5e730 - clickhouse: generate exp.Values correctly, handle FORMAT Values (PR #3900 by @georgesittas)bea3c08 - parser: improve performance of OUTER/CROSS APPLY parsing (PR #3901 by @georgesittas)
due to `3eb46db` - switch off CSV file schema inference by default *(PR #3879 by @georgesittas)*:
due to 3eb46db - switch off CSV file schema inference by default (PR #3879 by @georgesittas):
switch off CSV file schema inference by default (#3879)
3e4fcf7 - databricks: Add support for STREAMING tables (PR #3878 by @VaggelisD)
528f690 - duckdb: Transpile Snowflake's CONVERT_TIMEZONE 3-arg version (PR #3883 by @VaggelisD)
411f62a - bigquery: Support for GENERATE_TIMESTAMP_ARRAY, DDB transpilation (PR #3888 by @VaggelisD)7169e6e - bigquery: ensure Funcs are preserved when used as Tables (PR #3877 by @georgesittas)62ceed2 - redshift: parse first arg in DATE_PART into a Var fixes #3882 (commit by @georgesittas)2ad9bfe - snowflake: support table qualification in USING clause (PR #3885 by @georgesittas)
ef16b1d - Fix COLLATE's RHS parsing (PR #3887 by @VaggelisD)
3eb46db - optimizer: switch off CSV file schema inference by default (PR #3879 by @georgesittas)due to `64e187c` - transpile postgres impliclitly exploding GENERATE_SERIES proje… *(PR #3853 by @georgesittas)*:
due to 64e187c - transpile postgres impliclitly exploding GENERATE_SERIES proje… (PR #3853 by @georgesittas):
transpile postgres impliclitly exploding GENERATE_SERIES proje… (#3853)
due to e53e7cc - Generation of exp.ArrayConcat for 2-arg based dialects (PR #3864 by @VaggelisD):
Generation of exp.ArrayConcat for 2-arg based dialects (#3864)
due to 659b8bf - Support for BQ's exp.GenerateDateArray generation (PR #3865 by @VaggelisD):
Support for BQ's exp.GenerateDateArray generation (#3865)
6afed2a - duckdb: Support for exp.TimeDiff generation (PR #3856 by @VaggelisD)64e187c - transpile postgres impliclitly exploding GENERATE_SERIES proje… (PR #3853 by @georgesittas)
8a948c8 - teradata: Parse RENAME TABLE as Command (PR #3863 by @VaggelisD)
659b8bf - duckdb: Support for BQ's exp.GenerateDateArray generation (PR #3865 by @VaggelisD)734f54b - snowflake: add support for a a couple of missing clauses in PIVOT clause (PR #3867 by @georgesittas)8710763 - presto: map %W to %A in the TIME_MAPPING (PR #3855 by @georgesittas)
532f3c8 - duckdb: Add implicit casts to DATE_DIFF (PR #3857 by @VaggelisD)299c4a5 - clickhouse: Fix SETTINGS parsing (PR #3859 by @VaggelisD)
810d23d - parser: make assignment parsing more lenient by allowing keyword in LHS (PR #3866 by @georgesittas)e53e7cc - Generation of exp.ArrayConcat for 2-arg based dialects (PR #3864 by @VaggelisD)813f127 - duckdb: Allow DESCRIBE as a _parse_select() path (PR #3871 by @VaggelisD)
6ff0c01 - Fixed size array parsing (PR #3870 by @VaggelisD)
`a295b3a` - tsql: regression related to CTEs in CREATE VIEW AS statements *(PR #3852 by @georgesittas)*
a295b3a - tsql: regression related to CTEs in CREATE VIEW AS statements (PR #3852 by @georgesittas)`e37d63a` - bigquery: add support for BYTEINT closes #3838 *(commit by @georgesittas)*
e37d63a - bigquery: add support for BYTEINT closes #3838 (commit by @georgesittas)4c912cd - clickhouse: improve parsing/transpilation of StrToDate (PR #3839 by @georgesittas)
45f45ea - duckdb: add support for SUMMARIZE (PR #3840 by @georgesittas)
57ecc84 - duckdb: wrap left IN clause json extract arrow operand fixes #3836 (commit by @georgesittas)2ffb070 - duckdb: allow fixed length array casts closes #3841 (PR #3842 by @tobymao)d71eb4e - pretty gen for tuples (commit by @tobymao)12ae9cd - tsql: handle JSON_QUERY with a single argument (PR #3847 by @georgesittas)
f8ca6b4 - tsql: bubble up exp.Create CTEs to improve transpilability (PR #3848 by @georgesittas)
89976c1 - parser: allow 'cube' to be used for identifiers (PR #3850 by @georgesittas)d00ea9c - exclude boolean args in Generator.format_args (PR #3849 by @georgesittas)`ba0aa50` - duckdb: Transpile BQ's exp.DatetimeAdd, exp.DatetimeSub *(PR #3777 by @VaggelisD)*
ba0aa50 - duckdb: Transpile BQ's exp.DatetimeAdd, exp.DatetimeSub (PR #3777 by @VaggelisD)5da91fb - postgres: Support for CREATE INDEX CONCURRENTLY (PR #3787 by @VaggelisD)
00722eb - Move ANNOTATORS to Dialect for dialect-aware annotation (PR #3786 by @VaggelisD)
a6d84fb - postgres: Parse TO_DATE as exp.StrToDate (PR #3799 by @VaggelisD)
3582644 - hive, spark, db: Support for exp.GenerateSeries (PR #3798 by @VaggelisD)
80b4a12 - tsql: Support for COLUMNSTORE option on CREATE INDEX (PR #3805 by @VaggelisD)
bf6c126 - databricks: Support USE CATALOG (PR #3812 by @VaggelisD)
624d411 - snowflake: Support for OBJECT_INSERT, transpile to DDB (PR #3807 by @VaggelisD)
5b393fb - postgres: Add missing constraint options (PR #3816 by @VaggelisD)
898f523 - duckdb: Wrap JSON_EXTRACT if it's subscripted (PR #3785 by @VaggelisD)
db3748d - mysql: don't wrap VALUES clause (PR #3792 by @georgesittas)
44d6506 - with as comments closes #3794 (commit by @tobymao)8ca6a61 - tsql: Fix roundtrip of exp.Stddev (PR #3806 by @VaggelisD)
8551063 - duckdb: Fix STRUCT_PACK -> ROW due to is_struct_cast (PR #3809 by @VaggelisD)
98f80ed - clickhouse: allow like as an identifier closes #3813 (commit by @tobymao)556ba35 - allow parse_identifier to handle single quotes (commit by @tobymao)f9810d2 - snowflake: Don't consume LPAREN when parsing staged file path (PR #3815 by @VaggelisD)416f4a1 - postgres: Fix COLLATE column constraint (PR #3820 by @VaggelisD)
69b9395 - Do not preemptively consume SELECT [ALL] if ALL is connected (PR #3822 by @VaggelisD)
1c19abe - presto, trino: Fix StrToUnix transpilation (PR #3824 by @VaggelisD)
`19370d5` - postgres: Decouple UNIQUE from DEFAULT constraints *(PR #3775 by @VaggelisD)*
19370d5 - postgres: Decouple UNIQUE from DEFAULT constraints (PR #3775 by @VaggelisD)
e99146b - make copy a dml statement for qualify_tables (commit by @tobymao)due to `89fc63c` - QUALIFY comes after WINDOW clause in queries *(PR #3745 by @georgesittas)*:
due to 89fc63c - QUALIFY comes after WINDOW clause in queries (PR #3745 by @georgesittas):
QUALIFY comes after WINDOW clause in queries (#3745)
due to a2a6efb - Canonicalize struct & array inline constructor (PR #3751 by @VaggelisD):
Canonicalize struct & array inline constructor (#3751)
e9c4bbb - Support for ORDER BY ALL (PR #3756 by @VaggelisD)
4a843e6 - postgres: Support FROM ROWS FROM (...) (PR #3753 by @VaggelisD)321051a - presto, trino: Add support for exp.TimestampAdd (PR #3765 by @VaggelisD)
82a1bb4 - Support for RPAD & LPAD functions (PR #3757 by @VaggelisD)89fc63c - duckdb, clickhouse: QUALIFY comes after WINDOW clause in queries (PR #3745 by @georgesittas)
15ca924 - optimizer: Fix expansion of SELECT * REPLACE, RENAME (PR #3742 by @VaggelisD)0363fef - attach comments to Commands (PR #3758 by @georgesittas)a2a6efb - bigquery: Canonicalize struct & array inline constructor (PR #3751 by @VaggelisD)5df3f52 - Remove number matching from COLON placeholder parser (PR #3761 by @VaggelisD)
0606af6 - duckdb: Transpile UDFs from Databricks (PR #3768 by @VaggelisD)
dcc783a - clickhouse: Allow TokenType.SELECT as a Tuple field identifier (PR #3766 by @VaggelisD)
b42b7ac - extract from time/date (commit by @tobymao)`2bdde22` - optimizer: only qualify coalesced USING columns if they exist in table schemas *(PR #3740 by @georgesittas)*
2bdde22 - optimizer: only qualify coalesced USING columns if they exist in table schemas (PR #3740 by @georgesittas)due to `8335ba1` - preserve EXTRACT(date_part FROM datetime) calls *(PR #3729 by @georgesittas)*:
due to 8335ba1 - preserve EXTRACT(date_part FROM datetime) calls (PR #3729 by @georgesittas):
preserve EXTRACT(date_part FROM datetime) calls (#3729)
due to fb066a6 - Decouple NVL() from COALESCE() (PR #3734 by @VaggelisD):
Decouple NVL() from COALESCE() (#3734)
0c03299 - teradata: random lower upper closes #3721 (commit by @tobymao)37b6e2d - snowflake: add support for VECTOR(type, size) (PR #3724 by @georgesittas)1e07c4d - presto, trino: Configurable transpilation of Snowflake VARIANT (PR #3725 by @VaggelisD)
e5a53aa - snowflake: Support for FROM CHANGES (PR #3731 by @VaggelisD)
820d664 - presto: wrap md5 string arguments in to_utf8 (PR #3732 by @georgesittas)
912bc84 - spark, databricks: Support view schema binding options (PR #3739 by @VaggelisD)
3454f86 - teradata: use timestamp with time zone over timestamptz (PR #3723 by @mtagle)
f4a2872 - clickhouse: switch off table alias columns generation (PR #3727 by @georgesittas)
8335ba1 - clickhouse: preserve EXTRACT(date_part FROM datetime) calls (PR #3729 by @georgesittas)
fb066a6 - oracle: Decouple NVL() from COALESCE() (PR #3734 by @VaggelisD)
c790c3b - tsql: parse rhs of x::varchar(max) into a type (PR #3737 by @georgesittas)84416d2 - teradata: clean up CurrentTimestamp generation logic (commit by @georgesittas)`6bf9853` - tsql: cast shorthand closes #3760 *(PR #3720 by @tobymao)*
due to `9fb1d79` - extract unit should be a var, not a column *(PR #3712 by @tobymao)*:
due to 9fb1d79 - extract unit should be a var, not a column (PR #3712 by @tobymao):
extract unit should be a var, not a column (#3712)
due to ae1816f - simplify no longer removes neg, add to_py (PR #3714 by @tobymao):
simplify no longer removes neg, add to_py (#3714)
due to beaf9cc - coalesce left-hand side of join conditions produced by expanding USING (PR #3715 by @georgesittas):
coalesce left-hand side of join conditions produced by expanding USING (#3715)
97739fe - add Select expression parser (commit by @georgesittas)1c2279c - duckdb: Transpile exp.Length from other dialects (PR #3708 by @VaggelisD)23dac71 - snowflake: add support for CONNECT_BY_ROOT expression (PR #3717 by @georgesittas)
4f050e0 - transpile BigQuery's SAFE_CAST with FORMAT to DuckDB (PR #3718 by @georgesittas)
3a86d7e - non deterministic aggs in planner closes #3709 (commit by @tobymao)3b8568d - clickhouse: extract closes #3711 (commit by @tobymao)9fb1d79 - extract unit should be a var, not a column (PR #3712 by @tobymao)ae1816f - simplify no longer removes neg, add to_py (PR #3714 by @tobymao)beaf9cc - optimizer: coalesce left-hand side of join conditions produced by expanding USING (PR #3715 by @georgesittas)`972ce7d` - control ParseJSON generation logic with a flag *(PR #3707 by @georgesittas)*
972ce7d - control ParseJSON generation logic with a flag (PR #3707 by @georgesittas)`a1327c7` - tsql: Add support for scope qualifier operator *(PR #3703 by @VaggelisD)*
a1327c7 - tsql: Add support for scope qualifier operator (PR #3703 by @VaggelisD)
842a9f0 - parser: preserve Cast expression when it's 'safe' and has a format (PR #3705 by @georgesittas)
fc0411d - parser: explicitly check for identifiers in _parse_types (PR #3704 by @georgesittas)
e9236e3 - add EXPAND_ALIAS_REFS_ONLY_IN_GROUP_BY dialect constant (PR #3702 by @georgesittas)92c6ebb - tsql: make ScopeResolution round-trippable (PR #3706 by @georgesittas)`4ed02b0` - transpile TRY_PARSE_JSON Snowflake -> DuckDB *(PR #3696 by @georgesittas)*
4ed02b0 - transpile TRY_PARSE_JSON Snowflake -> DuckDB (PR #3696 by @georgesittas)
60fa5e3 - snowflake: add support for dynamic table DDL (commit by @georgesittas)442c61d - tokenizer: don't treat escapes in raw strings as such for some dialects (PR #3689 by @georgesittas)
f3e928e - parser: make parse_var_or_string more lenient (PR #3695 by @georgesittas)
806a7e4 - remove tokenizer cache for multi-threading (commit by @tobymao)3fba603 - don't treat /*+ as a HINT token in dialects that don't support hints (PR #3697 by @georgesittas)
e5d534c - optimizer: Force early alias expansion in BQ & CH (PR #3699 by @VaggelisD)
1cfb1ff - proper parsing of unit in spark/databricks date_diff (PR #3701 by @georgesittas)
8b16199 - bump sqlglotrs to v0.2.8 (commit by @georgesittas)due to `84d820f` - Time/Datetime/Timestamp function additions *(PR #3666 by @VaggelisD)*:
due to 84d820f - Time/Datetime/Timestamp function additions (PR #3666 by @VaggelisD):
Time/Datetime/Timestamp function additions (#3666)
due to acbc81d - Preserve JSON/VARIANT path with operators (PR #3678 by @VaggelisD):
Preserve JSON/VARIANT path with operators (#3678)
84d820f - bigquery: Time/Datetime/Timestamp function additions (PR #3666 by @VaggelisD)d46ad95 - tokenizer: add support for nested comments (PR #3670 by @georgesittas)
ac0e89c - snowflake: add SECURE post table property fixes #3677 (commit by @georgesittas)acbc81d - databricks: Preserve JSON/VARIANT path with operators (PR #3678 by @VaggelisD)
07158c7 - clickhouse: Fix roundtrips of DATE/TIMESTAMP functions (PR #3683 by @VaggelisD)
79aea2a - doris: ensure LAG/LEAD are generated with three arguments (commit by @georgesittas)08fb2ec - parser: check if FROM exists when making implicit unnest explicit fixes #3671 (commit by @georgesittas)049fc5a - bigquery: handle the case-sensitive strategy in normalize_identifier (PR #3667 by @georgesittas)9e1b6aa - parser: handle another edge case in struct field type parser (PR #3682 by @georgesittas)
a1a0278 - jsonbcontains default gen (commit by @tobymao)bf44942 - oracle: Fix default NULL_ORDERING (PR #3688 by @VaggelisD)
7ae99fe - bump sqlglotrs to 0.2.7 (commit by @georgesittas)due to `d331e56` - Normalize time units in their full singular form *(PR #3652 by @VaggelisD)*:
due to d331e56 - Normalize time units in their full singular form (PR #3652 by @VaggelisD):
Normalize time units in their full singular form (#3652)
due to 468123e - create SetOperation class (PR #3661 by @georgesittas):
create SetOperation class (#3661)
e7a158b - set misc. dialect settings if available (PR #3649 by @georgesittas)ff3dabc - tsql: index on closes #3658 (commit by @tobymao)fb4d908 - tsql: clustered index closes #3659 (commit by @tobymao)88c4965 - mysql: delete redundant keywords (PR #3646 by @Toms1999)4c82c0d - Parse UNNEST as a function in base dialect (PR #3650 by @VaggelisD)
d331e56 - redshift: Normalize time units in their full singular form (PR #3652 by @VaggelisD)
a06ee36 - parser: edge case in _parse_types (PR #3656 by @georgesittas)
a739741 - teradata warning (commit by @tobymao)868f30d - improve schema error handling (PR #3663 by @georgesittas)
e8cab58 - clean up join mark elimination rule (PR #3653 by @georgesittas)468123e - create SetOperation class (PR #3661 by @georgesittas)
due to `d6cfb41` - Support for DATE_ADD functions *(PR #3609 by @VaggelisD)*:
due to d6cfb41 - Support for DATE_ADD functions (PR #3609 by @VaggelisD):
Support for DATE_ADD functions (#3609)
d6cfb41 - spark, databricks: Support for DATE_ADD functions (PR #3609 by @VaggelisD)
4b30b87 - postgres: Support DIV() func for integer division (PR #3602 by @VaggelisD)
ee9b01d - mysql: support ADD INDEX/KEY/UNIQUE in ALTER TABLE (PR #3621 by @georgesittas)
c49cefa - mysql: support STRAIGHT_JOIN (PR #3623 by @georgesittas)
e998308 - eliminate join marks (PR #3580 by @mrhopko)227e054 - oracle: support unicode strings u'...' (PR #3641 by @georgesittas)
6df5757 - bq datetime -> timestampfromparts (PR #3642 by @tobymao)6abd2c9 - oracle: Support for WITH READ ONLY / CHECK OPTION (PR #3639 by @VaggelisD)
514b3a5 - redshift: add support for Oracle style outer join markers #3611 (PR #3612 by @sandband)
6a607d3 - unnest should also be a function (commit by @tobymao)0e1a1fb - optimizer: don't use datetrunc type for right side (PR #3614 by @barakalon)d96459f - postgres: sha256 support (commit by @tobymao)05fe847 - snowflake: support fqns in masking/projection policy constraint (PR #3620 by @georgesittas)
caa3051 - snowflake: Allow SELECT keyword as JSON path key (PR #3627 by @VaggelisD)
96efb64 - tokenizer: properly handle tags that need to be identifiers in heredocs (PR #3630 by @georgesittas)
4f8edba - oracle: Allow optional format in TO_DATE (PR #3637 by @VaggelisD)
d8c6153 - oracle: don't apply eliminate_join_markers at parse time (commit by @georgesittas)1afe6ac - don't generate neq(0) if subquery predicate in ensure_bools (commit by @georgesittas)fc050bd - sqlite: Fix transpilation of GENERATED AS IDENTITY (PR #3634 by @VaggelisD)
47472d9 - duckdb: get rid of TEXT length to facilitate transpilation (PR #3633 by @georgesittas)6194c0f - clean up logic related to join marker parsing/generation (PR #3613 by @georgesittas)5396a8e - fix SQLFrame casing (PR #3616 by @eakmanrq)0397d6f - bump sqlglotrs to v0.2.6 (commit by @georgesittas)`97f8d1a` - add materialize dialect *(PR #3577 by @bobbyiliev)*
97f8d1a - add materialize dialect (PR #3577 by @bobbyiliev)bde5a8d - add risingwave dialect (PR #3598 by @neverchanje)5140817 - risingwave: clean up initial implementation of RisingWave (commit by @georgesittas)f920014 - materialize: clean up initial implementation of Materialize (PR #3608 by @georgesittas)`472058d` - bigquery: add support for GAP_FILL function *(commit by @georgesittas)*
472058d - bigquery: add support for GAP_FILL function (commit by @georgesittas)Nothing published for this version
`f7081c4` - builder other props closes #3588 *(commit by @tobymao)*
f7081c4 - builder other props closes #3588 (commit by @tobymao)13009ca - doris: use CSV syntax for GROUP_CONCAT (PR #3592 by @Toms1999)bf7fd12 - no_ilike_sql to lower both sides (PR #3593 by @barakalon)8d87568 - stop normalization_distance early (PR #3594 by @barakalon)3e38912 - duckdb: add reserved keywords (PR #3597 by @georgesittas)5683d5f - hive: generate TRUNC for TimestampTrunc (PR #3600 by @Toms1999)ff55ec1 - hive: generate string unit for TRUNC, parse it into TimestampTrunc too (commit by @georgesittas)12b6aa7 - snowflake: Fix COPY INTO with subquery (PR #3605 by @VaggelisD)
061be9b - optimize absorb_and_eliminate and remove_complements (PR #3595 by @barakalon)7dd244b - hive: test TRUNC roundtrip (commit by @georgesittas)Nothing published for this version
`158ca97` - duckdb: transpile TIMESTAMPNTZ into TIMESTAMP *(PR #3587 by @georgesittas)*
158ca97 - duckdb: transpile TIMESTAMPNTZ into TIMESTAMP (PR #3587 by @georgesittas)`60d9085` - postgres: collate with identifier closes #3578 *(commit by @tobymao)*
due to `0788c94` - Expand stars on BigQuery's tbl.struct_col.* selections *(PR #3531 by @VaggelisD)*:
due to 0788c94 - Expand stars on BigQuery's tbl.struct_col.* selections (PR #3531 by @VaggelisD):
Expand stars on BigQuery's tbl.struct_col.* selections (#3531)
due to 3e71393 - Refactor struct star expansion in BQ (PR #3576 by @VaggelisD):
Refactor struct star expansion in BQ (#3576)
0788c94 - optimizer: Expand stars on BigQuery's tbl.struct_col.* selections (PR #3531 by @VaggelisD)
14d63ee - bubble up Identifier comments to TableAliases (PR #3571 by @georgesittas)
ba90c22 - snowflake: COPY Postfix (PR #3564 by @VaggelisD)3e71393 - optimizer: Refactor struct star expansion in BQ (PR #3576 by @VaggelisD)1e1dc3f - optimizer: minor improvements in the struct star expansion (PR #3568 by @georgesittas)b12ea8c - minor style changes related to COPY INTO (commit by @georgesittas)`fb8db9f` - parser: edge case where TYPE_CONVERTERS leads to type instead of column *(PR #3566 by @georgesittas)*
fb8db9f - parser: edge case where TYPE_CONVERTERS leads to type instead of column (PR #3566 by @georgesittas)
aac8570 - use index2 instead of self._index in _parse_type index difference (commit by @georgesittas)Your coding agent can read these notes before it upgrades. Set up the MCP server →