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 today
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 `1df7f61` - refactor length_sql so it handles any type, not just varchar/blob *(PR #4935 by @tekumara)*:
due to 1df7f61 - refactor length_sql so it handles any type, not just varchar/blob (PR #4935 by @tekumara):
refactor length_sql so it handles any type, not just varchar/blob (#4935)
due to 52719f3 - parse CREATE STAGE (PR #4947 by @tekumara):
parse CREATE STAGE (#4947)
due to fd39b30 - parse CREATE FILE FORMAT (PR #4948 by @tekumara):
parse CREATE FILE FORMAT (#4948)
due to f835756 - Fix CREATE EXTERNAL TABLE properties (PR #4951 by @VaggelisD):
Fix CREATE EXTERNAL TABLE properties (#4951)
due to 44b955b - Fix generation of exp.Values (PR #4930 by @VaggelisD):
Fix generation of exp.Values (#4930)
due to 1f506b1 - support SHOW (ALL) TABLES (PR #4961 by @mscolnick):
support SHOW (ALL) TABLES (#4961)
due to 72cf4a4 - Add support for PIVOT multiple IN clauses (PR #4964 by @VaggelisD):
Add support for PIVOT multiple IN clauses (#4964)
due to 400ea54 - ensure JSON_FORMAT type is JSON when targeting Presto (PR #4968 by @georgesittas):
ensure JSON_FORMAT type is JSON when targeting Presto (#4968)
due to cb20038 - treat GO as command (PR #4978 by @georgesittas):
treat GO as command (#4978)
due to 60e26b8 - improve transpilability of GET_JSON_OBJECT by parsing json path (PR #4980 by @georgesittas):
improve transpilability of GET_JSON_OBJECT by parsing json path (#4980)
due to 2b7845a - Add support for Athena's Iceberg partitioning transforms (PR #4976 by @VaggelisD):
Add support for Athena's Iceberg partitioning transforms (#4976)
due to ee794e9 - use the standard POWER function instead of ^ fixes #4982 (commit by @georgesittas):
use the standard POWER function instead of ^ fixes #4982
due to 2369195 - consistently parse INTERVAL value as a string (PR #4986 by @georgesittas):
consistently parse INTERVAL value as a string (#4986)
due to e866cff - support RELY option for PRIMARY KEY, FOREIGN KEY, and UNIQUE constraints (PR #4987 by @geooo109):
support RELY option for PRIMARY KEY, FOREIGN KEY, and UNIQUE constraints (#4987)
due to 510984f - stop generating redundant TO_DATE calls (PR #4990 by @georgesittas):
stop generating redundant TO_DATE calls (#4990)
due to da9ec61 - Fix pretty generation of exp.Window (PR #4994 by @VaggelisD):
Fix pretty generation of exp.Window (#4994)
due to fb83fac - remove recursion from simplify (PR #4988 by @georgesittas):
remove recursion from simplify (#4988)
due to 890b24a - remove connector_depth as it is now dead code (commit by @georgesittas):
remove connector_depth as it is now dead code
due to 1dc501b - remove max_depth argument in simplify as it is now dead code (commit by @georgesittas):
remove max_depth argument in simplify as it is now dead code
due to f5358d8 - add support for GET statements (PR #5019 by @eruditmorina):
add support for GET statements (#5019)
due to bafa7f3 - parse DOW and DOY (PR #5037 by @geooo109):
parse DOW and DOY (#5037)
due to eb0a989 - support udf environment property (PR #5045 by @geooo109):
support udf environment property (#5045)
due to 807fbbc - transpile timestamp without time zone (PR #5047 by @geooo109):
transpile timestamp without time zone (#5047)
due to c48fc8f - support translate with error (PR #5052 by @geooo109):
support translate with error (#5052)
due to 2e9704e - Change COLLATE expression to Var for ALTER TABLE (PR #5055 by @MarcusRisanger):
Change COLLATE expression to Var for ALTER TABLE (#5055)
due to 63f505e - unqualify UNNEST only the left most part of a column (PR #5069 by @geooo109):
unqualify UNNEST only the left most part of a column (#5069)
due to 56da962 - to_timestamp without format (PR #5070 by @geooo109):
to_timestamp without format (#5070)
due to 1ddfcbe - support CONVERT function (PR #5074 by @geooo109):
support CONVERT function (#5074)
due to ba52f01 - respect normalization strategy overrides (PR #5080 by @georgesittas):
respect normalization strategy overrides (#5080)
52719f3 - snowflake: parse CREATE STAGE (PR #4947 by @tekumara)fd39b30 - snowflake: parse CREATE FILE FORMAT (PR #4948 by @tekumara)da9a6a1 - snowflake: parse SHOW STAGES (PR #4949 by @tekumara)bfdcdf0 - snowflake: parse SHOW FILE FORMATS (PR #4950 by @tekumara)c591443 - duckdb: add support for GROUP clause in standard PIVOT syntax (PR #4953 by @georgesittas)b011ee2 - bigquery: Add support for side & kind on set operators (PR #4959 by @VaggelisD)
1f506b1 - duckdb: support SHOW (ALL) TABLES (PR #4961 by @mscolnick)
ad5b595 - allow explicit aliasing in if(...) expressions (PR #4963 by @georgesittas)72cf4a4 - duckdb: Add support for PIVOT multiple IN clauses (PR #4964 by @VaggelisD)
7bc5a21 - postgres: support laterals with ordinality fixes #4965 (PR #4966 by @georgesittas)400ea54 - ensure JSON_FORMAT type is JSON when targeting Presto (PR #4968 by @georgesittas)
a762993 - generator: unsupported warning for T-SQL query option (PR #4972 by @geooo109)e866cff - parser: support RELY option for PRIMARY KEY, FOREIGN KEY, and UNIQUE constraints (PR #4987 by @geooo109)
76535ce - optimizer: add support for Spark's TRANSFORM clause (PR #4993 by @georgesittas)
27a9fb2 - clickhouse: Support parsing CTAS with alias (PR #5003 by @dorranh)45cd165 - clickhouse: Support ClickHouse Nothing type (PR #5004 by @dorranh)ca61a61 - Support exp.PartitionByProperty for parse_into() (PR #5006 by @erindru)a6d4c3c - snowflake: Add numeric parameter support (PR #5008 by @hovaesco)5feae00 - databricks: add support for the VOID type (PR #5012 by @georgesittas)6010302 - postgres: transpile QUARTER interval unit (PR #5015 by @georgesittas)
f5358d8 - snowflake: add support for GET statements (PR #5019 by @eruditmorina)df5ecdb - Include token refereces in the meta of identifier expressions (PR #5022 by @izeigerman)bafa7f3 - presto: parse DOW and DOY (PR #5037 by @geooo109)
eb0a989 - support udf environment property (PR #5045 by @geooo109)
c48fc8f - teradata: support translate with error (PR #5052 by @geooo109)6791849 - executor: support conversion from table to pylist (PR #5053 by @esadek)07bf71b - parser: FK REFERENCES without specifying column (PR #5064 by @geooo109)
1ddfcbe - oracle: support CONVERT function (PR #5074 by @geooo109)
2cca655 - allow PIVOT to follow a JOIN (PR #5075 by @georgesittas)
c7a56d7 - oracle: PRIOR in SELECT (PR #5077 by @geooo109)
5c66679 - clickhouse: allow EXCHANGE to be parsed as Command (commit by @georgesittas)3bcf989 - snowflake: Transpile DataType.BIGDECIMAL to DOUBLE (PR #5092 by @VaggelisD)b63b60e - treat CHAR[ACTER] VARYING as VARCHAR for all dialects (PR #5093 by @ewhitley)aa26aad - transpile WINDOW clause (PR #5097 by @georgesittas)7042603 - optimizer: Merge subqueries when inner query has name conflict with outer query (PR #4931 by @barakalon)1df7f61 - duckdb: refactor length_sql so it handles any type, not just varchar/blob (PR #4935 by @tekumara)
09882e3 - tsql: remove assert call from _build_formatted_time (commit by @georgesittas)bf39a95 - sqlite: transpile double quoted PRIMARY KEY (PR #4941 by @geooo109)
f835756 - snowflake: Fix CREATE EXTERNAL TABLE properties (PR #4951 by @VaggelisD)
61ed971 - athena: Correctly handle CTAS queries that contain Union's (PR #4955 by @erindru)44b955b - clickhouse: Fix generation of exp.Values (PR #4930 by @VaggelisD)
61bc01c - clickhouse: allow string literal for clickhouse ON CLUSTER clause (PR #4971 by @lepfhty)1353b79 - Snowflake: Enhance parity for FILE_FORMAT & CREDENTIALS in CREATE STAGE (PR #4969 by @whummer)9693dbd - clickhouse: avoid superfluous parentheses in DISTINCT ON (...) (commit by @georgesittas)cb20038 - tsql: treat GO as command (PR #4978 by @georgesittas)60e26b8 - hive: improve transpilability of GET_JSON_OBJECT by parsing json path (PR #4980 by @georgesittas)2b7845a - Add support for Athena's Iceberg partitioning transforms (PR #4976 by @VaggelisD)fa6af23 - optimizer: compare the whole type to determine if a cast can be removed (PR #4981 by @georgesittas)
830c9b8 - unnest_subqueries: avoid adding GROUP BY on aggregate projections in lateral subqueries (PR #4970 by @skadel)ee794e9 - postgres: use the standard POWER function instead of ^ fixes #4982 (commit by @georgesittas)85e62b8 - bigquery: Do not consume JOIN keywords after WITH OFFSET (PR #4984 by @VaggelisD)2369195 - consistently parse INTERVAL value as a string (PR #4986 by @georgesittas)510984f - hive: stop generating redundant TO_DATE calls (PR #4990 by @georgesittas)da9ec61 - generator: Fix pretty generation of exp.Window (PR #4994 by @VaggelisD)
aae9aa8 - optimizer: ensure there are no shared refs after qualify_tables (PR #4995 by @georgesittas)adaef42 - trino: Dont quote identifiers in string literals for the partitioned_by property (PR #4998 by @erindru)a547f8d - postgres: Capture optional minus sign in interval regex (PR #5000 by @VaggelisD)
8e9dbd4 - duckdb: warn on unsupported IGNORE/RESPECT NULLS (PR #5002 by @georgesittas)
10b02bc - clickhouse: Support optional timezone argument in date_diff() (PR #5005 by @dorranh)c594b63 - Add MAX_BY & MIN_BY to FUNCTION_PARSER (PR #5021 by @VaggelisD)
c1c892c - parser: parse column ops after no-paren type casting (PR #5025 by @georgesittas)
52e068f - databricks: Preserve colon operators in TRY_CAST (PR #5028 by @VaggelisD)
91e5036 - parser: Do not parse set ops if input expr is None (PR #5030 by @VaggelisD)8f77b30 - snowflake: get function (commit by @tobymao)281ab21 - snowflake: generate expression DayOfWeekIso using DAYOFWEEKISO (PR #5034 by @geooo109)
2fa9684 - preserve non-participating joins in eliminate_join_marks rule fixes #5039 (commit by @georgesittas)d10fdf5 - optimizer: prevent incorrect predicate pushdown into RHS of CROSS JOIN UNNEST (PR #5033 by @geooo109)
7c55c48 - prevent redundant backslash escapes in rawstring generator (PR #5040 by @georgesittas)
167c547 - tsql: ALTER COLUMN syntax (PR #5051 by @MarcusRisanger)
807fbbc - duckdb: transpile timestamp without time zone (PR #5047 by @geooo109)
2e9704e - tsql: Change COLLATE expression to Var for ALTER TABLE (PR #5055 by @MarcusRisanger)60f9420 - druid: preserve MOD function fixes #5060 (commit by @georgesittas)7866b48 - druid: support current_timestamp (PR #5061 by @ALongJohnson)
626f3a3 - Support EXCLUDE in window definition (PR #5058 by @rafasofizada)63f505e - unqualify UNNEST only the left most part of a column (PR #5069 by @geooo109)
56da962 - oracle: to_timestamp without format (PR #5070 by @geooo109)
ba52f01 - bigquery: respect normalization strategy overrides (PR #5080 by @georgesittas)03ace87 - optimizer: keep ORDER BY when merging subqueries (PR #5084 by @geooo109)
ba7b5a8 - bigquery: respect normalization strategy patching (commit by @georgesittas)4558bb7 - bigquery: always infer concat type as either bytes or string (PR #5085 by @georgesittas)
612a2da - tokenizer: fix token col attribute when there is leading whitespace after a newline (PR #5094 by @chgiff)9d3a929 - preserve ARRAY_JOIN for StarRocks, Doris (fixes #5095) (commit by @georgesittas)fb83fac - optimizer: remove recursion from simplify (PR #4988 by @georgesittas)1b3ea34 - clickhouse: override _parse_property_assignment to handle null engine (commit by @georgesittas)890b24a - remove connector_depth as it is now dead code (commit by @georgesittas)1dc501b - remove max_depth argument in simplify as it is now dead code (commit by @georgesittas)6572517 - improve tooling around benchmarks (commit by @georgesittas)1d4d906 - use _try_parse for parsing ClickHouse's CREATE TABLE .. AS <table> (commit by @georgesittas)fc58c27 - Refactor placeholder parsing for TokenType.COLON (PR #5009 by @VaggelisD)da90228 - put a lock around the lazy dialect module loading call (PR #5011 by @georgesittas)
abbcf26 - bump sqlglotrs to 0.4.1 (commit by @georgesittas)Nothing published for this version
Nothing published for this version
`52e068f` - databricks: Preserve colon operators in TRY_CAST *(PR #5028 by @VaggelisD)*
52e068f - databricks: Preserve colon operators in TRY_CAST (PR #5028 by @VaggelisD)
91e5036 - parser: Do not parse set ops if input expr is None (PR #5030 by @VaggelisD)8f77b30 - snowflake: get function (commit by @tobymao)due to `f5358d8` - add support for GET statements *(PR #5019 by @eruditmorina)*:
due to f5358d8 - add support for GET statements (PR #5019 by @eruditmorina):
add support for GET statements (#5019)
6010302 - postgres: transpile QUARTER interval unit (PR #5015 by @georgesittas)
f5358d8 - snowflake: add support for GET statements (PR #5019 by @eruditmorina)df5ecdb - Include token refereces in the meta of identifier expressions (PR #5022 by @izeigerman)c594b63 - Add MAX_BY & MIN_BY to FUNCTION_PARSER (PR #5021 by @VaggelisD)
c1c892c - parser: parse column ops after no-paren type casting (PR #5025 by @georgesittas)
`5feae00` - databricks: add support for the VOID type *(PR #5012 by @georgesittas)*
5feae00 - databricks: add support for the VOID type (PR #5012 by @georgesittas)da90228 - put a lock around the lazy dialect module loading call (PR #5011 by @georgesittas)
`27a9fb2` - clickhouse: Support parsing CTAS with alias *(PR #5003 by @dorranh)*
27a9fb2 - clickhouse: Support parsing CTAS with alias (PR #5003 by @dorranh)45cd165 - clickhouse: Support ClickHouse Nothing type (PR #5004 by @dorranh)ca61a61 - Support exp.PartitionByProperty for parse_into() (PR #5006 by @erindru)a6d4c3c - snowflake: Add numeric parameter support (PR #5008 by @hovaesco)8e9dbd4 - duckdb: warn on unsupported IGNORE/RESPECT NULLS (PR #5002 by @georgesittas)
10b02bc - clickhouse: Support optional timezone argument in date_diff() (PR #5005 by @dorranh)1d4d906 - use _try_parse for parsing ClickHouse's CREATE TABLE .. AS <table> (commit by @georgesittas)fc58c27 - Refactor placeholder parsing for TokenType.COLON (PR #5009 by @VaggelisD)due to `510984f` - stop generating redundant TO_DATE calls *(PR #4990 by @georgesittas)*:
due to 510984f - stop generating redundant TO_DATE calls (PR #4990 by @georgesittas):
stop generating redundant TO_DATE calls (#4990)
due to da9ec61 - Fix pretty generation of exp.Window (PR #4994 by @VaggelisD):
Fix pretty generation of exp.Window (#4994)
due to fb83fac - remove recursion from simplify (PR #4988 by @georgesittas):
remove recursion from simplify (#4988)
due to 890b24a - remove connector_depth as it is now dead code (commit by @georgesittas):
remove connector_depth as it is now dead code
due to 1dc501b - remove max_depth argument in simplify as it is now dead code (commit by @georgesittas):
remove max_depth argument in simplify as it is now dead code
76535ce - optimizer: add support for Spark's TRANSFORM clause (PR #4993 by @georgesittas)
510984f - hive: stop generating redundant TO_DATE calls (PR #4990 by @georgesittas)da9ec61 - generator: Fix pretty generation of exp.Window (PR #4994 by @VaggelisD)
aae9aa8 - optimizer: ensure there are no shared refs after qualify_tables (PR #4995 by @georgesittas)adaef42 - trino: Dont quote identifiers in string literals for the partitioned_by property (PR #4998 by @erindru)a547f8d - postgres: Capture optional minus sign in interval regex (PR #5000 by @VaggelisD)
fb83fac - optimizer: remove recursion from simplify (PR #4988 by @georgesittas)890b24a - remove connector_depth as it is now dead code (commit by @georgesittas)1dc501b - remove max_depth argument in simplify as it is now dead code (commit by @georgesittas)6572517 - improve tooling around benchmarks (commit by @georgesittas)due to `2b7845a` - Add support for Athena's Iceberg partitioning transforms *(PR #4976 by @VaggelisD)*:
due to 2b7845a - Add support for Athena's Iceberg partitioning transforms (PR #4976 by @VaggelisD):
Add support for Athena's Iceberg partitioning transforms (#4976)
due to ee794e9 - use the standard POWER function instead of ^ fixes #4982 (commit by @georgesittas):
use the standard POWER function instead of ^ fixes #4982
due to 2369195 - consistently parse INTERVAL value as a string (PR #4986 by @georgesittas):
consistently parse INTERVAL value as a string (#4986)
due to e866cff - support RELY option for PRIMARY KEY, FOREIGN KEY, and UNIQUE constraints (PR #4987 by @geooo109):
support RELY option for PRIMARY KEY, FOREIGN KEY, and UNIQUE constraints (#4987)
e866cff - parser: support RELY option for PRIMARY KEY, FOREIGN KEY, and UNIQUE constraints (PR #4987 by @geooo109)
2b7845a - Add support for Athena's Iceberg partitioning transforms (PR #4976 by @VaggelisD)fa6af23 - optimizer: compare the whole type to determine if a cast can be removed (PR #4981 by @georgesittas)
830c9b8 - unnest_subqueries: avoid adding GROUP BY on aggregate projections in lateral subqueries (PR #4970 by @skadel)ee794e9 - postgres: use the standard POWER function instead of ^ fixes #4982 (commit by @georgesittas)85e62b8 - bigquery: Do not consume JOIN keywords after WITH OFFSET (PR #4984 by @VaggelisD)2369195 - consistently parse INTERVAL value as a string (PR #4986 by @georgesittas)due to `cb20038` - treat GO as command *(PR #4978 by @georgesittas)*:
due to cb20038 - treat GO as command (PR #4978 by @georgesittas):
treat GO as command (#4978)
due to 60e26b8 - improve transpilability of GET_JSON_OBJECT by parsing json path (PR #4980 by @georgesittas):
improve transpilability of GET_JSON_OBJECT by parsing json path (#4980)
cb20038 - tsql: treat GO as command (PR #4978 by @georgesittas)60e26b8 - hive: improve transpilability of GET_JSON_OBJECT by parsing json path (PR #4980 by @georgesittas)`9693dbd` - clickhouse: avoid superfluous parentheses in DISTINCT ON (...) *(commit by @georgesittas)*
9693dbd - clickhouse: avoid superfluous parentheses in DISTINCT ON (...) (commit by @georgesittas)`a762993` - generator: unsupported warning for T-SQL query option *(PR #4972 by @geooo109)*
due to `1df7f61` - refactor length_sql so it handles any type, not just varchar/blob *(PR #4935 by @tekumara)*:
due to 1df7f61 - refactor length_sql so it handles any type, not just varchar/blob (PR #4935 by @tekumara):
refactor length_sql so it handles any type, not just varchar/blob (#4935)
due to 52719f3 - parse CREATE STAGE (PR #4947 by @tekumara):
parse CREATE STAGE (#4947)
due to fd39b30 - parse CREATE FILE FORMAT (PR #4948 by @tekumara):
parse CREATE FILE FORMAT (#4948)
due to f835756 - Fix CREATE EXTERNAL TABLE properties (PR #4951 by @VaggelisD):
Fix CREATE EXTERNAL TABLE properties (#4951)
due to 44b955b - Fix generation of exp.Values (PR #4930 by @VaggelisD):
Fix generation of exp.Values (#4930)
due to 1f506b1 - support SHOW (ALL) TABLES (PR #4961 by @mscolnick):
support SHOW (ALL) TABLES (#4961)
due to 72cf4a4 - Add support for PIVOT multiple IN clauses (PR #4964 by @VaggelisD):
Add support for PIVOT multiple IN clauses (#4964)
due to 400ea54 - ensure JSON_FORMAT type is JSON when targeting Presto (PR #4968 by @georgesittas):
ensure JSON_FORMAT type is JSON when targeting Presto (#4968)
52719f3 - snowflake: parse CREATE STAGE (PR #4947 by @tekumara)fd39b30 - snowflake: parse CREATE FILE FORMAT (PR #4948 by @tekumara)da9a6a1 - snowflake: parse SHOW STAGES (PR #4949 by @tekumara)bfdcdf0 - snowflake: parse SHOW FILE FORMATS (PR #4950 by @tekumara)c591443 - duckdb: add support for GROUP clause in standard PIVOT syntax (PR #4953 by @georgesittas)b011ee2 - bigquery: Add support for side & kind on set operators (PR #4959 by @VaggelisD)
1f506b1 - duckdb: support SHOW (ALL) TABLES (PR #4961 by @mscolnick)
ad5b595 - allow explicit aliasing in if(...) expressions (PR #4963 by @georgesittas)72cf4a4 - duckdb: Add support for PIVOT multiple IN clauses (PR #4964 by @VaggelisD)
7bc5a21 - postgres: support laterals with ordinality fixes #4965 (PR #4966 by @georgesittas)400ea54 - ensure JSON_FORMAT type is JSON when targeting Presto (PR #4968 by @georgesittas)
7042603 - optimizer: Merge subqueries when inner query has name conflict with outer query (PR #4931 by @barakalon)1df7f61 - duckdb: refactor length_sql so it handles any type, not just varchar/blob (PR #4935 by @tekumara)
09882e3 - tsql: remove assert call from _build_formatted_time (commit by @georgesittas)bf39a95 - sqlite: transpile double quoted PRIMARY KEY (PR #4941 by @geooo109)
f835756 - snowflake: Fix CREATE EXTERNAL TABLE properties (PR #4951 by @VaggelisD)
61ed971 - athena: Correctly handle CTAS queries that contain Union's (PR #4955 by @erindru)44b955b - clickhouse: Fix generation of exp.Values (PR #4930 by @VaggelisD)
Nothing published for this version
Nothing published for this version
Nothing published for this version
due to `8a692b9` - support select...into #temp_table syntax *(PR #4893 by @hhubbell)*:
due to 8a692b9 - support select...into #temp_table syntax (PR #4893 by @hhubbell):
support select...into #temp_table syntax (#4893)
due to bcf311a - Preserve PARSE_JSON() (PR #4901 by @VaggelisD):
Preserve PARSE_JSON() (#4901)
due to 937b7bd - handle string interval values in DATE ADD/SUB (PR #4902 by @georgesittas):
handle string interval values in DATE ADD/SUB (#4902)
due to 96749c1 - improve LATERAL VIEW EXPLODE transpilation (PR #4905 by @georgesittas):
improve LATERAL VIEW EXPLODE transpilation (#4905)
due to 71c529a - disable lateral alias expansion for Oracle fixes #4910 (commit by @georgesittas):
disable lateral alias expansion for Oracle fixes #4910
due to f17004e - only use ARRAY[...] syntax for Schema if parent is partitioned by prop (PR #4913 by @georgesittas):
only use ARRAY[...] syntax for Schema if parent is partitioned by prop (#4913)
due to 2fbbf6a - infer timestamp function types as TIMESTAMPTZ for bigquery (PR #4914 by @georgesittas):
infer timestamp function types as TIMESTAMPTZ for bigquery (#4914)
due to c0b3448 - parse at sign as ABS function (PR #4915 by @geooo109):
parse at sign as ABS function (#4915)
due to aa9734d - improve pretty-formatting of IN (...) (PR #4920 by @georgesittas):
improve pretty-formatting of IN (...) (#4920)
1d6218e - snowflake: add support for CREATE USING TEMPLATE closes #4883 (commit by @georgesittas)fa9f9bd - tsql: allow MERGE to be used in place of a subquery (PR #4890 by @georgesittas)
0de4503 - add a check and error message for set operations in pushdown_projections (PR #4897 by @snovik75)96749c1 - presto: improve LATERAL VIEW EXPLODE transpilation (PR #4905 by @georgesittas)
c0b3448 - duckdb: parse at sign as ABS function (PR #4915 by @geooo109)
aa9734d - generator: improve pretty-formatting of IN (...) (PR #4920 by @georgesittas)
1617509 - bigquery: preserve time zone info in FORMAT_TIMESTAMP roundtrip (PR #4895 by @georgesittas)
8a692b9 - tsql: support select...into #temp_table syntax (PR #4893 by @hhubbell)bcf311a - databricks: Preserve PARSE_JSON() (PR #4901 by @VaggelisD)
3040a5e - preserve whitespace in quoted identifiers and strings (PR #4903 by @georgesittas)
937b7bd - hive: handle string interval values in DATE ADD/SUB (PR #4902 by @georgesittas)
71c529a - optimizer: disable lateral alias expansion for Oracle fixes #4910 (commit by @georgesittas)3b7c699 - snowflake: quote identifiers in stage references (PR #4906 by @whummer)f17004e - presto: only use ARRAY[...] syntax for Schema if parent is partitioned by prop (PR #4913 by @georgesittas)2fbbf6a - optimizer: infer timestamp function types as TIMESTAMPTZ for bigquery (PR #4914 by @georgesittas)ff6be71 - optimizer: avoid merging window function nested under a projection (PR #4919 by @georgesittas)
d386f37 - sqlite: move generator methods within SQLite class (commit by @georgesittas)`d7b3b3e` - optimizer: handle TableFromRows properly in annotate_types *(PR #4889 by @georgesittas)*
d7b3b3e - optimizer: handle TableFromRows properly in annotate_types (PR #4889 by @georgesittas)
due to `ac3d311` - do not expand having expressions if they conflict with a projection *(PR #4881 by @tobymao)*:
due to ac3d311 - do not expand having expressions if they conflict with a projection (PR #4881 by @tobymao):
do not expand having expressions if they conflict with a projection (#4881)
due to 081994e - Fix parsing multi-part format name (PR #4885 by @VaggelisD):
Fix parsing multi-part format name (#4885)
due to 491c407 - parse parameter key as Var instead of Identifier (PR #4888 by @georgesittas):
parse parameter key as Var instead of Identifier (#4888)
ac3d311 - do not expand having expressions if they conflict with a projection (PR #4881 by @tobymao)44b7b09 - parser: Fix separator generation for STRING_AGG (PR #4887 by @VaggelisD)081994e - snowflake: Fix parsing multi-part format name (PR #4885 by @VaggelisD)
38111a5 - apply unpivot alias string conversion only for UNPIVOT (PR #4886 by @georgesittas)
491c407 - clickhouse: parse parameter key as Var instead of Identifier (PR #4888 by @georgesittas)
`2b3824f` - duckdb: revert timestamp/datetime -> timestampntz parsing temporarily *(PR #4878 by @georgesittas)*
2b3824f - duckdb: revert timestamp/datetime -> timestampntz parsing temporarily (PR #4878 by @georgesittas)due to `c0bfcc6` - postgres case insesitive formats closes #4860 *(commit by @tobymao)*:
due to c0bfcc6 - postgres case insesitive formats closes #4860 (commit by @tobymao):
postgres case insesitive formats closes #4860
due to 6914684 - duckdb defaults timestampntz closes #4859 (commit by @tobymao):
duckdb defaults timestampntz closes #4859
due to ceb1f02 - support TO_CHAR to duckdb STRFTIME (PR #4866 by @geooo109):
support TO_CHAR to duckdb STRFTIME (#4866)
due to d748e53 - Introduce pyproject.toml and switch to packaging via build (PR #4865 by @erindru):
Introduce pyproject.toml and switch to packaging via build (#4865)
due to 038da09 - treat TABLE(...) as a UDTF (PR #4875 by @georgesittas):
treat TABLE(...) as a UDTF (#4875)
due to 92e479e - support STRUCT() and MAP() (PR #4876 by @geooo109):
support STRUCT() and MAP() (#4876)
due to 87c94fe - turn off multi-arg coalesce simplification (PR #4877 by @georgesittas):
turn off multi-arg coalesce simplification (#4877)
54be278 - snowflake: add support for HEX_DECODE_BINARY (PR #4855 by @sk-)
47959a9 - duckdb: add support for prefix aliases (PR #4869 by @georgesittas)e942391 - spark zone offset closes #4858 (commit by @tobymao)c0bfcc6 - postgres case insesitive formats closes #4860 (commit by @tobymao)6914684 - duckdb defaults timestampntz closes #4859 (commit by @tobymao)ceb1f02 - snowflake: support TO_CHAR to duckdb STRFTIME (PR #4866 by @geooo109)
80466f1 - expand util - align normalization behaviour with lazy and non-lazy source providers. (PR #4874 by @omerhadari)038da09 - snowflake: treat TABLE(...) as a UDTF (PR #4875 by @georgesittas)
92e479e - hive: support STRUCT() and MAP() (PR #4876 by @geooo109)
87c94fe - redshift: turn off multi-arg coalesce simplification (PR #4877 by @georgesittas)due to `6a3973b` - Refactor exp.GroupConcat generation *(PR #4823 by @VaggelisD)*:
due to 6a3973b - Refactor exp.GroupConcat generation (PR #4823 by @VaggelisD):
Refactor exp.GroupConcat generation (#4823)
due to 813d2ad - use _parse_table_parts for udf parsing (PR #4829 by @geooo109):
use _parse_table_parts for udf parsing (#4829)
due to 7cdbad6 - add initial support for PUT statements (PR #4818 by @whummer):
add initial support for PUT statements (#4818)
due to 8c0a6be - BLOB transpilation (PR #4844 by @geooo109):
BLOB transpilation (#4844)
7e8975e - oracle: add FORCE property (PR #4828 by @geooo109)
7cdbad6 - snowflake: add initial support for PUT statements (PR #4818 by @whummer)
f4d1a1f - hive: add support for STORED BY syntax for storage handlers (PR #4832 by @tsamaras)b7a0df1 - parser: Support trailing commas after from (PR #4854 by @omerhadari)6a3973b - duckdb, snowflake: Refactor exp.GroupConcat generation (PR #4823 by @VaggelisD)
08eb7f2 - snowflake: clean up PUT implementation (PR #4830 by @georgesittas)adf2fef - mysql: Support for USING BTREE/HASH in PK (PR #4837 by @VaggelisD)
8c0a6be - mysql: BLOB transpilation (PR #4844 by @geooo109)
0cb7a71 - postgres: Fix arrow extraction for string keys representing numbers (PR #4842 by @VaggelisD)
2e223cb - parser: properly parse qualified columns when parsing "columns ops" (PR #4847 by @georgesittas)
e4fd354 - Simplify Hive's STORED BY property (PR #4838 by @VaggelisD)8115b58 - (duckdb): treat auto-increment DDL property as unsupported (PR #4849 by @georgesittas)
b05dddb - fix pdoc deployment (PR #4856 by @georgesittas)
due to `596b66f` - add support for and/2 and or/2 functions *(PR #4806 by @georgesittas)*:
due to 596b66f - add support for and/2 and or/2 functions (PR #4806 by @georgesittas):
add support for and/2 and or/2 functions (#4806)
due to eae860c - expand DISTINCT ON expressions like we do for GROUP/ORDER by (PR #4807 by @georgesittas):
expand DISTINCT ON expressions like we do for GROUP/ORDER by (#4807)
due to 83e6a87 - Parse SHA256 (PR #4816 by @VaggelisD):
Parse SHA256 (#4816)
50539ce - trino: add support for ON ... ERROR/NULL syntax for JSON_QUERY (PR #4805 by @georgesittas)
596b66f - clickhouse: add support for and/2 and or/2 functions (PR #4806 by @georgesittas)
c5bf122 - mysql: support setting visibility on ALTER COLUMN. (PR #4809 by @burnison)6441d00 - orphan node(s) in eliminate_join_marks (PR #4808 by @snovik75)eae860c - optimizer: expand DISTINCT ON expressions like we do for GROUP/ORDER by (PR #4807 by @georgesittas)
5ef35f2 - clickhouse: unparseable AggregateFunction(count) (PR #4812 by @pkit)83e6a87 - duckdb: Parse SHA256 (PR #4816 by @VaggelisD)
faf6d41 - allow duplicate nodes in matchings (PR #4817 by @tobymao)e34f3bc - optimizer: refactor DISTINCT ON qualification to better match ORDER BY (PR #4811 by @georgesittas)due to `466c839` - Remove extra MAP bracket and ARRAY wrap *(PR #4712 by @VaggelisD)*:
due to 466c839 - Remove extra MAP bracket and ARRAY wrap (PR #4712 by @VaggelisD):
Remove extra MAP bracket and ARRAY wrap (#4712)
due to 79ab311 - add generate_series table column alias (PR #4741 by @georgesittas):
add generate_series table column alias (#4741)
due to 66b3ea9 - respect type nullability when casting in strtodate_sql (PR #4744 by @sleshJdev):
respect type nullability when casting in strtodate_sql (#4744)
due to 91f47fe - Support for exp.HexString in DuckDB/Presto/Trino (PR #4743 by @VaggelisD):
Support for exp.HexString in DuckDB/Presto/Trino (#4743)
due to 0596176 - generate CASE expression instead of COUNT_IF for <v1.2 (PR #4755 by @georgesittas):
generate CASE expression instead of COUNT_IF for <v1.2 (#4755)
due to 01008a9 - enable transpilation of CURDATE fixes #4758 (commit by @georgesittas):
enable transpilation of CURDATE fixes #4758
due to dc69192 - column qualify not applying in an order by inside within group when it also the alias (PR #4780 by @ran-lakeway):
column qualify not applying in an order by inside within group when it also the alias (#4780)
due to ae00c92 - properly alias generate series (PR #4789 by @georgesittas):
properly alias generate series (#4789)
due to 14c3de9 - parse unqualified names in DISTINCT ON (...) as identifiers (PR #4795 by @georgesittas):
parse unqualified names in DISTINCT ON (...) as identifiers (#4795)
due to 00c7f05 - do not coerce parameterized types (PR #4796 by @georgesittas):
do not coerce parameterized types (#4796)
due to 513fad4 - show databases, functions, procedures and warehouses (PR #4787 by @tekumara):
show databases, functions, procedures and warehouses (#4787)
due to a9ae2d2 - support TOP with PERCENT and WITH TIES (PR #4801 by @geooo109):
support TOP with PERCENT and WITH TIES (#4801)
due to e05983a - make hex literal tokenization more robust (PR #4802 by @georgesittas):
make hex literal tokenization more robust (#4802)
due to e9c8eae - bump sqlglotrs to 0.4.0 (commit by @georgesittas):
bump sqlglotrs to 0.4.0
5c59943 - mysql: add unsigned double type (PR #4734 by @GabrielVSMachado)31b2139 - duckdb: transpile JSONB into JSON (PR #4753 by @georgesittas)0596176 - duckdb: generate CASE expression instead of COUNT_IF for <v1.2 (PR #4755 by @georgesittas)2b3ec0f - snowflake: add support for USE SECONDARY ROLES (PR #4761 by @georgesittas)
2079bdb - postgres: Add support for WITH RECURSIVE search options (PR #4773 by @VaggelisD)
70eefc6 - duckdb: add support for underscored numbers fixes #4777 (commit by @georgesittas)f6be1d4 - clickhouse: add support for dynamic json casting (PR #4784 by @georgesittas)
513fad4 - snowflake: show databases, functions, procedures and warehouses (PR #4787 by @tekumara)575c979 - clickhouse: support GLOBAL NOT IN (PR #4798 by @hdhoang)856faa9 - mysql: add support for ALTER INDEX (PR #4800 by @burnison)7cad7f0 - Add additional allowed tokens for parsing aggregate functions in DDL (PR #4727 by @dorranh)
466c839 - duckdb: Remove extra MAP bracket and ARRAY wrap (PR #4712 by @VaggelisD)
2c7dbe2 - duckdb: Fix INTERVAL roundtrip of DATE_ADD (PR #4732 by @VaggelisD)
cbad48d - infinite traversal in eliminate_qualify closes #4735 (commit by @tobymao)79ab311 - clickhouse: add generate_series table column alias (PR #4741 by @georgesittas)
f0ce5ce - snowflake: unqualify ANY ORDER BY columns (PR #4737 by @georgesittas)66b3ea9 - clickhouse: respect type nullability when casting in strtodate_sql (PR #4744 by @sleshJdev)fda40a9 - clickhouse: add BOTH if trim type is unspecified fixes #4746 (commit by @georgesittas)91f47fe - Support for exp.HexString in DuckDB/Presto/Trino (PR #4743 by @VaggelisD)
f94656d - clickhouse: Generation of exp.ArrayConcat (PR #4754 by @VaggelisD)
cf33711 - tokenizer-rs: use is_whitespace in token scan loop (PR #4756 by @georgesittas)
01008a9 - mysql: enable transpilation of CURDATE fixes #4758 (commit by @georgesittas)1fbd108 - sqlite: correct json key value pair separator (PR #4774 by @geooo109)
ccdb92a - optimizer: do not qualify ctes that are pivoted (PR #4775 by @georgesittas)ec4e97c - parser: Do not preemptively create chunks for comment only statements (PR #4772 by @VaggelisD)
fc8aec3 - parser: Revert #4772 (PR #4783 by @VaggelisD)dc69192 - optimizer: column qualify not applying in an order by inside within group when it also the alias (PR #4780 by @ran-lakeway)ae00c92 - postgres: properly alias generate series (PR #4789 by @georgesittas)14c3de9 - optimizer: parse unqualified names in DISTINCT ON (...) as identifiers (PR #4795 by @georgesittas)
00c7f05 - optimizer: do not coerce parameterized types (PR #4796 by @georgesittas)
9f6b4f7 - snowflake: add missing clauses in SHOW statements (PR #4797 by @georgesittas)a9ae2d2 - tsql: support TOP with PERCENT and WITH TIES (PR #4801 by @geooo109)
e05983a - tokenizer-rs: make hex literal tokenization more robust (PR #4802 by @georgesittas)6c4c69e - move t-sql generators to base, clean up set_sql (commit by @georgesittas)4bf897d - remove redundant "parts" arg from CH ast, move gen methods to base (PR #4779 by @georgesittas)e9c8eae - bump sqlglotrs to 0.4.0 (commit by @georgesittas)due to `a790e41` - avoid redundant casts in FROM/TO_UTC_TIMESTAMP *(PR #4725 by @georgesittas)*:
due to a790e41 - avoid redundant casts in FROM/TO_UTC_TIMESTAMP (PR #4725 by @georgesittas):
avoid redundant casts in FROM/TO_UTC_TIMESTAMP (#4725)
a790e41 - spark: avoid redundant casts in FROM/TO_UTC_TIMESTAMP (PR #4725 by @georgesittas)due to `da52181` - TO_DATE parsing with safe flag true *(PR #4713 by @geooo109)*:
due to da52181 - TO_DATE parsing with safe flag true (PR #4713 by @geooo109):
TO_DATE parsing with safe flag true (#4713)
due to b12aba9 - Improve UUID support (PR #4718 by @amachanic):
Improve UUID support (#4718)
due to 27ec74b - Properly set 'this' when parsing IDENTITY (PR #4719 by @amachanic):
Properly set 'this' when parsing IDENTITY (#4719)
c31947b - postgres: Support generation of exp.CountIf (PR #4709 by @VaggelisD)b842d93 - postgres: enable qualification of queries using the ROWS FROM syntax (PR #4699 by @georgesittas)
5f90307 - duckdb: enable support for user-defined types (PR #4702 by @georgesittas)23283ca - avoid concealing dialect module exception in _try_load (PR #4708 by @georgesittas)707d45e - tsql: support default values on definitons and the OUTPUT/OUT/READ_ONLY syntax (PR #4704 by @geooo109)da52181 - hive: TO_DATE parsing with safe flag true (PR #4713 by @geooo109)
b12aba9 - tsql, postgres: Improve UUID support (PR #4718 by @amachanic)27ec74b - tsql: Properly set 'this' when parsing IDENTITY (PR #4719 by @amachanic)f7e22d4 - don't change query if no join marks in eliminate_join_marks, fixes #4721 (commit by @georgesittas)b918ff1 - bigquery: type-annotated array literal logic edge case (PR #4724 by @georgesittas)`dd1cdb0` - redshift: generate proper syntax for column type alteration *(PR #4698 by @georgesittas)*
dd1cdb0 - redshift: generate proper syntax for column type alteration (PR #4698 by @georgesittas)due to `48145a3` - CurrentSchema for SQLite, MySQL, Postgres, and TSQL *(PR #4658 by @pruzko)*:
due to 48145a3 - CurrentSchema for SQLite, MySQL, Postgres, and TSQL (PR #4658 by @pruzko):
CurrentSchema for SQLite, MySQL, Postgres, and TSQL (#4658)
due to 1a91913 - Parse empty bracketed ARRAY with cast (PR #4679 by @VaggelisD):
Parse empty bracketed ARRAY with cast (#4679)
due to f6482fb - transpile postgres DATE_BIN function to duckdb TIME_BUCKET (PR #4681 by @dor-bernstein):
transpile postgres DATE_BIN function to duckdb TIME_BUCKET (#4681)
due to ade8b82 - load dialects lazily (PR #4687 by @georgesittas):
load dialects lazily (#4687)
48145a3 - CurrentSchema for SQLite, MySQL, Postgres, and TSQL (PR #4658 by @pruzko)
f6482fb - transpile postgres DATE_BIN function to duckdb TIME_BUCKET (PR #4681 by @dor-bernstein)b2a6041 - oracle: add support for CAST(... DEFAULT <value> ON CONVERSION FAILURE) (PR #4683 by @georgesittas)
1ad656e - enable parsing of (u)int128,256 types for all dialects (PR #4685 by @georgesittas)6f5fb04 - implement Dune dialect (PR #4686 by @georgesittas)9ea15c7 - bigquery: add EXPORT DATA statement support (PR #4688 by @ArnoldHueteG)cd53f7e - clickhouse: Generate bracket notation for exp.VarMap (PR #4664 by @VaggelisD)
0920f77 - use utf-8 encoding in open calls, fixes #4676 (commit by @georgesittas)e71c4c0 - trino: Add more JSON_QUERY options (PR #4673 by @VaggelisD)
1a91913 - postgres: Parse empty bracketed ARRAY with cast (PR #4679 by @VaggelisD)
c45f174 - bigquery: Inline type-annotated ARRAY literals (PR #4671 by @VaggelisD)
df75edd - duckdb: support postgres JSON/JSONB_OBJECT_AGG to duckdb JSON_GROUP_OBJECT (PR #4677 by @geooo109)
69680c1 - tsql: Transpile exp.Fetch limits (PR #4680 by @VaggelisD)
b3b0962 - hive: Simplify DATE_FORMAT roundtrip (PR #4689 by @VaggelisD)ade8b82 - load dialects lazily (PR #4687 by @georgesittas)47c0236 - bigquery: Refactor EXPORT DATA statement (PR #4693 by @VaggelisD)1904b76 - tsql: remove BEGIN from identifiers (PR #4695 by @geooo109)a688b6c - snowflake: support correct AUTO INCREMENT transpilation (PR #4696 by @geooo109)
`b091f2f` - trino: Correctly render exp.LocationProperty in CREATE TABLE / CREATE SCHEMA *(PR #4659 by @erindru)*
b091f2f - trino: Correctly render exp.LocationProperty in CREATE TABLE / CREATE SCHEMA (PR #4659 by @erindru)c4de945 - Trino: Prevent first_value and last_value from being converted (PR #4661 by @MikeWallis42)
`5f54f16` - bump sqlglotrs to 0.3.14 *(commit by @georgesittas)*
5f54f16 - bump sqlglotrs to 0.3.14 (commit by @georgesittas)`14ad1a0` - bump sqlglotrs to 0.3.13 *(commit by @georgesittas)*
14ad1a0 - bump sqlglotrs to 0.3.13 (commit by @georgesittas)`085fef6` - bump sqlglotrs to 0.3.12 *(commit by @georgesittas)*
085fef6 - bump sqlglotrs to 0.3.12 (commit by @georgesittas)`acb7217` - bump sqlglotrs to 0.3.11 *(commit by @georgesittas)*
acb7217 - bump sqlglotrs to 0.3.11 (commit by @georgesittas)`bb7548d` - bump sqlglotrs to 0.3.10 *(commit by @georgesittas)*
bb7548d - bump sqlglotrs to 0.3.10 (commit by @georgesittas)`3a188ef` - fix sqlglotrs deployment job *(PR #4657 by @georgesittas)*
3a188ef - fix sqlglotrs deployment job (PR #4657 by @georgesittas)7e55533 - bump sqlglotrs to 0.3.9 (commit by @georgesittas)`28f56cb` - fix sqlglotrs deployment job *(PR #4656 by @georgesittas)*
28f56cb - fix sqlglotrs deployment job (PR #4656 by @georgesittas)846b141 - bump sqlglotrs to 0.3.8 (commit by @georgesittas)`ff9ea0c` - change upload-artifact to v4 *(commit by @georgesittas)*
ff9ea0c - change upload-artifact to v4 (commit by @georgesittas)61c4784 - bump sqlglotrs to 0.3.7 (commit by @georgesittas)due to `8b465d4` - expand single VALUES clause in CTE into a SELECT * *(PR #4617 by @georgesittas)*:
due to 8b465d4 - expand single VALUES clause in CTE into a SELECT * (PR #4617 by @georgesittas):
expand single VALUES clause in CTE into a SELECT * (#4617)
due to 59d886d - treat LEVEL column in CONNECT BY queries as an identifier (PR #4627 by @georgesittas):
treat LEVEL column in CONNECT BY queries as an identifier (#4627)
due to 9db09ff - support more compact SAFE_DIVIDE transpilation #4634 (PR #4641 by @geooo109):
support more compact SAFE_DIVIDE transpilation #4634 (#4641)
due to 94af80b - Do not remove parens on bracketed expressions (PR #4645 by @VaggelisD):
Do not remove parens on bracketed expressions (#4645)
due to 35923e9 - POSITION and all their variants for all dialects (PR #4606 by @pruzko):
POSITION and all their variants for all dialects (#4606)
e47a7c9 - Fix Oracle Integer Type Mapping (PR #4616 by @pruzko)d8ade83 - clickhouse: Dynamic data type (PR #4624 by @pkit)f7628ad - optimizer: Fix qualify for SEMI/ANTI joins (PR #4622 by @VaggelisD)
a20b663 - improve rs tokenizer performance (PR #4638 by @benfdking)ffa0df7 - parser: Support Oracle/Postgres XMLNAMESPACES in XMLTABLE (PR #4643 by @rbreejen)
35923e9 - POSITION and all their variants for all dialects (PR #4606 by @pruzko)14474ee - tsql: support TSQL PRIMARY KEY constraint with DESC, ASC (PR #4618 by @geooo109)
8b465d4 - parser: expand single VALUES clause in CTE into a SELECT * (PR #4617 by @georgesittas)
647d986 - snowflake: get rid of incorrect time mappings (PR #4629 by @georgesittas)9cbd5ef - trino: generate ArrayUniqueAgg as ARRAY_AGG(DISTINCT ...) (commit by @georgesittas)59d886d - optimizer: treat LEVEL column in CONNECT BY queries as an identifier (PR #4627 by @georgesittas)
6107661 - snowflake: Allow parsing of TO_TIME (PR #4631 by @VaggelisD)
9fdfd4d - trino: support QUOTES option for JSON_QUERY #4623 (PR #4628 by @geooo109)
43eb0d9 - tsql: create schema ast access fixup fixes #4632 (commit by @georgesittas)59f6525 - duckdb: Transpile exp.RegexpILike (PR #4640 by @VaggelisD)
9db09ff - bigquery: support more compact SAFE_DIVIDE transpilation #4634 (PR #4641 by @geooo109)
94af80b - optimizer: Do not remove parens on bracketed expressions (PR #4645 by @VaggelisD)
761e835 - qualify using (PR #4646 by @tobymao)8b0b8ac - sqlite: allow 2-arg version of UNHEX closes #4648 (commit by @georgesittas)2f12bd9 - athena: Generate PartitionedByProperty correctly on CTAS for an Iceberg table (PR #4654 by @erindru)1ea0dc2 - postgres: Support WITHIN GROUP ( order_by_clause ) FILTER for Postgres (PR #4652 by @gl3nnleblanc)
284a936 - simplify WITHIN GROUP ... FILTER support (commit by @georgesittas)73512f9 - set default properly for use_rs_tokenizer (PR #4619 by @georgesittas)9ba1db3 - add bench command (PR #4621 by @benfdking)0aa1516 - move to string new (PR #4637 by @benfdking)2355a91 - clean up unnecessary mut (PR #4636 by @benfdking)0b68af5 - bump sqlglotrs to 0.3.6 (commit by @georgesittas)`b447322` - parser accepts ctes without as keyword again, except for clickhouse *(PR #4612 by @georgesittas)*
b447322 - parser accepts ctes without as keyword again, except for clickhouse (PR #4612 by @georgesittas)due to `f3fcc10` - allow limit, offset to be used as both modifiers and aliases *(PR #4589 by @georgesittas)*:
due to f3fcc10 - allow limit, offset to be used as both modifiers and aliases (PR #4589 by @georgesittas):
allow limit, offset to be used as both modifiers and aliases (#4589)
due to b7ab3f1 - exp.Merge condition for Trino/Postgres (PR #4596 by @MikeWallis42):
exp.Merge condition for Trino/Postgres (#4596)
due to e617d40 - extend ANALYZE common syntax to cover multiple dialects (PR #4591 by @zashroof):
extend ANALYZE common syntax to cover multiple dialects (#4591)
c75016a - parse analyze compute statistics (PR #4547 by @zashroof)986a1da - Druid dialect (PR #4579 by @betodealmeida)bc9975f - move to rustc fx hashmap (PR #4588 by @benfdking)853cbe6 - cleaner IS_ASCII for TSQL (PR #4592 by @pruzko)3ebd879 - LOGICAL_AND and LOGICAL_OR for Oracle (PR #4593 by @pruzko)e617d40 - extend ANALYZE common syntax to cover multiple dialects (PR #4591 by @zashroof)766d698 - postgres: Revert exp.StrPos generation (PR #4586 by @VaggelisD)f3fcc10 - parser: allow limit, offset to be used as both modifiers and aliases (PR #4589 by @georgesittas)
2bea466 - optimizer: unions on nested subqueries (PR #4603 by @barakalon)199508a - snowflake: treat $ as part of the json path key identifier (PR #4604 by @georgesittas)b7ab3f1 - exp.Merge condition for Trino/Postgres (PR #4596 by @MikeWallis42)
c0f7309 - simplify trie_filter closure in Tokenizer initialization (PR #4599 by @gvozdvmozgu)fb93219 - replace std::mem::replace with std::mem::take and Vec::drain (PR #4600 by @gvozdvmozgu)672d656 - clean up ANALYZE implementation (PR #4607 by @georgesittas)e58a8cb - apply clippy fixes (PR #4608 by @benfdking)5502c94 - bump sqlglotrs to 0.3.5 (commit by @georgesittas)`d250846` - snowflake: generate LIMIT when OFFSET exists #4575 *(PR #4581 by @geooo109)*
ffbb935 - install python 3.7 when building windows wheel for sqlglotrs (PR #4585 by @georgesittas)1ea05c0 - bump sqlglotrs to 0.3.4 (commit by @georgesittas)`e33af0b` - try setup-python@v5 in the publish job *(PR #4582 by @georgesittas)*
e33af0b - try setup-python@v5 in the publish job (PR #4582 by @georgesittas)3259f84 - bump sqlglotrs to 0.3.3 (commit by @georgesittas)`e51d1cf` - release sqlglotrs for Python 3.13 on windows *(PR #4580 by @VaggelisD)*
e51d1cf - release sqlglotrs for Python 3.13 on windows (PR #4580 by @VaggelisD)975ffa0 - bump sqlglotrs to 0.3.2 (commit by @georgesittas)due to `07d05da` - normalize before qualifying tables *(PR #4539 by @tobymao)*:
due to 07d05da - normalize before qualifying tables (PR #4539 by @tobymao):
normalize before qualifying tables (#4539)
due to cead7c3 - require AS token in CTEs for all dialects except spark, databricks (PR #4546 by @georgesittas):
require AS token in CTEs for all dialects except spark, databricks (#4546)
due to 231d032 - support Unicode in sqlite, mysql, tsql, postgres, oracle (PR #4554 by @pruzko):
support Unicode in sqlite, mysql, tsql, postgres, oracle (#4554)
due to 83595b6 - parse ASCII into Unicode to facilitate transpilation (commit by @georgesittas):
parse ASCII into Unicode to facilitate transpilation
due to e141960 - improve transpilation of CHAR[ACTER]_LENGTH (PR #4555 by @pruzko):
improve transpilation of CHAR[ACTER]_LENGTH (#4555)
7a517d7 - Introduce meta comment to parse known functions as exp.Anonymous (PR #4532 by @VaggelisD)
6992c18 - tokenizer: Allow underscore separated number literals (PR #4536 by @VaggelisD)
7fe9f7f - tsql: add support for DATETRUNC #4531 (PR #4537 by @geooo109)
931eef6 - duckdb: Support simplified UNPIVOT statement (PR #4545 by @VaggelisD)
923a1f7 - treat NAMESPACE as a db creatable (PR #4556 by @TanviPardeshi)b0cc7d0 - add support for IS_ASCII (PR #4557 by @pruzko)231d032 - support Unicode in sqlite, mysql, tsql, postgres, oracle (PR #4554 by @pruzko)83595b6 - hive: parse ASCII into Unicode to facilitate transpilation (commit by @georgesittas)095fb1e - generate POSITION instead of STRPOS for Postgres (PR #4577 by @pruzko)9def0b7 - add support for Chr in tsql and sqlite (PR #4566 by @pruzko)d32d26a - postgres: add support for XMLTABLE (commit by @georgesittas)e141960 - improve transpilation of CHAR[ACTER]_LENGTH (PR #4555 by @pruzko)07d05da - normalize before qualifying tables (PR #4539 by @tobymao)
1ed3235 - allow When in exp.merge fixes #4543 (commit by @georgesittas)cead7c3 - parser: require AS token in CTEs for all dialects except spark, databricks (PR #4546 by @georgesittas)
006b384 - postgres: add support for WHERE clause in INSERT DML (PR #4550 by @georgesittas)
795e7e0 - Pin ubuntu to 22.04 for Python 3.7 (PR #4571 by @VaggelisD)2495508 - tsql: generate correct DateFromParts naming (PR #4563 by @geooo109)
2aff4ae - duckdb: support parentheses with FROM-First syntax (PR #4569 by @geooo109)
51ac9a7 - rust-tokenizer: increase integer width when converting hex literals (PR #4573 by @georgesittas)
94ffdb7 - addressing mismatch in STR_POSITION argument order in executor. (PR #4574 by @cecilycarver)139b699 - tsql: transpile snowflake TIMESTAMP_NTZ to DATETIME2 (PR #4576 by @geooo109)ceb42fa - parse & generate Length properly in clickhouse (commit by @georgesittas)9921528 - introduce benchmarking for rust (PR #4552 by @benfdking)0ffe8f9 - temporarily disable sqlglotrs benchmarking (PR #4578 by @georgesittas)7a0dbcf - bump sqlglotrs to 0.3.1 (commit by @georgesittas)`5d3ee4c` - snowflake: transpile date subtraction *(PR #4506 by @georgesittas)*
5d3ee4c - snowflake: transpile date subtraction (PR #4506 by @georgesittas)
efeb4bd - postgres: add support for XMLELEMENT (PR #4513 by @georgesittas)
e495777 - clickhouse: add support for bracket map syntax (PR #4528 by @georgesittas)
cc44ed7 - mysql: Support SERIAL data type (PR #4533 by @VaggelisD)
ee7dc96 - starrocks: add partition by range and unique key (PR #4509 by @pickfire)84ec478 - lineage: Extend lineage function to work with pivot operation (PR #4471 by @step4)52c8374 - include comments in gen (PR #4535 by @georgesittas)8f8e84a - snowflake: bitxor third parameter(padside) issue (PR #4501 by @ankur334)4760246 - snowflake: generate only one INPUT => clause in unnest_sql (PR #4505 by @georgesittas)
7649d50 - optimizer: only expand stars for select scopes (PR #4515 by @georgesittas)
2b68b9b - snowflake: Allow alias expansion inside JOIN statements (PR #4504 by @florian-ernst-alan)
e15cd0b - postgres: generate float if the type has precision (PR #4516 by @georgesittas)
98906d4 - another interval parsing edge case (PR #4519 by @georgesittas)
992f6e9 - tsql: Convert exp.Neg literal to number through to_py() (PR #4523 by @VaggelisD)
946cd42 - optimizer: qualify snowflake queries with level pseudocolumn (PR #4524 by @georgesittas)
bc68289 - planner: ensure aggregate variable is bound (PR #4526 by @georgesittas)
cd6e00f - clean up pivot lineage (PR #4534 by @georgesittas)due to `1d3c9aa` - Transpile support for bitor/bit_or snowflake function *(PR #4486 by @ankur334)*:
due to 1d3c9aa - Transpile support for bitor/bit_or snowflake function (PR #4486 by @ankur334):
Transpile support for bitor/bit_or snowflake function (#4486)
due to ab10851 - Preserve roundtrips of DATETIME/DATETIME2 (PR #4491 by @VaggelisD):
Preserve roundtrips of DATETIME/DATETIME2 (#4491)
1d3c9aa - snowflake: Transpile support for bitor/bit_or snowflake function (PR #4486 by @ankur334)822aea0 - snowflake: Support for inline FOREIGN KEY (PR #4493 by @VaggelisD)
ab10851 - tsql: Preserve roundtrips of DATETIME/DATETIME2 (PR #4491 by @VaggelisD)43975e4 - duckdb: Allow escape strings similar to Postgres (PR #4497 by @VaggelisD)
due to `f70f124` - transpile MySQL FORMAT to DuckDB *(PR #4488 by @georgesittas)*:
due to f70f124 - transpile MySQL FORMAT to DuckDB (PR #4488 by @georgesittas):
transpile MySQL FORMAT to DuckDB (#4488)
f70f124 - transpile MySQL FORMAT to DuckDB (PR #4488 by @georgesittas)
5a276f3 - add parse into tuple (commit by @tobymao)ddf7483 - enable python 3.13 in CI (PR #4483 by @simon-pactum)due to `41c6d24` - Alias expanded USING STRUCT fields *(PR #4474 by @VaggelisD)*:
due to 41c6d24 - Alias expanded USING STRUCT fields (PR #4474 by @VaggelisD):
Alias expanded USING STRUCT fields (#4474)
41c6d24 - optimizer: Alias expanded USING STRUCT fields (PR #4474 by @VaggelisD)
a34bcde - bigquery: properly consume dashed table parts (PR #4477 by @georgesittas)
438ae4c - bigquery: Do not generate NULL ordering on Windows (PR #4480 by @VaggelisD)
due to `07fa69d` - Make TIMESTAMP map to Type.TIMESTAMPTZ *(PR #4451 by @VaggelisD)*:
due to 07fa69d - Make TIMESTAMP map to Type.TIMESTAMPTZ (PR #4451 by @VaggelisD):
Make TIMESTAMP map to Type.TIMESTAMPTZ (#4451)
due to 63d8f41 - treat NEXT as a func keyword, parse NEXT VALUE FOR in tsql, oracle (PR #4467 by @georgesittas):
treat NEXT as a func keyword, parse NEXT VALUE FOR in tsql, oracle (#4467)
3945acc - allow tables to be preserved in replace_table (PR #4468 by @georgesittas)a9dca8d - postgres: Support generated columns (PR #4472 by @VaggelisD)
380dad2 - bigquery: Rename CONTAINS_SUBSTRING to CONTAINS_SUBSTR (PR #4457 by @VaggelisD)
ca5023d - presto: Remove parentheses from CURRENT_USER (PR #4459 by @MikeWallis42)
07fa69d - spark: Make TIMESTAMP map to Type.TIMESTAMPTZ (PR #4451 by @VaggelisD)
63d8f41 - parser: treat NEXT as a func keyword, parse NEXT VALUE FOR in tsql, oracle (PR #4467 by @georgesittas)
`954d8fd` - parse DEFAULT in VALUES clause into a Var *(PR #4448 by @georgesittas)*
954d8fd - parse DEFAULT in VALUES clause into a Var (PR #4448 by @georgesittas)
73afd0f - bigquery: Make JSONPathTokenizer more lenient for new standards (PR #4447 by @VaggelisD)
due to `0eed45c` - Add support for ATTACH/DETACH statements *(PR #4419 by @VaggelisD)*:
due to 0eed45c - Add support for ATTACH/DETACH statements (PR #4419 by @VaggelisD):
Add support for ATTACH/DETACH statements (#4419)
due to da48b68 - Tokenize hints as comments (PR #4426 by @VaggelisD):
Tokenize hints as comments (#4426)
due to fe35394 - fix datetime coercion in the canonicalize rule (PR #4431 by @georgesittas):
fix datetime coercion in the canonicalize rule (#4431)
due to fddcd3d - bump sqlglotrs to 0.3.0 (commit by @georgesittas):
bump sqlglotrs to 0.3.0
0eed45c - duckdb: Add support for ATTACH/DETACH statements (PR #4419 by @VaggelisD)2db757d - bigquery: Support FEATURES_AT_TIME (PR #4430 by @VaggelisD)
fc591ae - risingwave: add support for SINK, SOURCE & other DDL properties (PR #4387 by @lin0303-siyuan)a2bde2e - mysql: improve transpilability of CHAR[ACTER]_LENGTH (commit by @georgesittas)0acc248 - snowflake: Support CREATE ... WITH TAG (PR #4434 by @asikowitz)
37863ff - snowflake: Transpile non-UNNEST exp.GenerateDateArray refs (PR #4433 by @VaggelisD)83ee97b - parser: Do not parse window function arg as exp.Column (PR #4415 by @VaggelisD)
b22e0c8 - parser: Extend DESCRIBE parser for MySQL FORMAT & statements (PR #4417 by @VaggelisD)
d1d2ae7 - duckdb: Allow count arg on exp.ArgMax & exp.ArgMin (PR #4413 by @aersam)
e3c45d5 - presto reset session closes #4421 (commit by @tobymao)fd81f1b - more presto commands (commit by @tobymao)da48b68 - Tokenize hints as comments (PR #4426 by @VaggelisD)
69d4a8c - tsql: Map weekday to %w (PR #4438 by @VaggelisD)
41d6a13 - add return type (PR #4440 by @etonlels)fe35394 - optimizer: fix datetime coercion in the canonicalize rule (PR #4431 by @georgesittas)
6aea9f3 - Refactor NORMALIZE_FUNCTIONS flag usage (PR #4437 by @VaggelisD)f32a435 - risingwave: clean up SINK/SOURCE logic (PR #4432 by @georgesittas)b24aced - snowflake: clean up [WITH] TAG property / constraint (PR #4439 by @georgesittas)fddcd3d - bump sqlglotrs to 0.3.0 (commit by @georgesittas)`59b8b6d` - preserve column quoting in DISTINCT ON elimination *(commit by @georgesittas)*
59b8b6d - preserve column quoting in DISTINCT ON elimination (commit by @georgesittas)`835e717` - clickhouse: transform function support *(PR #4408 by @GaliFFun)*
0479743 - snowflake: cast to TimeToStr arg to TIMESTAMP more conservatively (commit by @georgesittas)`d851269` - use existing aliases in DISTINCT ON elimination, if any *(commit by @georgesittas)*
d851269 - use existing aliases in DISTINCT ON elimination, if any (commit by @georgesittas)`b00d857` - add support for specifying column in row_number function *(PR #4406 by @GaliFFun)*
due to `f4abfd5` - Support FORMAT_TIMESTAMP *(PR #4383 by @VaggelisD)*:
due to f4abfd5 - Support FORMAT_TIMESTAMP (PR #4383 by @VaggelisD):
Support FORMAT_TIMESTAMP (#4383)
due to 45eef60 - use select star when eliminating distinct on (PR #4401 by @agrigoroi-palantir):
use select star when eliminating distinct on (#4401)
72ffdcb - bigquery: Add parsing support for STRPOS(...) (PR #4378 by @VaggelisD)e7b67e0 - bigquery: Support MAKE_INTERVAL (PR #4384 by @VaggelisD)37c4809 - bigquery: Support INT64(...) (PR #4391 by @VaggelisD)9694999 - Add support for CONTAINS(...) (PR #4399 by @VaggelisD)f4abfd5 - bigquery: Support FORMAT_TIMESTAMP (PR #4383 by @VaggelisD)bb46ee3 - parser: Parse exp.Column for DROP COLUMN (PR #4390 by @VaggelisD)
79f6783 - snowflake: Wrap DIV0 operands if they're binary expressions (PR #4393 by @VaggelisD)
647b98d - starrocks: Add RESERVED_KEYWORDS specific to starrocks (PR #4402 by @notexistence)45eef60 - use select star when eliminating distinct on (PR #4401 by @agrigoroi-palantir)a3af2af - attach stamement comments consistently (PR #4377 by @georgesittas)
858c5b1 - improve contribution guide (PR #4379 by @georgesittas)160e688 - fix relative benchmark import, comment out sqltree (PR #4403 by @georgesittas)8d78add - bump PYO3 to v"0.22.6" (PR #4400 by @MartinSahlen)f78e755 - bump sqlglotrs to v0.2.14 (commit by @georgesittas)due to `60625ea` - Fix STRUCT cast generation *(PR #4366 by @VaggelisD)*:
due to 60625ea - Fix STRUCT cast generation (PR #4366 by @VaggelisD):
Fix STRUCT cast generation (#4366)
87ab8fe - spark, bigquery: Add support for UNIX_SECONDS(...) (PR #4350 by @VaggelisD)42da638 - bigquery: Support JSON_VALUE_ARRAY(...) (PR #4356 by @VaggelisD)e337a42 - bigquery: Parse REGEXP_SUBSTR as exp.RegexpExtract (PR #4358 by @VaggelisD)602dbf8 - Support REGEXP_EXTRACT_ALL (PR #4359 by @VaggelisD)27a44a2 - improve Levenshtein expression transpilation (PR #4360 by @krzysztof-kwitt)79c675a - bigquery: Support JSON_QUERY_ARRAY & JSON_EXTRACT_ARRAY (PR #4361 by @VaggelisD)57722db - optionally wrap connectors when using builders (PR #4369 by @georgesittas)
eb8e2fe - bubble up comments in qualified column refs fixes #4353 (commit by @georgesittas)efcbfdb - clickhouse: Generate exp.Median as lowercase (PR #4355 by @VaggelisD)
60625ea - duckdb: Fix STRUCT cast generation (PR #4366 by @VaggelisD)
a665030 - safe removal while iterating expression list for multiple UNNEST expressions (PR #4364 by @gauravsagar483)a71cee4 - Transpilation of exp.ArraySize from Postgres (read) (PR #4370 by @VaggelisD)
702fe31 - Remove flaky timing test (PR #4371 by @VaggelisD)4d3904e - spark: Support DB's TIMESTAMP_DIFF (PR #4373 by @VaggelisD)
060ecfc - don't generate comments in table_name (PR #4375 by @georgesittas)e19fb62 - improve error handling for unnest_to_explode (PR #4339 by @gauravsagar483)due to `e92904e` - Transpile ANY to EXISTS *(PR #4305 by @VaggelisD)*:
due to e92904e - Transpile ANY to EXISTS (PR #4305 by @VaggelisD):
Transpile ANY to EXISTS (#4305)
due to 23e620f - Support MEDIAN() function (PR #4317 by @VaggelisD):
Support MEDIAN() function (#4317)
due to a093ae7 - always wrap value in NOT value IS ... (PR #4331 by @georgesittas):
always wrap value in NOT value IS ... (#4331)
due to 84f78aa - parse information schema views into a single identifier (PR #4336 by @georgesittas):
parse information schema views into a single identifier (#4336)
efd9b4e - postgres: Support JSONB_EXISTS (PR #4302 by @VaggelisD)
e92904e - spark: Transpile ANY to EXISTS (PR #4305 by @VaggelisD)
2af4936 - snowflake: Transpile BQ's TIMESTAMP() function (PR #4309 by @VaggelisD)50a1c91 - snowflake: Transpile exp.TimestampAdd (PR #4320 by @VaggelisD)01671ce - teradata: add support for hexadecimal literals (PR #4323 by @thomascjohnson)23e620f - Support MEDIAN() function (PR #4317 by @VaggelisD)
9faef8d - snowflake: Transpile exp.TimestampSub (PR #4329 by @VaggelisD)2d98cac - BigQuery: Support JSON_VALUE() (PR #4332 by @VaggelisD)f8fec0a - snowflake: Transpile exp.DatetimeDiff (PR #4334 by @VaggelisD)16fd1ea - BigQuery: Support JSON_QUERY (PR #4333 by @VaggelisD)c09b6a2 - duckdb: support flags for RegexpExtract (PR #4326 by @NickCrews)536973c - trino: add support for the ON OVERFLOW clause in LISTAGG (PR #4340 by @georgesittas)4584935 - snowflake: Transpile exp.StrToDate (PR #4348 by @VaggelisD)71f4a47 - snowflake: Transpile exp.DatetimeAdd (PR #4349 by @VaggelisD)551afff - handle a Move edge case in the semantic differ (PR #4295 by @georgesittas)a66e721 - generator: Add NULL FILTER on ARRAY_AGG only for columns (PR #4301 by @VaggelisD)
b4ea602 - clickhouse: improve parsing of WITH FILL ... INTERPOLATE (PR #4311 by @georgesittas)
749886b - tsql: Generate LOG(...) for exp.Ln (PR #4318 by @VaggelisD)
5c1b1f4 - parser: optionally parse a Stream expression (PR #4325 by @georgesittas)
bb49a00 - oracle: Do not normalize time units for exp.DateTrunc (PR #4328 by @VaggelisD)
a093ae7 - clickhouse: always wrap value in NOT value IS ... (PR #4331 by @georgesittas)
def4f1e - Refactor exp.RegexpExtract (follow up 4326) (PR #4341 by @VaggelisD)c1456d0 - presto/trino current_time closes #4344 (commit by @tobymao)8e16abe - duckdb: we ALWAYS need to render group if params is present for RegexpExtract (PR #4343 by @NickCrews)1689dc7 - bigquery: Parse timezone for DATE_TRUNC (PR #4347 by @VaggelisD)
84f78aa - bigquery: parse information schema views into a single identifier (PR #4336 by @georgesittas)due to `1691388` - Fix chained exp.SetOperation type annotation *(PR #4274 by @VaggelisD)*:
due to 1691388 - Fix chained exp.SetOperation type annotation (PR #4274 by @VaggelisD):
Fix chained exp.SetOperation type annotation (#4274)
due to c3c1997 - Add support for STRING function (PR #4284 by @VaggelisD):
Add support for STRING function (#4284)
379f487 - bigquery: transpile EDIT_DISTANCE, closes #4283 (commit by @georgesittas)c3c1997 - bigquery: Add support for STRING function (PR #4284 by @VaggelisD)1a26bff - snowflake: Transpile exp.SafeDivide (PR #4294 by @VaggelisD)ac66d2f - clickhouse: properly parse CREATE FUNCTION DDLs (PR #4282 by @georgesittas)
1691388 - optimizer: Fix chained exp.SetOperation type annotation (PR #4274 by @VaggelisD)
559e7bc - clickhouse: Wrap subquery if it's LHS of IS NOT NULL (PR #4287 by @VaggelisD)
47bc09a - sqlite: Fix UNIQUE parsing (PR #4293 by @VaggelisD)
ee266ef - improve support for identifier delimiter escaping (PR #4288 by @georgesittas)c6ff7f1 - bump sqlglotrs to v0.2.13 (commit by @georgesittas)due to `4d86499` - include the target node for Move edits *(PR #4277 by @georgesittas)*:
due to 4d86499 - include the target node for Move edits (PR #4277 by @georgesittas):
include the target node for Move edits (#4277)
due to 9771965 - Add support for TIMESTAMP_NTZ_FROM_PARTS (PR #4280 by @VaggelisD):
Add support for TIMESTAMP_NTZ_FROM_PARTS (#4280)
due to 768adb3 - time string literals containing fractional seconds (PR #4269 by @treysp):
time string literals containing fractional seconds (#4269)
9771965 - snowflake: Add support for TIMESTAMP_NTZ_FROM_PARTS (PR #4280 by @VaggelisD)9e11654 - clickhouse: add geometry types (PR #4278 by @jwhitaker-gridcog)c25a9ab - tsql: Keep CTE's attached to the query when emulating IF NOT EXISTS (PR #4279 by @erindru)768adb3 - clickhouse: time string literals containing fractional seconds (PR #4269 by @treysp)4d86499 - diff: include the target node for Move edits (PR #4277 by @georgesittas)Your coding agent can read these notes before it upgrades. Set up the MCP server →