sqlglot 28.0.0__tar.gz → 28.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlglot-28.0.0 → sqlglot-28.2.0}/CHANGELOG.md +546 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/PKG-INFO +2 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/_version.py +3 -3
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/bigquery.py +85 -8
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/clickhouse.py +8 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/databricks.py +11 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/dialect.py +221 -20
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/duckdb.py +474 -13
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/exasol.py +187 -19
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/hive.py +4 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/mysql.py +6 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/oracle.py +20 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/postgres.py +18 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/presto.py +9 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/redshift.py +13 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/risingwave.py +3 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/singlestore.py +11 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/snowflake.py +57 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/spark.py +2 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/spark2.py +8 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/trino.py +6 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/tsql.py +40 -10
- sqlglot-28.2.0/sqlglot/errors.py +162 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/expressions.py +295 -28
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/generator.py +68 -19
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/annotate_types.py +129 -118
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/optimizer.py +4 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/qualify.py +8 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/qualify_columns.py +58 -321
- sqlglot-28.2.0/sqlglot/optimizer/qualify_tables.py +214 -0
- sqlglot-28.2.0/sqlglot/optimizer/resolver.py +370 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/scope.py +23 -12
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/simplify.py +131 -100
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/parser.py +126 -45
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/schema.py +15 -4
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/tokens.py +20 -6
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/transforms.py +3 -4
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/__init__.py +10 -9
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/bigquery.py +57 -27
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/snowflake.py +205 -26
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/spark2.py +0 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot.egg-info/PKG-INFO +2 -2
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot.egg-info/SOURCES.txt +2 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot.egg-info/requires.txt +1 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/Cargo.lock +1 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/Cargo.toml +1 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/src/tokenizer.rs +2 -10
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_bigquery.py +290 -36
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_clickhouse.py +8 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_databricks.py +23 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_dialect.py +502 -4
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_duckdb.py +69 -7
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_exasol.py +143 -21
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_hive.py +8 -4
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_mysql.py +11 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_oracle.py +4 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_postgres.py +4 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_presto.py +9 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_redshift.py +15 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_singlestore.py +4 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_snowflake.py +305 -5
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_spark.py +3 -1
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_starrocks.py +2 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_trino.py +1 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_tsql.py +48 -44
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/identity.sql +8 -6
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/annotate_functions.sql +953 -17
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/annotate_types.sql +32 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/optimizer.sql +64 -64
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/pushdown_projections.sql +17 -17
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/qualify_columns.sql +49 -40
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +4 -4
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/qualify_columns_ddl.sql +3 -3
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/qualify_tables.sql +80 -14
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +11 -11
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_diff.py +5 -0
- sqlglot-28.2.0/tests/test_errors.py +143 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_expressions.py +8 -4
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_lineage.py +6 -6
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_optimizer.py +183 -7
- sqlglot-28.0.0/sqlglot/errors.py +0 -93
- sqlglot-28.0.0/sqlglot/optimizer/qualify_tables.py +0 -169
- {sqlglot-28.0.0 → sqlglot-28.2.0}/.gitignore +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/.gitpod.yml +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/.pre-commit-config.yaml +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/CONTRIBUTING.md +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/LICENSE +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/MANIFEST.in +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/Makefile +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/README.md +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/pyproject.toml +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/setup.cfg +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/setup.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/__init__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/__main__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/_typing.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/__init__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/athena.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/doris.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/dremio.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/drill.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/druid.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/dune.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/fabric.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/materialize.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/prql.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/solr.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/sqlite.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/starrocks.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/tableau.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/dialects/teradata.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/diff.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/executor/__init__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/executor/context.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/executor/env.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/executor/python.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/executor/table.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/helper.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/jsonpath.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/lineage.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/__init__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/canonicalize.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/eliminate_ctes.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/eliminate_joins.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/isolate_table_selects.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/merge_subqueries.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/normalize.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/normalize_identifiers.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/optimize_joins.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/pushdown_predicates.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/pushdown_projections.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/optimizer/unnest_subqueries.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/planner.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/py.typed +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/serde.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/time.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/trie.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/hive.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/presto.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot/typing/tsql.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot.egg-info/dependency_links.txt +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot.egg-info/top_level.txt +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglot.png +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/benches/dialect_settings.json +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/benches/long.rs +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/benches/token_type_settings.json +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/benches/tokenizer_settings.json +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/pyproject.toml +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/src/lib.rs +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/src/settings.rs +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/src/token.rs +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/sqlglotrs/src/trie.rs +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/__init__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/__init__.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_athena.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_doris.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_dremio.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_drill.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_druid.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_dune.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_fabric.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_materialize.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_pipe_syntax.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_prql.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_risingwave.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_solr.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_sqlite.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_tableau.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/dialects/test_teradata.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/jsonpath/LICENSE +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/jsonpath/cts.json +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/canonicalize.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/normalize.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/simplify.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/partial.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/fixtures/pretty.sql +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/gen_fixtures.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/helpers.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_build.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_dialect_imports.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_docs.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_executor.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_generator.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_helper.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_jsonpath.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_parser.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_schema.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_serde.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_time.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_tokens.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_transforms.py +0 -0
- {sqlglot-28.0.0 → sqlglot-28.2.0}/tests/test_transpile.py +0 -0
|
@@ -1,6 +1,550 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## [v28.1.0] - 2025-12-02
|
|
5
|
+
### :boom: BREAKING CHANGES
|
|
6
|
+
- due to [`e4d1a4f`](https://github.com/tobymao/sqlglot/commit/e4d1a4fcd6741d679c5444bf023077d2aaa8f980) - map date/timestamp `TRUNC` to `DATE_TRUNC` *(PR [#6328](https://github.com/tobymao/sqlglot/pull/6328) by [@nnamdi16](https://github.com/nnamdi16))*:
|
|
7
|
+
|
|
8
|
+
map date/timestamp `TRUNC` to `DATE_TRUNC` (#6328)
|
|
9
|
+
|
|
10
|
+
- due to [`e1b6558`](https://github.com/tobymao/sqlglot/commit/e1b6558cb1a860bbd695f25b66e52064b57c0a84) - handle all datepart alternatives *(PR [#6324](https://github.com/tobymao/sqlglot/pull/6324) by [@lBilali](https://github.com/lBilali))*:
|
|
11
|
+
|
|
12
|
+
handle all datepart alternatives (#6324)
|
|
13
|
+
|
|
14
|
+
- due to [`06daa47`](https://github.com/tobymao/sqlglot/commit/06daa47dedebac672548e1db230b89f5c9eae84e) - update annotated type of ARRAY_AGG to untyped array *(PR [#6347](https://github.com/tobymao/sqlglot/pull/6347) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
15
|
+
|
|
16
|
+
update annotated type of ARRAY_AGG to untyped array (#6347)
|
|
17
|
+
|
|
18
|
+
- due to [`7484c06`](https://github.com/tobymao/sqlglot/commit/7484c06be4534cd22dee14da542d5e29ff2c13a2) - Support rounding mode argument for ROUND function *(PR [#6350](https://github.com/tobymao/sqlglot/pull/6350) by [@vchan](https://github.com/vchan))*:
|
|
19
|
+
|
|
20
|
+
Support rounding mode argument for ROUND function (#6350)
|
|
21
|
+
|
|
22
|
+
- due to [`c495a40`](https://github.com/tobymao/sqlglot/commit/c495a40ee4c1a69b14892e8455ae1bd2ceb5ea4f) - annotate type for MINHASH *(PR [#6355](https://github.com/tobymao/sqlglot/pull/6355) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
23
|
+
|
|
24
|
+
annotate type for MINHASH (#6355)
|
|
25
|
+
|
|
26
|
+
- due to [`b1f9a97`](https://github.com/tobymao/sqlglot/commit/b1f9a976be3c0bcd895bef5bcdb95a013eeb28b7) - annotate type for APPROXIMATE_SIMILARITY *(PR [#6360](https://github.com/tobymao/sqlglot/pull/6360) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
27
|
+
|
|
28
|
+
annotate type for APPROXIMATE_SIMILARITY (#6360)
|
|
29
|
+
|
|
30
|
+
- due to [`3aafca7`](https://github.com/tobymao/sqlglot/commit/3aafca74546b932cea93ed830c021f347ae03ded) - annotate type for MINHASH_COMBINE *(PR [#6362](https://github.com/tobymao/sqlglot/pull/6362) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
31
|
+
|
|
32
|
+
annotate type for MINHASH_COMBINE (#6362)
|
|
33
|
+
|
|
34
|
+
- due to [`df13a65`](https://github.com/tobymao/sqlglot/commit/df13a655646bd2ef5d8b4613670bb5fe48845b73) - unnest deep stuff *(PR [#6366](https://github.com/tobymao/sqlglot/pull/6366) by [@tobymao](https://github.com/tobymao))*:
|
|
35
|
+
|
|
36
|
+
unnest deep stuff (#6366)
|
|
37
|
+
|
|
38
|
+
- due to [`d4c2256`](https://github.com/tobymao/sqlglot/commit/d4c2256fb493ed2f16c29694ae5c31517123d419) - at time zone precedence *(PR [#6383](https://github.com/tobymao/sqlglot/pull/6383) by [@geooo109](https://github.com/geooo109))*:
|
|
39
|
+
|
|
40
|
+
at time zone precedence (#6383)
|
|
41
|
+
|
|
42
|
+
- due to [`4fb4d08`](https://github.com/tobymao/sqlglot/commit/4fb4d08ef8896bda434d4f89c21c669c6146fd02) - properly support table alias in the `INSERT` DML *(PR [#6374](https://github.com/tobymao/sqlglot/pull/6374) by [@snovik75](https://github.com/snovik75))*:
|
|
43
|
+
|
|
44
|
+
properly support table alias in the `INSERT` DML (#6374)
|
|
45
|
+
|
|
46
|
+
- due to [`bf07abd`](https://github.com/tobymao/sqlglot/commit/bf07abd4ee9eb0f5510cb7d1f232bdcaea88941e) - annotation support for APPROX_TOP_K_COMBINE *(PR [#6378](https://github.com/tobymao/sqlglot/pull/6378) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
47
|
+
|
|
48
|
+
annotation support for APPROX_TOP_K_COMBINE (#6378)
|
|
49
|
+
|
|
50
|
+
- due to [`50348ac`](https://github.com/tobymao/sqlglot/commit/50348ac31f784aa97bd09d5d6c6613fbd68402ee) - support order by clause for mysql delete statement *(PR [#6381](https://github.com/tobymao/sqlglot/pull/6381) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
|
|
51
|
+
|
|
52
|
+
support order by clause for mysql delete statement (#6381)
|
|
53
|
+
|
|
54
|
+
- due to [`21d3859`](https://github.com/tobymao/sqlglot/commit/21d38590fec6cb55a1a03aeb2621bd9fca677496) - Disable STRING_AGG sep canonicalization *(PR [#6395](https://github.com/tobymao/sqlglot/pull/6395) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
55
|
+
|
|
56
|
+
Disable STRING_AGG sep canonicalization (#6395)
|
|
57
|
+
|
|
58
|
+
- due to [`95727f6`](https://github.com/tobymao/sqlglot/commit/95727f60d601796b34c850dee9366d79f6e4a24b) - canonicalize table aliases *(PR [#6369](https://github.com/tobymao/sqlglot/pull/6369) by [@georgesittas](https://github.com/georgesittas))*:
|
|
59
|
+
|
|
60
|
+
canonicalize table aliases (#6369)
|
|
61
|
+
|
|
62
|
+
- due to [`c7cb098`](https://github.com/tobymao/sqlglot/commit/c7cb0983a0fa463c43d2c4ee925816e9a1628c79) - Fix underscore separator with scientific notation *(PR [#6401](https://github.com/tobymao/sqlglot/pull/6401) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
63
|
+
|
|
64
|
+
Fix underscore separator with scientific notation (#6401)
|
|
65
|
+
|
|
66
|
+
- due to [`bb4eda1`](https://github.com/tobymao/sqlglot/commit/bb4eda1beb68b92de9ab014a63c67797a07df2fa) - support transpiling SHA1 from BigQuery to DuckDB *(PR [#6404](https://github.com/tobymao/sqlglot/pull/6404) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
67
|
+
|
|
68
|
+
support transpiling SHA1 from BigQuery to DuckDB (#6404)
|
|
69
|
+
|
|
70
|
+
- due to [`d038ad7`](https://github.com/tobymao/sqlglot/commit/d038ad7f036a140f3eae4bdde15824437d4e44ee) - support named primary keys for mysql *(PR [#6389](https://github.com/tobymao/sqlglot/pull/6389) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
|
|
71
|
+
|
|
72
|
+
support named primary keys for mysql (#6389)
|
|
73
|
+
|
|
74
|
+
- due to [`05e83b5`](https://github.com/tobymao/sqlglot/commit/05e83b56f1bf9323cfa819a7f1beb542524c1219) - support transpilation of LEAST from BigQuery to DuckDB *(PR [#6415](https://github.com/tobymao/sqlglot/pull/6415) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
75
|
+
|
|
76
|
+
support transpilation of LEAST from BigQuery to DuckDB (#6415)
|
|
77
|
+
|
|
78
|
+
- due to [`4f3bb0d`](https://github.com/tobymao/sqlglot/commit/4f3bb0d6714bf89ff72e13e1398d8f01cefafb00) - Correct transpilation of BigQuery's JSON_EXTRACT_SCALAR… *(PR [#6414](https://github.com/tobymao/sqlglot/pull/6414) by [@vchan](https://github.com/vchan))*:
|
|
79
|
+
|
|
80
|
+
Correct transpilation of BigQuery's JSON_EXTRACT_SCALAR… (#6414)
|
|
81
|
+
|
|
82
|
+
- due to [`8c314a8`](https://github.com/tobymao/sqlglot/commit/8c314a8b457a5c3ed470ac8fcff022fec881c248) - support cte pivot for duckdb *(PR [#6413](https://github.com/tobymao/sqlglot/pull/6413) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
|
|
83
|
+
|
|
84
|
+
support cte pivot for duckdb (#6413)
|
|
85
|
+
|
|
86
|
+
- due to [`c6b0a63`](https://github.com/tobymao/sqlglot/commit/c6b0a6342a21d79635a26d40001c916d05d47cf7) - change version to be a tuple so that it can be pickled, also simpler *(commit by [@tobymao](https://github.com/tobymao))*:
|
|
87
|
+
|
|
88
|
+
change version to be a tuple so that it can be pickled, also simpler
|
|
89
|
+
|
|
90
|
+
- due to [`07d9958`](https://github.com/tobymao/sqlglot/commit/07d99583b4aebdc682bb7604ccdf45bddb89f9c3) - replace direct comparison with dialect properties *(PR [#6398](https://github.com/tobymao/sqlglot/pull/6398) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
91
|
+
|
|
92
|
+
replace direct comparison with dialect properties (#6398)
|
|
93
|
+
|
|
94
|
+
- due to [`38472ce`](https://github.com/tobymao/sqlglot/commit/38472ce14bce731ba4c309d515223ae99e2575ac) - transpile bigquery's %x format literal *(PR [#6375](https://github.com/tobymao/sqlglot/pull/6375) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
95
|
+
|
|
96
|
+
transpile bigquery's %x format literal (#6375)
|
|
97
|
+
|
|
98
|
+
- due to [`92ee124`](https://github.com/tobymao/sqlglot/commit/92ee1241ea3088d4e63c094404252339c54ad0c1) - postgres qualify GENERATE_SERIES and table projection *(PR [#6373](https://github.com/tobymao/sqlglot/pull/6373) by [@geooo109](https://github.com/geooo109))*:
|
|
99
|
+
|
|
100
|
+
postgres qualify GENERATE_SERIES and table projection (#6373)
|
|
101
|
+
|
|
102
|
+
- due to [`0b9d8ac`](https://github.com/tobymao/sqlglot/commit/0b9d8acbe75457424436e8c0acc047ab66e9fdc0) - Annotate type for snowflake MAX function *(PR [#6422](https://github.com/tobymao/sqlglot/pull/6422) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
103
|
+
|
|
104
|
+
Annotate type for snowflake MAX function (#6422)
|
|
105
|
+
|
|
106
|
+
- due to [`68e9414`](https://github.com/tobymao/sqlglot/commit/68e9414725a60b2842d870fa222d8466057a94f6) - Annotate type for snowflake MIN function *(PR [#6427](https://github.com/tobymao/sqlglot/pull/6427) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
107
|
+
|
|
108
|
+
Annotate type for snowflake MIN function (#6427)
|
|
109
|
+
|
|
110
|
+
- due to [`1318de7`](https://github.com/tobymao/sqlglot/commit/1318de77a8aa514ec7eb9f9b8c03228e3f8eb008) - Annotate type for snowflake NORMAL *(PR [#6434](https://github.com/tobymao/sqlglot/pull/6434) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
111
|
+
|
|
112
|
+
Annotate type for snowflake NORMAL (#6434)
|
|
113
|
+
|
|
114
|
+
- due to [`ffbb5c7`](https://github.com/tobymao/sqlglot/commit/ffbb5c7e40aa064ffcd4827e96ea66cfd045118e) - annotate type for HASH_AGG in Snowflake *(PR [#6438](https://github.com/tobymao/sqlglot/pull/6438) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
115
|
+
|
|
116
|
+
annotate type for HASH_AGG in Snowflake (#6438)
|
|
117
|
+
|
|
118
|
+
- due to [`161255f`](https://github.com/tobymao/sqlglot/commit/161255f6c90b9c3ed2074e734f6d074db1d7a6dd) - Add support for `LOCALTIME` function *(PR [#6443](https://github.com/tobymao/sqlglot/pull/6443) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
119
|
+
|
|
120
|
+
Add support for `LOCALTIME` function (#6443)
|
|
121
|
+
|
|
122
|
+
- due to [`ca329f0`](https://github.com/tobymao/sqlglot/commit/ca329f037a230c315437d830638b514190764c5a) - support transpilation of SHA256 from bigquery to duckdb *(PR [#6421](https://github.com/tobymao/sqlglot/pull/6421) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
123
|
+
|
|
124
|
+
support transpilation of SHA256 from bigquery to duckdb (#6421)
|
|
125
|
+
|
|
126
|
+
- due to [`e18ae24`](https://github.com/tobymao/sqlglot/commit/e18ae248423dbbca78a24a60ea0193da2ee7f68c) - Annotate type for snowflake REGR_SLOPE function *(PR [#6425](https://github.com/tobymao/sqlglot/pull/6425) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
127
|
+
|
|
128
|
+
Annotate type for snowflake REGR_SLOPE function (#6425)
|
|
129
|
+
|
|
130
|
+
- due to [`1d847f0`](https://github.com/tobymao/sqlglot/commit/1d847f0a1f88fce5df340ab646a72c8abbc12a86) - parse & annotate `CHECK_JSON`, `CHECK_XML` *(PR [#6439](https://github.com/tobymao/sqlglot/pull/6439) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
131
|
+
|
|
132
|
+
parse & annotate `CHECK_JSON`, `CHECK_XML` (#6439)
|
|
133
|
+
|
|
134
|
+
- due to [`cb3080d`](https://github.com/tobymao/sqlglot/commit/cb3080d4bed18b1bfbbd08380ed60deeefd15530) - annotation support for APPROX_TOP_K_ESTIMATE . Return type ARRAY *(PR [#6445](https://github.com/tobymao/sqlglot/pull/6445) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
135
|
+
|
|
136
|
+
annotation support for APPROX_TOP_K_ESTIMATE . Return type ARRAY (#6445)
|
|
137
|
+
|
|
138
|
+
- due to [`313afe5`](https://github.com/tobymao/sqlglot/commit/313afe540aa2cdc4cc179c4852c6ef37362bcb3e) - annotate type for snowflake func ARRAY_UNION_AGG *(PR [#6446](https://github.com/tobymao/sqlglot/pull/6446) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
139
|
+
|
|
140
|
+
annotate type for snowflake func ARRAY_UNION_AGG (#6446)
|
|
141
|
+
|
|
142
|
+
- due to [`cd9f037`](https://github.com/tobymao/sqlglot/commit/cd9f037882eef253e86fdb1d51521e0acd7db3f9) - store pk name if provided *(PR [#6424](https://github.com/tobymao/sqlglot/pull/6424) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
|
|
143
|
+
|
|
144
|
+
store pk name if provided (#6424)
|
|
145
|
+
|
|
146
|
+
- due to [`65194e4`](https://github.com/tobymao/sqlglot/commit/65194e465489151aa51859a6e3f5672f7d4c5f3b) - Annotate type for snowflake RANDSTR function *(PR [#6436](https://github.com/tobymao/sqlglot/pull/6436) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
147
|
+
|
|
148
|
+
Annotate type for snowflake RANDSTR function (#6436)
|
|
149
|
+
|
|
150
|
+
- due to [`a56262e`](https://github.com/tobymao/sqlglot/commit/a56262e6b4276baae144855478807c173db77ab9) - Annotate type for snowflake MEDIAN *(PR [#6426](https://github.com/tobymao/sqlglot/pull/6426) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
151
|
+
|
|
152
|
+
Annotate type for snowflake MEDIAN (#6426)
|
|
153
|
+
|
|
154
|
+
- due to [`2c56567`](https://github.com/tobymao/sqlglot/commit/2c56567755c8a6571d8b7d410c9de943e54df58b) - Annotate type for snowflake SEARCH_IP *(PR [#6440](https://github.com/tobymao/sqlglot/pull/6440) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
155
|
+
|
|
156
|
+
Annotate type for snowflake SEARCH_IP (#6440)
|
|
157
|
+
|
|
158
|
+
- due to [`ac86568`](https://github.com/tobymao/sqlglot/commit/ac86568a939f692b99813da100297b61fb54e044) - Added decfloat type *(PR [#6444](https://github.com/tobymao/sqlglot/pull/6444) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
159
|
+
|
|
160
|
+
Added decfloat type (#6444)
|
|
161
|
+
|
|
162
|
+
- due to [`b321ca6`](https://github.com/tobymao/sqlglot/commit/b321ca6191fefc88da1a6de83a465886b5754b7a) - bump sqlglotrs to 0.8.0 *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
|
163
|
+
|
|
164
|
+
bump sqlglotrs to 0.8.0
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
### :sparkles: New Features
|
|
168
|
+
- [`ca81217`](https://github.com/tobymao/sqlglot/commit/ca812171ab800e3faa73ea1874dd6814c8d6f701) - **duckdb**: Transpile INITCAP with custom delimiters *(PR [#6302](https://github.com/tobymao/sqlglot/pull/6302) by [@treysp](https://github.com/treysp))*
|
|
169
|
+
- [`7484c06`](https://github.com/tobymao/sqlglot/commit/7484c06be4534cd22dee14da542d5e29ff2c13a2) - **DuckDB**: Support rounding mode argument for ROUND function *(PR [#6350](https://github.com/tobymao/sqlglot/pull/6350) by [@vchan](https://github.com/vchan))*
|
|
170
|
+
- [`79e314d`](https://github.com/tobymao/sqlglot/commit/79e314df76161319ba8495b95f54603cfef0c08a) - **duckdb**: handle casting BLOB input for TRIM() *(PR [#6353](https://github.com/tobymao/sqlglot/pull/6353) by [@toriwei](https://github.com/toriwei))*
|
|
171
|
+
- [`c495a40`](https://github.com/tobymao/sqlglot/commit/c495a40ee4c1a69b14892e8455ae1bd2ceb5ea4f) - **optimizer**: annotate type for MINHASH *(PR [#6355](https://github.com/tobymao/sqlglot/pull/6355) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
172
|
+
- [`f16f8a0`](https://github.com/tobymao/sqlglot/commit/f16f8a08072556fd617b5125300262d9bb8c1e48) - improve validate qualify column message closes [#6348](https://github.com/tobymao/sqlglot/pull/6348) *(PR [#6356](https://github.com/tobymao/sqlglot/pull/6356) by [@tobymao](https://github.com/tobymao))*
|
|
173
|
+
- [`17abe23`](https://github.com/tobymao/sqlglot/commit/17abe231bc4d59912952f266ad4df86ece22c8d2) - make simplify more efficient in number of iterations *(PR [#6351](https://github.com/tobymao/sqlglot/pull/6351) by [@tobymao](https://github.com/tobymao))*
|
|
174
|
+
- [`b1f9a97`](https://github.com/tobymao/sqlglot/commit/b1f9a976be3c0bcd895bef5bcdb95a013eeb28b7) - **optimizer**: annotate type for APPROXIMATE_SIMILARITY *(PR [#6360](https://github.com/tobymao/sqlglot/pull/6360) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
175
|
+
- [`3aafca7`](https://github.com/tobymao/sqlglot/commit/3aafca74546b932cea93ed830c021f347ae03ded) - **optimizer**: annotate type for MINHASH_COMBINE *(PR [#6362](https://github.com/tobymao/sqlglot/pull/6362) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
176
|
+
- [`09a4bd8`](https://github.com/tobymao/sqlglot/commit/09a4bd8870a075e641c6e3e4cee74d73a39e760a) - Trigger integration tests *(PR [#6339](https://github.com/tobymao/sqlglot/pull/6339) by [@erindru](https://github.com/erindru))*
|
|
177
|
+
- [`7769129`](https://github.com/tobymao/sqlglot/commit/7769129eba7ae5f3594e0061bdb1079fedc5aafd) - bignum and time_ns to duckdb closes [#6379](https://github.com/tobymao/sqlglot/pull/6379) *(commit by [@tobymao](https://github.com/tobymao))*
|
|
178
|
+
- [`90a3fa9`](https://github.com/tobymao/sqlglot/commit/90a3fa9f6ddf0aa32b41118c59d4facd9fdb3398) - mark IgnoreNulls and RespectNulls as unsupported on postgres and mysql *(PR [#6377](https://github.com/tobymao/sqlglot/pull/6377) by [@NickCrews](https://github.com/NickCrews))*
|
|
179
|
+
- :arrow_lower_right: *addresses issue [#6376](https://github.com/tobymao/sqlglot/issues/6376) opened by [@NickCrews](https://github.com/NickCrews)*
|
|
180
|
+
- [`5bb1170`](https://github.com/tobymao/sqlglot/commit/5bb117082caeee719442d783ce6742d027b1492e) - transpile bigquery `greatest` null handling to duckdb *(PR [#6361](https://github.com/tobymao/sqlglot/pull/6361) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
181
|
+
- [`bf07abd`](https://github.com/tobymao/sqlglot/commit/bf07abd4ee9eb0f5510cb7d1f232bdcaea88941e) - **snowflake**: annotation support for APPROX_TOP_K_COMBINE *(PR [#6378](https://github.com/tobymao/sqlglot/pull/6378) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
182
|
+
- [`01890eb`](https://github.com/tobymao/sqlglot/commit/01890eb16d6624de4f26b7d8eadf850df6f2a042) - **trino**: support refresh materialized view statement closes [#6387](https://github.com/tobymao/sqlglot/pull/6387) *(PR [#6388](https://github.com/tobymao/sqlglot/pull/6388) by [@georgesittas](https://github.com/georgesittas))*
|
|
183
|
+
- [`e4ea6cc`](https://github.com/tobymao/sqlglot/commit/e4ea6ccf08c0ff4063424bf538bc3b22f4b4cfaf) - transpile BQ APPROX_QUANTILES to DuckDB *(PR [#6349](https://github.com/tobymao/sqlglot/pull/6349) by [@treysp](https://github.com/treysp))*
|
|
184
|
+
- [`95727f6`](https://github.com/tobymao/sqlglot/commit/95727f60d601796b34c850dee9366d79f6e4a24b) - **optimizer**: canonicalize table aliases *(PR [#6369](https://github.com/tobymao/sqlglot/pull/6369) by [@georgesittas](https://github.com/georgesittas))*
|
|
185
|
+
- [`3b6855b`](https://github.com/tobymao/sqlglot/commit/3b6855b9787111f27225108241fbe4f389443e29) - **mysql**: support ZEROFILL column attribute *(PR [#6400](https://github.com/tobymao/sqlglot/pull/6400) by [@nian0114](https://github.com/nian0114))*
|
|
186
|
+
- :arrow_lower_right: *addresses issue [#6399](https://github.com/tobymao/sqlglot/issues/6399) opened by [@nian0114](https://github.com/nian0114)*
|
|
187
|
+
- [`bb4eda1`](https://github.com/tobymao/sqlglot/commit/bb4eda1beb68b92de9ab014a63c67797a07df2fa) - **duckdb**: support transpiling SHA1 from BigQuery to DuckDB *(PR [#6404](https://github.com/tobymao/sqlglot/pull/6404) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
188
|
+
- [`05e83b5`](https://github.com/tobymao/sqlglot/commit/05e83b56f1bf9323cfa819a7f1beb542524c1219) - **duckdb**: support transpilation of LEAST from BigQuery to DuckDB *(PR [#6415](https://github.com/tobymao/sqlglot/pull/6415) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
189
|
+
- [`38472ce`](https://github.com/tobymao/sqlglot/commit/38472ce14bce731ba4c309d515223ae99e2575ac) - **duckdb**: transpile bigquery's %x format literal *(PR [#6375](https://github.com/tobymao/sqlglot/pull/6375) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
190
|
+
- [`a6e1581`](https://github.com/tobymao/sqlglot/commit/a6e15811cf5643bcc18e1e227fea20922b05c54a) - **DuckDB**: Cast BIGNUMERIC and BIGDECIMAL types to DECIMAL(38, 5) *(PR [#6419](https://github.com/tobymao/sqlglot/pull/6419) by [@vchan](https://github.com/vchan))*
|
|
191
|
+
- [`0b9d8ac`](https://github.com/tobymao/sqlglot/commit/0b9d8acbe75457424436e8c0acc047ab66e9fdc0) - **snowflake**: Annotate type for snowflake MAX function *(PR [#6422](https://github.com/tobymao/sqlglot/pull/6422) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
192
|
+
- [`68e9414`](https://github.com/tobymao/sqlglot/commit/68e9414725a60b2842d870fa222d8466057a94f6) - **snowflake**: Annotate type for snowflake MIN function *(PR [#6427](https://github.com/tobymao/sqlglot/pull/6427) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
193
|
+
- [`1318de7`](https://github.com/tobymao/sqlglot/commit/1318de77a8aa514ec7eb9f9b8c03228e3f8eb008) - **snowflake**: Annotate type for snowflake NORMAL *(PR [#6434](https://github.com/tobymao/sqlglot/pull/6434) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
194
|
+
- [`ffbb5c7`](https://github.com/tobymao/sqlglot/commit/ffbb5c7e40aa064ffcd4827e96ea66cfd045118e) - **snowflake**: annotate type for HASH_AGG in Snowflake *(PR [#6438](https://github.com/tobymao/sqlglot/pull/6438) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
195
|
+
- [`161255f`](https://github.com/tobymao/sqlglot/commit/161255f6c90b9c3ed2074e734f6d074db1d7a6dd) - Add support for `LOCALTIME` function *(PR [#6443](https://github.com/tobymao/sqlglot/pull/6443) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
196
|
+
- [`ca329f0`](https://github.com/tobymao/sqlglot/commit/ca329f037a230c315437d830638b514190764c5a) - **duckdb**: support transpilation of SHA256 from bigquery to duckdb *(PR [#6421](https://github.com/tobymao/sqlglot/pull/6421) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
197
|
+
- [`e18ae24`](https://github.com/tobymao/sqlglot/commit/e18ae248423dbbca78a24a60ea0193da2ee7f68c) - **snowflake**: Annotate type for snowflake REGR_SLOPE function *(PR [#6425](https://github.com/tobymao/sqlglot/pull/6425) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
198
|
+
- [`1d847f0`](https://github.com/tobymao/sqlglot/commit/1d847f0a1f88fce5df340ab646a72c8abbc12a86) - **snowflake**: parse & annotate `CHECK_JSON`, `CHECK_XML` *(PR [#6439](https://github.com/tobymao/sqlglot/pull/6439) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
199
|
+
- [`6843812`](https://github.com/tobymao/sqlglot/commit/68438129ceeea70f801e0ae728c51c19291fc7d8) - add correlation id to remote workflow trigger *(PR [#6441](https://github.com/tobymao/sqlglot/pull/6441) by [@erindru](https://github.com/erindru))*
|
|
200
|
+
- [`cb3080d`](https://github.com/tobymao/sqlglot/commit/cb3080d4bed18b1bfbbd08380ed60deeefd15530) - **snowflake**: annotation support for APPROX_TOP_K_ESTIMATE . Return type ARRAY *(PR [#6445](https://github.com/tobymao/sqlglot/pull/6445) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
201
|
+
- [`cd9f037`](https://github.com/tobymao/sqlglot/commit/cd9f037882eef253e86fdb1d51521e0acd7db3f9) - **optimizer**: store pk name if provided *(PR [#6424](https://github.com/tobymao/sqlglot/pull/6424) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
|
|
202
|
+
- [`65194e4`](https://github.com/tobymao/sqlglot/commit/65194e465489151aa51859a6e3f5672f7d4c5f3b) - **snowflake**: Annotate type for snowflake RANDSTR function *(PR [#6436](https://github.com/tobymao/sqlglot/pull/6436) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
203
|
+
- [`351d783`](https://github.com/tobymao/sqlglot/commit/351d7834915e02a9f4949f9925437e2731f3a8b4) - add support for LOCALTIMESTAMP *(PR [#6448](https://github.com/tobymao/sqlglot/pull/6448) by [@AbhishekASLK](https://github.com/AbhishekASLK))*
|
|
204
|
+
- [`a56262e`](https://github.com/tobymao/sqlglot/commit/a56262e6b4276baae144855478807c173db77ab9) - **snowflake**: Annotate type for snowflake MEDIAN *(PR [#6426](https://github.com/tobymao/sqlglot/pull/6426) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
205
|
+
- [`2c56567`](https://github.com/tobymao/sqlglot/commit/2c56567755c8a6571d8b7d410c9de943e54df58b) - **snowflake**: Annotate type for snowflake SEARCH_IP *(PR [#6440](https://github.com/tobymao/sqlglot/pull/6440) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
206
|
+
- [`ac86568`](https://github.com/tobymao/sqlglot/commit/ac86568a939f692b99813da100297b61fb54e044) - **snowflake**: Added decfloat type *(PR [#6444](https://github.com/tobymao/sqlglot/pull/6444) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
207
|
+
|
|
208
|
+
### :bug: Bug Fixes
|
|
209
|
+
- [`0f79f2a`](https://github.com/tobymao/sqlglot/commit/0f79f2a55c4ba14d4a5fcfd01a0a727271992b8c) - **snowflake**: MAX_BY and MIN_BY with count should return plain `ARRAY` *(PR [#6343](https://github.com/tobymao/sqlglot/pull/6343) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
210
|
+
- [`e1b6558`](https://github.com/tobymao/sqlglot/commit/e1b6558cb1a860bbd695f25b66e52064b57c0a84) - **tsql**: handle all datepart alternatives *(PR [#6324](https://github.com/tobymao/sqlglot/pull/6324) by [@lBilali](https://github.com/lBilali))*
|
|
211
|
+
- [`06daa47`](https://github.com/tobymao/sqlglot/commit/06daa47dedebac672548e1db230b89f5c9eae84e) - **optimizer**: update annotated type of ARRAY_AGG to untyped array *(PR [#6347](https://github.com/tobymao/sqlglot/pull/6347) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
212
|
+
- [`826db4d`](https://github.com/tobymao/sqlglot/commit/826db4d3c413941e3b0b31e1f907fabd017bd461) - **redshift**: properly parse default IAM_ROLE and AVRO/JSON formats in COPY *(PR [#6346](https://github.com/tobymao/sqlglot/pull/6346) by [@georgesittas](https://github.com/georgesittas))*
|
|
213
|
+
- :arrow_lower_right: *fixes issue [#6345](https://github.com/tobymao/sqlglot/issues/6345) opened by [@zachary-povey](https://github.com/zachary-povey)*
|
|
214
|
+
- [`c367bac`](https://github.com/tobymao/sqlglot/commit/c367bac878a3c17773009b54b9836e7b9a5b84fe) - **duckdb**: Support update without set in DuckDB merge when matched *(PR [#6357](https://github.com/tobymao/sqlglot/pull/6357) by [@themisvaltinos](https://github.com/themisvaltinos))*
|
|
215
|
+
- [`df13a65`](https://github.com/tobymao/sqlglot/commit/df13a655646bd2ef5d8b4613670bb5fe48845b73) - unnest deep stuff *(PR [#6366](https://github.com/tobymao/sqlglot/pull/6366) by [@tobymao](https://github.com/tobymao))*
|
|
216
|
+
- [`20e33fd`](https://github.com/tobymao/sqlglot/commit/20e33fd0d1bc1899727d023411e604f1ea9347b8) - **duckdb**: regexp_extract_all closes [#6380](https://github.com/tobymao/sqlglot/pull/6380) *(commit by [@tobymao](https://github.com/tobymao))*
|
|
217
|
+
- [`d4c2256`](https://github.com/tobymao/sqlglot/commit/d4c2256fb493ed2f16c29694ae5c31517123d419) - **parser**: at time zone precedence *(PR [#6383](https://github.com/tobymao/sqlglot/pull/6383) by [@geooo109](https://github.com/geooo109))*
|
|
218
|
+
- :arrow_lower_right: *fixes issue [#6359](https://github.com/tobymao/sqlglot/issues/6359) opened by [@parth-wisdom](https://github.com/parth-wisdom)*
|
|
219
|
+
- [`4fb4d08`](https://github.com/tobymao/sqlglot/commit/4fb4d08ef8896bda434d4f89c21c669c6146fd02) - **oracle**: properly support table alias in the `INSERT` DML *(PR [#6374](https://github.com/tobymao/sqlglot/pull/6374) by [@snovik75](https://github.com/snovik75))*
|
|
220
|
+
- :arrow_lower_right: *fixes issue [#6371](https://github.com/tobymao/sqlglot/issues/6371) opened by [@snovik75](https://github.com/snovik75)*
|
|
221
|
+
- [`2169f5b`](https://github.com/tobymao/sqlglot/commit/2169f5b8f30b6c8be1635bb5648a1abf636e49a6) - **parser**: support SET with := *(PR [#6385](https://github.com/tobymao/sqlglot/pull/6385) by [@geooo109](https://github.com/geooo109))*
|
|
222
|
+
- :arrow_lower_right: *fixes issue [#6384](https://github.com/tobymao/sqlglot/issues/6384) opened by [@AndyVW77](https://github.com/AndyVW77)*
|
|
223
|
+
- [`50348ac`](https://github.com/tobymao/sqlglot/commit/50348ac31f784aa97bd09d5d6c6613fbd68402ee) - **mysql**: support order by clause for mysql delete statement *(PR [#6381](https://github.com/tobymao/sqlglot/pull/6381) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
|
|
224
|
+
- :arrow_lower_right: *fixes issue [#6372](https://github.com/tobymao/sqlglot/issues/6372) opened by [@AhlamHani](https://github.com/AhlamHani)*
|
|
225
|
+
- [`21d3859`](https://github.com/tobymao/sqlglot/commit/21d38590fec6cb55a1a03aeb2621bd9fca677496) - **bigquery**: Disable STRING_AGG sep canonicalization *(PR [#6395](https://github.com/tobymao/sqlglot/pull/6395) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
226
|
+
- :arrow_lower_right: *fixes issue [#6392](https://github.com/tobymao/sqlglot/issues/6392) opened by [@erindru](https://github.com/erindru)*
|
|
227
|
+
- [`67f499d`](https://github.com/tobymao/sqlglot/commit/67f499dd497efdf4f3fc49dd75e49a77e036ee63) - **duckdb**: Make exp.DateFromParts more lenient *(PR [#6397](https://github.com/tobymao/sqlglot/pull/6397) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
228
|
+
- :arrow_lower_right: *fixes issue [#6394](https://github.com/tobymao/sqlglot/issues/6394) opened by [@denis-komarov](https://github.com/denis-komarov)*
|
|
229
|
+
- [`39f8c37`](https://github.com/tobymao/sqlglot/commit/39f8c37aca755d97e1e41f232042d1c649e58908) - **parser**: support FROM-syntax with joins *(PR [#6402](https://github.com/tobymao/sqlglot/pull/6402) by [@geooo109](https://github.com/geooo109))*
|
|
230
|
+
- :arrow_lower_right: *fixes issue [#6396](https://github.com/tobymao/sqlglot/issues/6396) opened by [@denis-komarov](https://github.com/denis-komarov)*
|
|
231
|
+
- [`9ddae4d`](https://github.com/tobymao/sqlglot/commit/9ddae4d56d1e3a15fc3b4b76ce3b3040683c220f) - **duckdb**: support IN with no paren *(PR [#6409](https://github.com/tobymao/sqlglot/pull/6409) by [@geooo109](https://github.com/geooo109))*
|
|
232
|
+
- :arrow_lower_right: *fixes issue [#6407](https://github.com/tobymao/sqlglot/issues/6407) opened by [@denis-komarov](https://github.com/denis-komarov)*
|
|
233
|
+
- [`c7cb098`](https://github.com/tobymao/sqlglot/commit/c7cb0983a0fa463c43d2c4ee925816e9a1628c79) - **tokenizer**: Fix underscore separator with scientific notation *(PR [#6401](https://github.com/tobymao/sqlglot/pull/6401) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
234
|
+
- :arrow_lower_right: *fixes issue [#6393](https://github.com/tobymao/sqlglot/issues/6393) opened by [@denis-komarov](https://github.com/denis-komarov)*
|
|
235
|
+
- [`f5635d2`](https://github.com/tobymao/sqlglot/commit/f5635d2cc2a5612d6403bbf508b545f2a4e8f773) - **duckdb**: splice with col named after type closes [#6411](https://github.com/tobymao/sqlglot/pull/6411) *(commit by [@tobymao](https://github.com/tobymao))*
|
|
236
|
+
- [`097d865`](https://github.com/tobymao/sqlglot/commit/097d865554d9ba2e226962fa71778ae0a6c596cb) - **duckdb**: pivot using cast closes [#6410](https://github.com/tobymao/sqlglot/pull/6410) *(commit by [@tobymao](https://github.com/tobymao))*
|
|
237
|
+
- [`d038ad7`](https://github.com/tobymao/sqlglot/commit/d038ad7f036a140f3eae4bdde15824437d4e44ee) - **mysql**: support named primary keys for mysql *(PR [#6389](https://github.com/tobymao/sqlglot/pull/6389) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
|
|
238
|
+
- :arrow_lower_right: *fixes issue [#6382](https://github.com/tobymao/sqlglot/issues/6382) opened by [@AndyVW77](https://github.com/AndyVW77)*
|
|
239
|
+
- [`4f3bb0d`](https://github.com/tobymao/sqlglot/commit/4f3bb0d6714bf89ff72e13e1398d8f01cefafb00) - **DuckDB**: Correct transpilation of BigQuery's JSON_EXTRACT_SCALAR… *(PR [#6414](https://github.com/tobymao/sqlglot/pull/6414) by [@vchan](https://github.com/vchan))*
|
|
240
|
+
- [`e2f306f`](https://github.com/tobymao/sqlglot/commit/e2f306f1893a3f565cbbf7857ffd9795850aba7b) - interval column ops closes [#6416](https://github.com/tobymao/sqlglot/pull/6416) *(commit by [@tobymao](https://github.com/tobymao))*
|
|
241
|
+
- [`8c314a8`](https://github.com/tobymao/sqlglot/commit/8c314a8b457a5c3ed470ac8fcff022fec881c248) - **duckdb**: support cte pivot for duckdb *(PR [#6413](https://github.com/tobymao/sqlglot/pull/6413) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
|
|
242
|
+
- :arrow_lower_right: *fixes issue [#6405](https://github.com/tobymao/sqlglot/issues/6405) opened by [@denis-komarov](https://github.com/denis-komarov)*
|
|
243
|
+
- [`92ee124`](https://github.com/tobymao/sqlglot/commit/92ee1241ea3088d4e63c094404252339c54ad0c1) - **optimizer**: postgres qualify GENERATE_SERIES and table projection *(PR [#6373](https://github.com/tobymao/sqlglot/pull/6373) by [@geooo109](https://github.com/geooo109))*
|
|
244
|
+
- :arrow_lower_right: *fixes issue [#6358](https://github.com/tobymao/sqlglot/issues/6358) opened by [@metahexane](https://github.com/metahexane)*
|
|
245
|
+
|
|
246
|
+
### :recycle: Refactors
|
|
247
|
+
- [`e4d1a4f`](https://github.com/tobymao/sqlglot/commit/e4d1a4fcd6741d679c5444bf023077d2aaa8f980) - **exasol**: map date/timestamp `TRUNC` to `DATE_TRUNC` *(PR [#6328](https://github.com/tobymao/sqlglot/pull/6328) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
248
|
+
- [`c6b0a63`](https://github.com/tobymao/sqlglot/commit/c6b0a6342a21d79635a26d40001c916d05d47cf7) - change version to be a tuple so that it can be pickled, also simpler *(commit by [@tobymao](https://github.com/tobymao))*
|
|
249
|
+
- [`625654a`](https://github.com/tobymao/sqlglot/commit/625654a9623cc5407bfde922c29f32a8ee905a3b) - move resolver to own file *(commit by [@tobymao](https://github.com/tobymao))*
|
|
250
|
+
|
|
251
|
+
### :wrench: Chores
|
|
252
|
+
- [`487d218`](https://github.com/tobymao/sqlglot/commit/487d218a6fcad4e28c65c6df55435ba218826186) - iterative annotate types *(PR [#6342](https://github.com/tobymao/sqlglot/pull/6342) by [@geooo109](https://github.com/geooo109))*
|
|
253
|
+
- [`8201062`](https://github.com/tobymao/sqlglot/commit/8201062ac41b85e5a89aa8e1c5973852f105c66e) - clean up derived table traversal in table qualification *(PR [#6363](https://github.com/tobymao/sqlglot/pull/6363) by [@georgesittas](https://github.com/georgesittas))*
|
|
254
|
+
- [`6b7084d`](https://github.com/tobymao/sqlglot/commit/6b7084d0c9f4735432afc12509c77c286cc50513) - **optimizer**: refactor costly scope walking loop in qualify tables *(PR [#6364](https://github.com/tobymao/sqlglot/pull/6364) by [@georgesittas](https://github.com/georgesittas))*
|
|
255
|
+
- [`0319241`](https://github.com/tobymao/sqlglot/commit/0319241162bbe6d278a626100eac73999b250968) - **mysql,postgres**: tests for unsupported IGNORE/RESPECT NULLS *(PR [#6386](https://github.com/tobymao/sqlglot/pull/6386) by [@geooo109](https://github.com/geooo109))*
|
|
256
|
+
- :arrow_lower_right: *addresses issue [#6376](https://github.com/tobymao/sqlglot/issues/6376) opened by [@NickCrews](https://github.com/NickCrews)*
|
|
257
|
+
- [`11354cc`](https://github.com/tobymao/sqlglot/commit/11354cc85d116cd24c28114a437111965ba828a9) - Make integration test workflow more robust *(PR [#6403](https://github.com/tobymao/sqlglot/pull/6403) by [@erindru](https://github.com/erindru))*
|
|
258
|
+
- [`f758cea`](https://github.com/tobymao/sqlglot/commit/f758cea0e9fca5850895a730c554c17b488d29ca) - **exasol**: transformed rank function, ignoring parameters *(PR [#6408](https://github.com/tobymao/sqlglot/pull/6408) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
259
|
+
- [`07d9958`](https://github.com/tobymao/sqlglot/commit/07d99583b4aebdc682bb7604ccdf45bddb89f9c3) - **optimizer**: replace direct comparison with dialect properties *(PR [#6398](https://github.com/tobymao/sqlglot/pull/6398) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
260
|
+
- [`137549e`](https://github.com/tobymao/sqlglot/commit/137549e5e803416d46e13e9a8123cef9b53d349a) - **exasol**: transform substring_index using substr and instr *(PR [#6406](https://github.com/tobymao/sqlglot/pull/6406) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
261
|
+
- [`78f1824`](https://github.com/tobymao/sqlglot/commit/78f1824c790f523845cbda488ecf4c43a92ac0f0) - **exasol**: transform substring_index using substr and instr *(PR [#6406](https://github.com/tobymao/sqlglot/pull/6406) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
262
|
+
- [`39cc555`](https://github.com/tobymao/sqlglot/commit/39cc55586ed76a4a583e6db22a9ee51e09bff92e) - **snowflake**: annotate type for COUNT *(PR [#6437](https://github.com/tobymao/sqlglot/pull/6437) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
263
|
+
- [`61f39ba`](https://github.com/tobymao/sqlglot/commit/61f39bab9a0668c338e8c1b5e0fa953f22c0a886) - **optimizer**: improve error message for ambiguous columns *(PR [#6423](https://github.com/tobymao/sqlglot/pull/6423) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
264
|
+
- [`313afe5`](https://github.com/tobymao/sqlglot/commit/313afe540aa2cdc4cc179c4852c6ef37362bcb3e) - **optimizer**: annotate type for snowflake func ARRAY_UNION_AGG *(PR [#6446](https://github.com/tobymao/sqlglot/pull/6446) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
265
|
+
- [`b321ca6`](https://github.com/tobymao/sqlglot/commit/b321ca6191fefc88da1a6de83a465886b5754b7a) - bump sqlglotrs to 0.8.0 *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
## [v28.0.0] - 2025-11-17
|
|
269
|
+
### :boom: BREAKING CHANGES
|
|
270
|
+
- due to [`39d8e19`](https://github.com/tobymao/sqlglot/commit/39d8e19419c2adbb80465be414d1cc3bbc6d007b) - include VARIABLE kind in SET transpilation to DuckDB *(PR [#6201](https://github.com/tobymao/sqlglot/pull/6201) by [@toriwei](https://github.com/toriwei))*:
|
|
271
|
+
|
|
272
|
+
include VARIABLE kind in SET transpilation to DuckDB (#6201)
|
|
273
|
+
|
|
274
|
+
- due to [`e7ddad1`](https://github.com/tobymao/sqlglot/commit/e7ddad10b5edf9b801d2151e3e5fca448754df0d) - ensure `NULL` coerces into any type *(PR [#6211](https://github.com/tobymao/sqlglot/pull/6211) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
275
|
+
|
|
276
|
+
ensure `NULL` coerces into any type (#6211)
|
|
277
|
+
|
|
278
|
+
- due to [`0037266`](https://github.com/tobymao/sqlglot/commit/00372664bf6acf2b0fff9ad4b206b597ef5378f7) - annotate types for GETBIT *(PR [#6219](https://github.com/tobymao/sqlglot/pull/6219) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
279
|
+
|
|
280
|
+
annotate types for GETBIT (#6219)
|
|
281
|
+
|
|
282
|
+
- due to [`a5458ce`](https://github.com/tobymao/sqlglot/commit/a5458ceca3bc239fb611791e38020632dd0824c8) - add type annotation for DECODE function support *(PR [#6199](https://github.com/tobymao/sqlglot/pull/6199) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
283
|
+
|
|
284
|
+
add type annotation for DECODE function support (#6199)
|
|
285
|
+
|
|
286
|
+
- due to [`417f1e8`](https://github.com/tobymao/sqlglot/commit/417f1e8ee50fb8f4377fad261660ffbd7444a429) - annotate types for BITNOT *(PR [#6234](https://github.com/tobymao/sqlglot/pull/6234) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
287
|
+
|
|
288
|
+
annotate types for BITNOT (#6234)
|
|
289
|
+
|
|
290
|
+
- due to [`fe8ab40`](https://github.com/tobymao/sqlglot/commit/fe8ab40e8e0559201e0b1896a6f1a8fb6b5b932d) - 1st-class parsing support for BITAND, BIT_AND, BIT_NOT *(PR [#6243](https://github.com/tobymao/sqlglot/pull/6243) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
291
|
+
|
|
292
|
+
1st-class parsing support for BITAND, BIT_AND, BIT_NOT (#6243)
|
|
293
|
+
|
|
294
|
+
- due to [`5ae3c47`](https://github.com/tobymao/sqlglot/commit/5ae3c47b1c6993b87341472c08714f4a0f738168) - add type annotation for GROUPING() function *(PR [#6244](https://github.com/tobymao/sqlglot/pull/6244) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
295
|
+
|
|
296
|
+
add type annotation for GROUPING() function (#6244)
|
|
297
|
+
|
|
298
|
+
- due to [`4133265`](https://github.com/tobymao/sqlglot/commit/413326514507ef06537dcc3d4b80a3fcbcd26f66) - parse `has` function into an `ArrayContains` expression *(PR [#6245](https://github.com/tobymao/sqlglot/pull/6245) by [@joeyutong](https://github.com/joeyutong))*:
|
|
299
|
+
|
|
300
|
+
parse `has` function into an `ArrayContains` expression (#6245)
|
|
301
|
+
|
|
302
|
+
- due to [`cdd45b9`](https://github.com/tobymao/sqlglot/commit/cdd45b949fd1eefb147053424279b56b8effcbcf) - annotate types for GROUPING_ID function. *(PR [#6249](https://github.com/tobymao/sqlglot/pull/6249) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
303
|
+
|
|
304
|
+
annotate types for GROUPING_ID function. (#6249)
|
|
305
|
+
|
|
306
|
+
- due to [`080ff3b`](https://github.com/tobymao/sqlglot/commit/080ff3bd93b36291d5bb0092d722f8307f0ae082) - annotate types for BITAND_AGG *(PR [#6248](https://github.com/tobymao/sqlglot/pull/6248) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
307
|
+
|
|
308
|
+
annotate types for BITAND_AGG (#6248)
|
|
309
|
+
|
|
310
|
+
- due to [`87a818a`](https://github.com/tobymao/sqlglot/commit/87a818a899f61a675c22c697f468b3f6f7e2787f) - annotate types for BITOR_AGG *(PR [#6251](https://github.com/tobymao/sqlglot/pull/6251) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
311
|
+
|
|
312
|
+
annotate types for BITOR_AGG (#6251)
|
|
313
|
+
|
|
314
|
+
- due to [`4c4189b`](https://github.com/tobymao/sqlglot/commit/4c4189b4083d272a6e678d83b5c567a2e9c0d672) - Transpile CONCAT function to double pipe operators when source … *(PR [#6241](https://github.com/tobymao/sqlglot/pull/6241) by [@vchan](https://github.com/vchan))*:
|
|
315
|
+
|
|
316
|
+
Transpile CONCAT function to double pipe operators when source … (#6241)
|
|
317
|
+
|
|
318
|
+
- due to [`a1b884d`](https://github.com/tobymao/sqlglot/commit/a1b884dc9ddfd2185de48cc9451a39f152879d39) - annotate types for BITXOR_AGG *(PR [#6253](https://github.com/tobymao/sqlglot/pull/6253) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
319
|
+
|
|
320
|
+
annotate types for BITXOR_AGG (#6253)
|
|
321
|
+
|
|
322
|
+
- due to [`fc78d20`](https://github.com/tobymao/sqlglot/commit/fc78d2016d8f7d20c094df791f746de323cd3639) - Unwrap subqueries without modifiers *(PR [#6247](https://github.com/tobymao/sqlglot/pull/6247) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
323
|
+
|
|
324
|
+
Unwrap subqueries without modifiers (#6247)
|
|
325
|
+
|
|
326
|
+
- due to [`ad2ad23`](https://github.com/tobymao/sqlglot/commit/ad2ad234b5a508040dce4f3920439be052742573) - add missing return type mapping for MAX_BY and MAX_BY function *(PR [#6250](https://github.com/tobymao/sqlglot/pull/6250) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
327
|
+
|
|
328
|
+
add missing return type mapping for MAX_BY and MAX_BY function (#6250)
|
|
329
|
+
|
|
330
|
+
- due to [`39c1d81`](https://github.com/tobymao/sqlglot/commit/39c1d81174f2390b6b0c9dd14c0e550ad452a1df) - annotate types for BOOLXOR_AGG *(PR [#6261](https://github.com/tobymao/sqlglot/pull/6261) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
331
|
+
|
|
332
|
+
annotate types for BOOLXOR_AGG (#6261)
|
|
333
|
+
|
|
334
|
+
- due to [`71590d2`](https://github.com/tobymao/sqlglot/commit/71590d22cdb05594e2173a1500f763dc1a32a81d) - add type annotation for SKEW function. *(PR [#6262](https://github.com/tobymao/sqlglot/pull/6262) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
335
|
+
|
|
336
|
+
add type annotation for SKEW function. (#6262)
|
|
337
|
+
|
|
338
|
+
- due to [`5fd366d`](https://github.com/tobymao/sqlglot/commit/5fd366d9e6f7b3f1eb7a9cf41975cf13ce890ffe) - annotate types for OBJECT_AGG *(PR [#6265](https://github.com/tobymao/sqlglot/pull/6265) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
339
|
+
|
|
340
|
+
annotate types for OBJECT_AGG (#6265)
|
|
341
|
+
|
|
342
|
+
- due to [`00abc39`](https://github.com/tobymao/sqlglot/commit/00abc393c9042e839457c5a6582e95cdb74356f3) - handle casting for bytestrings *(PR [#6252](https://github.com/tobymao/sqlglot/pull/6252) by [@toriwei](https://github.com/toriwei))*:
|
|
343
|
+
|
|
344
|
+
handle casting for bytestrings (#6252)
|
|
345
|
+
|
|
346
|
+
- due to [`3dae0fb`](https://github.com/tobymao/sqlglot/commit/3dae0fbb528762e5d5fd446350d42e9c841e2959) - Support position and occurrence args for REGEXP_EXTRACT *(PR [#6266](https://github.com/tobymao/sqlglot/pull/6266) by [@vchan](https://github.com/vchan))*:
|
|
347
|
+
|
|
348
|
+
Support position and occurrence args for REGEXP_EXTRACT (#6266)
|
|
349
|
+
|
|
350
|
+
- due to [`ddea61d`](https://github.com/tobymao/sqlglot/commit/ddea61d83f6699c97cc7b25aabe01a138138bdb1) - simplify connector complements only for non-null operands *(PR [#6214](https://github.com/tobymao/sqlglot/pull/6214) by [@geooo109](https://github.com/geooo109))*:
|
|
351
|
+
|
|
352
|
+
simplify connector complements only for non-null operands (#6214)
|
|
353
|
+
|
|
354
|
+
- due to [`771732d`](https://github.com/tobymao/sqlglot/commit/771732d81459cc576f11eccc49794f33e62d14af) - annotate types for REGR_AVGY *(PR [#6271](https://github.com/tobymao/sqlglot/pull/6271) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
355
|
+
|
|
356
|
+
annotate types for REGR_AVGY (#6271)
|
|
357
|
+
|
|
358
|
+
- due to [`8470be0`](https://github.com/tobymao/sqlglot/commit/8470be00731a4d79518a533a5f7ba884fa2f047e) - add type annotation for BITMAP_COUNT function. *(PR [#6274](https://github.com/tobymao/sqlglot/pull/6274) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
359
|
+
|
|
360
|
+
add type annotation for BITMAP_COUNT function. (#6274)
|
|
361
|
+
|
|
362
|
+
- due to [`98f25f9`](https://github.com/tobymao/sqlglot/commit/98f25f92cc1175ac7b2118a5a342db82adade13a) - support splitBy function *(PR [#6278](https://github.com/tobymao/sqlglot/pull/6278) by [@joeyutong](https://github.com/joeyutong))*:
|
|
363
|
+
|
|
364
|
+
support splitBy function (#6278)
|
|
365
|
+
|
|
366
|
+
- due to [`fabbf05`](https://github.com/tobymao/sqlglot/commit/fabbf057aba88f30205767d8c339727de45991c8) - Add support for shorthand struct array literals in duckDB. *(PR [#6233](https://github.com/tobymao/sqlglot/pull/6233) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
367
|
+
|
|
368
|
+
Add support for shorthand struct array literals in duckDB. (#6233)
|
|
369
|
+
|
|
370
|
+
- due to [`c02b64c`](https://github.com/tobymao/sqlglot/commit/c02b64c3524dd074c2108baaca668ab2607ac843) - Handle pseudocolumns differently than columns *(PR [#6273](https://github.com/tobymao/sqlglot/pull/6273) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
371
|
+
|
|
372
|
+
Handle pseudocolumns differently than columns (#6273)
|
|
373
|
+
|
|
374
|
+
- due to [`05c5181`](https://github.com/tobymao/sqlglot/commit/05c5181b36a7ada32b96fc91bdfbf73b38a1a408) - refactor `Connector` simplification to factor in types *(PR [#6152](https://github.com/tobymao/sqlglot/pull/6152) by [@geooo109](https://github.com/geooo109))*:
|
|
375
|
+
|
|
376
|
+
refactor `Connector` simplification to factor in types (#6152)
|
|
377
|
+
|
|
378
|
+
- due to [`9c1a222`](https://github.com/tobymao/sqlglot/commit/9c1a2221b0327ba6848542c7b906e92f25a05bea) - add type annotation for BITMAP_CONSTRUCT_AGG function. *(PR [#6285](https://github.com/tobymao/sqlglot/pull/6285) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
379
|
+
|
|
380
|
+
add type annotation for BITMAP_CONSTRUCT_AGG function. (#6285)
|
|
381
|
+
|
|
382
|
+
- due to [`cb0bcff`](https://github.com/tobymao/sqlglot/commit/cb0bcff310e9acdf806fc98e99cb9938b747c771) - cast UUID() output to varchar when source dialect UUID() returns string *(PR [#6284](https://github.com/tobymao/sqlglot/pull/6284) by [@toriwei](https://github.com/toriwei))*:
|
|
383
|
+
|
|
384
|
+
cast UUID() output to varchar when source dialect UUID() returns string (#6284)
|
|
385
|
+
|
|
386
|
+
- due to [`358105d`](https://github.com/tobymao/sqlglot/commit/358105d1296c7425e071ccf3189a31a02c00c923) - type annotation for BITMAP_BIT_POSITION function *(PR [#6301](https://github.com/tobymao/sqlglot/pull/6301) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
387
|
+
|
|
388
|
+
type annotation for BITMAP_BIT_POSITION function (#6301)
|
|
389
|
+
|
|
390
|
+
- due to [`4ee7a50`](https://github.com/tobymao/sqlglot/commit/4ee7a500cc460b6f6a1ed103a12dca72e6d01c18) - type inference for BITMAP_OR_AGG *(PR [#6297](https://github.com/tobymao/sqlglot/pull/6297) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
391
|
+
|
|
392
|
+
type inference for BITMAP_OR_AGG (#6297)
|
|
393
|
+
|
|
394
|
+
- due to [`fcd537d`](https://github.com/tobymao/sqlglot/commit/fcd537de2c993ad0bd18acd84dbae354165f7d3f) - conflict resolution. type annotation for BITMAP_BUCKET_NUMBER function. Tests added all dialects that support BITMAP_BUCKET_NUMBER *(PR [#6299](https://github.com/tobymao/sqlglot/pull/6299) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
395
|
+
|
|
396
|
+
conflict resolution. type annotation for BITMAP_BUCKET_NUMBER function. Tests added all dialects that support BITMAP_BUCKET_NUMBER (#6299)
|
|
397
|
+
|
|
398
|
+
- due to [`3dffd59`](https://github.com/tobymao/sqlglot/commit/3dffd598496a9f2d94caec9d7f3dcb9791c94019) - annotate types for PERCENTILE_DISC and WithinGroup *(PR [#6300](https://github.com/tobymao/sqlglot/pull/6300) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*:
|
|
399
|
+
|
|
400
|
+
annotate types for PERCENTILE_DISC and WithinGroup (#6300)
|
|
401
|
+
|
|
402
|
+
- due to [`f9287f7`](https://github.com/tobymao/sqlglot/commit/f9287f7d596a6d8a1e1cd2c48978a4dec77a96cb) - robust deduplication of connectors *(PR [#6296](https://github.com/tobymao/sqlglot/pull/6296) by [@geooo109](https://github.com/geooo109))*:
|
|
403
|
+
|
|
404
|
+
robust deduplication of connectors (#6296)
|
|
405
|
+
|
|
406
|
+
- due to [`ea0ea79`](https://github.com/tobymao/sqlglot/commit/ea0ea79c1c611b62c79f82f744fe0c98803598a3) - Parse `LIKE` functions *(PR [#6314](https://github.com/tobymao/sqlglot/pull/6314) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
407
|
+
|
|
408
|
+
Parse `LIKE` functions (#6314)
|
|
409
|
+
|
|
410
|
+
- due to [`e903883`](https://github.com/tobymao/sqlglot/commit/e90388328fcf5b8061c99e325b87d5beb0046ffc) - type annotation for APPROX_TOP_K_ACCUMULATE functio… *(PR [#6309](https://github.com/tobymao/sqlglot/pull/6309) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*:
|
|
411
|
+
|
|
412
|
+
type annotation for APPROX_TOP_K_ACCUMULATE functio… (#6309)
|
|
413
|
+
|
|
414
|
+
- due to [`d3fefad`](https://github.com/tobymao/sqlglot/commit/d3fefad80d25ff5a6dd02426667ff0ea8478a1b2) - support `DATEDIFF_BIG` *(PR [#6323](https://github.com/tobymao/sqlglot/pull/6323) by [@lBilali](https://github.com/lBilali))*:
|
|
415
|
+
|
|
416
|
+
support `DATEDIFF_BIG` (#6323)
|
|
417
|
+
|
|
418
|
+
- due to [`21d1468`](https://github.com/tobymao/sqlglot/commit/21d1468377b9c8ad48c6cca1ae3b3744a807c29e) - annotate type for APPROX_TOP_K *(PR [#6286](https://github.com/tobymao/sqlglot/pull/6286) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*:
|
|
419
|
+
|
|
420
|
+
annotate type for APPROX_TOP_K (#6286)
|
|
421
|
+
|
|
422
|
+
- due to [`85ddcc5`](https://github.com/tobymao/sqlglot/commit/85ddcc5eca22ac726582de454f2f12b9d4877634) - Do not normalize JSON fields in dot notation *(PR [#6320](https://github.com/tobymao/sqlglot/pull/6320) by [@VaggelisD](https://github.com/VaggelisD))*:
|
|
423
|
+
|
|
424
|
+
Do not normalize JSON fields in dot notation (#6320)
|
|
425
|
+
|
|
426
|
+
- due to [`933e981`](https://github.com/tobymao/sqlglot/commit/933e98102fb39d24ae0350da13337d981287130a) - more robust NULL reduction *(PR [#6327](https://github.com/tobymao/sqlglot/pull/6327) by [@geooo109](https://github.com/geooo109))*:
|
|
427
|
+
|
|
428
|
+
more robust NULL reduction (#6327)
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
### :sparkles: New Features
|
|
432
|
+
- [`39d8e19`](https://github.com/tobymao/sqlglot/commit/39d8e19419c2adbb80465be414d1cc3bbc6d007b) - **snowflake**: include VARIABLE kind in SET transpilation to DuckDB *(PR [#6201](https://github.com/tobymao/sqlglot/pull/6201) by [@toriwei](https://github.com/toriwei))*
|
|
433
|
+
- :arrow_lower_right: *addresses issue [#6177](https://github.com/tobymao/sqlglot/issues/6177) opened by [@baruchoxman](https://github.com/baruchoxman)*
|
|
434
|
+
- [`0037266`](https://github.com/tobymao/sqlglot/commit/00372664bf6acf2b0fff9ad4b206b597ef5378f7) - **snowflake**: annotate types for GETBIT *(PR [#6219](https://github.com/tobymao/sqlglot/pull/6219) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
435
|
+
- [`a5458ce`](https://github.com/tobymao/sqlglot/commit/a5458ceca3bc239fb611791e38020632dd0824c8) - **snowflake**: add type annotation for DECODE function support *(PR [#6199](https://github.com/tobymao/sqlglot/pull/6199) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
436
|
+
- [`a9d0f63`](https://github.com/tobymao/sqlglot/commit/a9d0f6333c38ffb0b5afc3c213ac7bf008d98ad6) - **DuckDB**: Transpile unix_millis to epoch_ms *(PR [#6224](https://github.com/tobymao/sqlglot/pull/6224) by [@vchan](https://github.com/vchan))*
|
|
437
|
+
- [`238f705`](https://github.com/tobymao/sqlglot/commit/238f705940751f09464ee0f8260186f3f8124374) - **DuckDB**: Transpile unix_seconds to epoch *(PR [#6225](https://github.com/tobymao/sqlglot/pull/6225) by [@vchan](https://github.com/vchan))*
|
|
438
|
+
- [`c8b0129`](https://github.com/tobymao/sqlglot/commit/c8b0129380df389be6ff22cafb4251181e919d23) - **exasol**: support bracket-delimited identifiers *(PR [#6231](https://github.com/tobymao/sqlglot/pull/6231) by [@JoepvandenHoven-Bluemine](https://github.com/JoepvandenHoven-Bluemine))*
|
|
439
|
+
- [`417f1e8`](https://github.com/tobymao/sqlglot/commit/417f1e8ee50fb8f4377fad261660ffbd7444a429) - **snowflake**: annotate types for BITNOT *(PR [#6234](https://github.com/tobymao/sqlglot/pull/6234) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
440
|
+
- [`fe8ab40`](https://github.com/tobymao/sqlglot/commit/fe8ab40e8e0559201e0b1896a6f1a8fb6b5b932d) - **snowflake**: 1st-class parsing support for BITAND, BIT_AND, BIT_NOT *(PR [#6243](https://github.com/tobymao/sqlglot/pull/6243) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
441
|
+
- [`5ae3c47`](https://github.com/tobymao/sqlglot/commit/5ae3c47b1c6993b87341472c08714f4a0f738168) - **snowflake**: add type annotation for GROUPING() function *(PR [#6244](https://github.com/tobymao/sqlglot/pull/6244) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
442
|
+
- [`4133265`](https://github.com/tobymao/sqlglot/commit/413326514507ef06537dcc3d4b80a3fcbcd26f66) - **clickhouse**: parse `has` function into an `ArrayContains` expression *(PR [#6245](https://github.com/tobymao/sqlglot/pull/6245) by [@joeyutong](https://github.com/joeyutong))*
|
|
443
|
+
- [`b722aa2`](https://github.com/tobymao/sqlglot/commit/b722aa2d4b65c698921066426838f080a31bdc35) - **duckdb**: cast LOWER() result to BLOB if input is bytes *(PR [#6218](https://github.com/tobymao/sqlglot/pull/6218) by [@toriwei](https://github.com/toriwei))*
|
|
444
|
+
- [`cdd45b9`](https://github.com/tobymao/sqlglot/commit/cdd45b949fd1eefb147053424279b56b8effcbcf) - **optimizer**: annotate types for GROUPING_ID function. *(PR [#6249](https://github.com/tobymao/sqlglot/pull/6249) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
445
|
+
- [`080ff3b`](https://github.com/tobymao/sqlglot/commit/080ff3bd93b36291d5bb0092d722f8307f0ae082) - **snowflake**: annotate types for BITAND_AGG *(PR [#6248](https://github.com/tobymao/sqlglot/pull/6248) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
446
|
+
- [`87a818a`](https://github.com/tobymao/sqlglot/commit/87a818a899f61a675c22c697f468b3f6f7e2787f) - **snowflake**: annotate types for BITOR_AGG *(PR [#6251](https://github.com/tobymao/sqlglot/pull/6251) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
447
|
+
- [`a1b884d`](https://github.com/tobymao/sqlglot/commit/a1b884dc9ddfd2185de48cc9451a39f152879d39) - **snowflake**: annotate types for BITXOR_AGG *(PR [#6253](https://github.com/tobymao/sqlglot/pull/6253) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
448
|
+
- [`71d93b1`](https://github.com/tobymao/sqlglot/commit/71d93b181d2aa3a77a022820446d6fec0133291f) - **duckdb**: implement casting to blob for UPPER() and move to helper method *(PR [#6254](https://github.com/tobymao/sqlglot/pull/6254) by [@toriwei](https://github.com/toriwei))*
|
|
449
|
+
- [`ad2ad23`](https://github.com/tobymao/sqlglot/commit/ad2ad234b5a508040dce4f3920439be052742573) - **snowflake**: add missing return type mapping for MAX_BY and MAX_BY function *(PR [#6250](https://github.com/tobymao/sqlglot/pull/6250) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
450
|
+
- [`39c1d81`](https://github.com/tobymao/sqlglot/commit/39c1d81174f2390b6b0c9dd14c0e550ad452a1df) - **snowflake**: annotate types for BOOLXOR_AGG *(PR [#6261](https://github.com/tobymao/sqlglot/pull/6261) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
451
|
+
- [`71590d2`](https://github.com/tobymao/sqlglot/commit/71590d22cdb05594e2173a1500f763dc1a32a81d) - **snowflake**: add type annotation for SKEW function. *(PR [#6262](https://github.com/tobymao/sqlglot/pull/6262) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
452
|
+
- [`5fd366d`](https://github.com/tobymao/sqlglot/commit/5fd366d9e6f7b3f1eb7a9cf41975cf13ce890ffe) - **snowflake**: annotate types for OBJECT_AGG *(PR [#6265](https://github.com/tobymao/sqlglot/pull/6265) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
453
|
+
- [`3dae0fb`](https://github.com/tobymao/sqlglot/commit/3dae0fbb528762e5d5fd446350d42e9c841e2959) - **duckdb**: Support position and occurrence args for REGEXP_EXTRACT *(PR [#6266](https://github.com/tobymao/sqlglot/pull/6266) by [@vchan](https://github.com/vchan))*
|
|
454
|
+
- [`dba0414`](https://github.com/tobymao/sqlglot/commit/dba04145c4bcda8c55890b4d7173dd6c0a64c37e) - **clickhouse**: Parse toStartOfxxx into exp.TimestampTrunc *(PR [#6268](https://github.com/tobymao/sqlglot/pull/6268) by [@joeyutong](https://github.com/joeyutong))*
|
|
455
|
+
- [`d959ad0`](https://github.com/tobymao/sqlglot/commit/d959ad02140d692483a63b67d69d2a5d49954ea3) - transpile DuckDB exclusive end RANGE to SEQUENCE *(PR [#6270](https://github.com/tobymao/sqlglot/pull/6270) by [@georgesittas](https://github.com/georgesittas))*
|
|
456
|
+
- :arrow_lower_right: *addresses issue [#6267](https://github.com/tobymao/sqlglot/issues/6267) opened by [@joeyutong](https://github.com/joeyutong)*
|
|
457
|
+
- [`771732d`](https://github.com/tobymao/sqlglot/commit/771732d81459cc576f11eccc49794f33e62d14af) - **snowflake**: annotate types for REGR_AVGY *(PR [#6271](https://github.com/tobymao/sqlglot/pull/6271) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
458
|
+
- [`8470be0`](https://github.com/tobymao/sqlglot/commit/8470be00731a4d79518a533a5f7ba884fa2f047e) - **snowflake**: add type annotation for BITMAP_COUNT function. *(PR [#6274](https://github.com/tobymao/sqlglot/pull/6274) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
459
|
+
- [`98f25f9`](https://github.com/tobymao/sqlglot/commit/98f25f92cc1175ac7b2118a5a342db82adade13a) - **clickhouse**: support splitBy function *(PR [#6278](https://github.com/tobymao/sqlglot/pull/6278) by [@joeyutong](https://github.com/joeyutong))*
|
|
460
|
+
- [`fabbf05`](https://github.com/tobymao/sqlglot/commit/fabbf057aba88f30205767d8c339727de45991c8) - **duckDB**: Add support for shorthand struct array literals in duckDB. *(PR [#6233](https://github.com/tobymao/sqlglot/pull/6233) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
461
|
+
- [`a909fde`](https://github.com/tobymao/sqlglot/commit/a909fde068919823dc4cccc2655af48e4290137a) - **duckdb**: Add support for CREATE MACRO *(PR [#6292](https://github.com/tobymao/sqlglot/pull/6292) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
462
|
+
- :arrow_lower_right: *addresses issue [#6290](https://github.com/tobymao/sqlglot/issues/6290) opened by [@francescomucio](https://github.com/francescomucio)*
|
|
463
|
+
- [`11989be`](https://github.com/tobymao/sqlglot/commit/11989be34153ccdedeab3ab18ccf735f86e8b822) - add more expressions with positional meta *(PR [#6289](https://github.com/tobymao/sqlglot/pull/6289) by [@tobymao](https://github.com/tobymao))*
|
|
464
|
+
- [`87651a6`](https://github.com/tobymao/sqlglot/commit/87651a671db2fe6162f06e2dcdef0b98e229bea5) - semantic facts closes [#6287](https://github.com/tobymao/sqlglot/pull/6287) *(PR [#6288](https://github.com/tobymao/sqlglot/pull/6288) by [@tobymao](https://github.com/tobymao))*
|
|
465
|
+
- [`9c1a222`](https://github.com/tobymao/sqlglot/commit/9c1a2221b0327ba6848542c7b906e92f25a05bea) - **snowflake**: add type annotation for BITMAP_CONSTRUCT_AGG function. *(PR [#6285](https://github.com/tobymao/sqlglot/pull/6285) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
466
|
+
- [`358105d`](https://github.com/tobymao/sqlglot/commit/358105d1296c7425e071ccf3189a31a02c00c923) - **snowflake**: type annotation for BITMAP_BIT_POSITION function *(PR [#6301](https://github.com/tobymao/sqlglot/pull/6301) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
467
|
+
- [`4ee7a50`](https://github.com/tobymao/sqlglot/commit/4ee7a500cc460b6f6a1ed103a12dca72e6d01c18) - **snowflake**: type inference for BITMAP_OR_AGG *(PR [#6297](https://github.com/tobymao/sqlglot/pull/6297) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
468
|
+
- [`fcd537d`](https://github.com/tobymao/sqlglot/commit/fcd537de2c993ad0bd18acd84dbae354165f7d3f) - **snowflake**: conflict resolution. type annotation for BITMAP_BUCKET_NUMBER function. Tests added all dialects that support BITMAP_BUCKET_NUMBER *(PR [#6299](https://github.com/tobymao/sqlglot/pull/6299) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
469
|
+
- [`3dffd59`](https://github.com/tobymao/sqlglot/commit/3dffd598496a9f2d94caec9d7f3dcb9791c94019) - **snowflake**: annotate types for PERCENTILE_DISC and WithinGroup *(PR [#6300](https://github.com/tobymao/sqlglot/pull/6300) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
470
|
+
- [`6ce3cd7`](https://github.com/tobymao/sqlglot/commit/6ce3cd7de958d9f3773579ab22ae6cbbcb56ceb0) - **sqlite**: support binary `MATCH` operator closes [#6305](https://github.com/tobymao/sqlglot/pull/6305) *(PR [#6306](https://github.com/tobymao/sqlglot/pull/6306) by [@georgesittas](https://github.com/georgesittas))*
|
|
471
|
+
- [`e903883`](https://github.com/tobymao/sqlglot/commit/e90388328fcf5b8061c99e325b87d5beb0046ffc) - **snowflake**: type annotation for APPROX_TOP_K_ACCUMULATE functio… *(PR [#6309](https://github.com/tobymao/sqlglot/pull/6309) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
472
|
+
- [`afc0242`](https://github.com/tobymao/sqlglot/commit/afc0242c564f8de53e11865c2fba43fb36df0694) - **duckDB**: Cast inputs (BLOB → VARCHAR) for duckDB STARTS_WITH *(PR [#6240](https://github.com/tobymao/sqlglot/pull/6240) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
473
|
+
- [`d170bbd`](https://github.com/tobymao/sqlglot/commit/d170bbde800a0308aaf8c81e59152c65be312155) - **duckdb**: transpile bigquery's `BYTES` variant of `REPLACE` *(PR [#6312](https://github.com/tobymao/sqlglot/pull/6312) by [@toriwei](https://github.com/toriwei))*
|
|
474
|
+
- [`d3fefad`](https://github.com/tobymao/sqlglot/commit/d3fefad80d25ff5a6dd02426667ff0ea8478a1b2) - **tsql**: support `DATEDIFF_BIG` *(PR [#6323](https://github.com/tobymao/sqlglot/pull/6323) by [@lBilali](https://github.com/lBilali))*
|
|
475
|
+
- [`21d1468`](https://github.com/tobymao/sqlglot/commit/21d1468377b9c8ad48c6cca1ae3b3744a807c29e) - **optimizer**: annotate type for APPROX_TOP_K *(PR [#6286](https://github.com/tobymao/sqlglot/pull/6286) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
476
|
+
- [`93b4039`](https://github.com/tobymao/sqlglot/commit/93b4039f957f3eefbaaed2cb147bfa8c8c2a304e) - **duckdb**: preserve time zone and timestamp in DATE_TRUNC() *(PR [#6318](https://github.com/tobymao/sqlglot/pull/6318) by [@toriwei](https://github.com/toriwei))*
|
|
477
|
+
- [`b71990f`](https://github.com/tobymao/sqlglot/commit/b71990f528d55c845f5771bfc4c5f6098eb97ad7) - **duckdb**: Add transpilation support for ANY_VALUE function with HAVING MAX and MIN clauses *(PR [#6325](https://github.com/tobymao/sqlglot/pull/6325) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
478
|
+
- [`64c0d55`](https://github.com/tobymao/sqlglot/commit/64c0d554207ad40bcd6a93c20d15020752a5929d) - **sqlite**: support indexed table clause closes [#6331](https://github.com/tobymao/sqlglot/pull/6331) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
479
|
+
- [`6725217`](https://github.com/tobymao/sqlglot/commit/6725217d4058b5202006576bdf6ff4ec7230a9b9) - **sqlite**: support `NOT NULL` operator closes [#6334](https://github.com/tobymao/sqlglot/pull/6334) closes [#6335](https://github.com/tobymao/sqlglot/pull/6335) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
480
|
+
|
|
481
|
+
### :bug: Bug Fixes
|
|
482
|
+
- [`e7ddad1`](https://github.com/tobymao/sqlglot/commit/e7ddad10b5edf9b801d2151e3e5fca448754df0d) - **optimizer**: ensure `NULL` coerces into any type *(PR [#6211](https://github.com/tobymao/sqlglot/pull/6211) by [@fivetran-ashashankar](https://github.com/fivetran-ashashankar))*
|
|
483
|
+
- [`4c4189b`](https://github.com/tobymao/sqlglot/commit/4c4189b4083d272a6e678d83b5c567a2e9c0d672) - Transpile CONCAT function to double pipe operators when source … *(PR [#6241](https://github.com/tobymao/sqlglot/pull/6241) by [@vchan](https://github.com/vchan))*
|
|
484
|
+
- [`fc78d20`](https://github.com/tobymao/sqlglot/commit/fc78d2016d8f7d20c094df791f746de323cd3639) - **parser**: Unwrap subqueries without modifiers *(PR [#6247](https://github.com/tobymao/sqlglot/pull/6247) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
485
|
+
- :arrow_lower_right: *fixes issue [#6237](https://github.com/tobymao/sqlglot/issues/6237) opened by [@preet-sheth](https://github.com/preet-sheth)*
|
|
486
|
+
- [`7ad4c17`](https://github.com/tobymao/sqlglot/commit/7ad4c177fbf8dda78aa8de1ca112f606b2fd5456) - **databricks**: Support table names in FROM STREAM *(PR [#6259](https://github.com/tobymao/sqlglot/pull/6259) by [@roveo](https://github.com/roveo))*
|
|
487
|
+
- [`00abc39`](https://github.com/tobymao/sqlglot/commit/00abc393c9042e839457c5a6582e95cdb74356f3) - **generator**: handle casting for bytestrings *(PR [#6252](https://github.com/tobymao/sqlglot/pull/6252) by [@toriwei](https://github.com/toriwei))*
|
|
488
|
+
- [`bcf2eac`](https://github.com/tobymao/sqlglot/commit/bcf2eace0baf1d85047841f36cb5c0082c61b29c) - **duckdb**: map int8 to bigint instead of tinyint fixes [#6269](https://github.com/tobymao/sqlglot/pull/6269) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
489
|
+
- [`ddea61d`](https://github.com/tobymao/sqlglot/commit/ddea61d83f6699c97cc7b25aabe01a138138bdb1) - **optimizer**: simplify connector complements only for non-null operands *(PR [#6214](https://github.com/tobymao/sqlglot/pull/6214) by [@geooo109](https://github.com/geooo109))*
|
|
490
|
+
- :arrow_lower_right: *fixes issue [#6213](https://github.com/tobymao/sqlglot/issues/6213) opened by [@geooo109](https://github.com/geooo109)*
|
|
491
|
+
- [`e17320e`](https://github.com/tobymao/sqlglot/commit/e17320ee3bdd0ef541d616c447b4973d12780dae) - Handle edge cases in for DuckDB RANGE to Spark SEQUENCE transpilation *(PR [#6276](https://github.com/tobymao/sqlglot/pull/6276) by [@joeyutong](https://github.com/joeyutong))*
|
|
492
|
+
- [`33b6218`](https://github.com/tobymao/sqlglot/commit/33b62183a15cdedf0b1ebd96fcb856afbe8879a0) - sqlsecurityproperty parseerror *(PR [#6280](https://github.com/tobymao/sqlglot/pull/6280) by [@ds-cbo](https://github.com/ds-cbo))*
|
|
493
|
+
- :arrow_lower_right: *fixes issue [#6279](https://github.com/tobymao/sqlglot/issues/6279) opened by [@ds-cbo](https://github.com/ds-cbo)*
|
|
494
|
+
- [`c02b64c`](https://github.com/tobymao/sqlglot/commit/c02b64c3524dd074c2108baaca668ab2607ac843) - **optimizer**: Handle pseudocolumns differently than columns *(PR [#6273](https://github.com/tobymao/sqlglot/pull/6273) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
495
|
+
- :arrow_lower_right: *fixes issue [#6256](https://github.com/tobymao/sqlglot/issues/6256) opened by [@azilya](https://github.com/azilya)*
|
|
496
|
+
- [`05c5181`](https://github.com/tobymao/sqlglot/commit/05c5181b36a7ada32b96fc91bdfbf73b38a1a408) - **optimizer**: refactor `Connector` simplification to factor in types *(PR [#6152](https://github.com/tobymao/sqlglot/pull/6152) by [@geooo109](https://github.com/geooo109))*
|
|
497
|
+
- :arrow_lower_right: *fixes issue [#6137](https://github.com/tobymao/sqlglot/issues/6137) opened by [@dllggyx](https://github.com/dllggyx)*
|
|
498
|
+
- [`cb0bcff`](https://github.com/tobymao/sqlglot/commit/cb0bcff310e9acdf806fc98e99cb9938b747c771) - **duckdb**: cast UUID() output to varchar when source dialect UUID() returns string *(PR [#6284](https://github.com/tobymao/sqlglot/pull/6284) by [@toriwei](https://github.com/toriwei))*
|
|
499
|
+
- [`f9287f7`](https://github.com/tobymao/sqlglot/commit/f9287f7d596a6d8a1e1cd2c48978a4dec77a96cb) - **optimizer**: robust deduplication of connectors *(PR [#6296](https://github.com/tobymao/sqlglot/pull/6296) by [@geooo109](https://github.com/geooo109))*
|
|
500
|
+
- :arrow_lower_right: *fixes issue [#6182](https://github.com/tobymao/sqlglot/issues/6182) opened by [@dllggyx](https://github.com/dllggyx)*
|
|
501
|
+
- [`ea0ea79`](https://github.com/tobymao/sqlglot/commit/ea0ea79c1c611b62c79f82f744fe0c98803598a3) - **clickhouse**: Parse `LIKE` functions *(PR [#6314](https://github.com/tobymao/sqlglot/pull/6314) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
502
|
+
- :arrow_lower_right: *fixes issue [#6313](https://github.com/tobymao/sqlglot/issues/6313) opened by [@CainYang](https://github.com/CainYang)*
|
|
503
|
+
- [`bbd4c90`](https://github.com/tobymao/sqlglot/commit/bbd4c901a9550beb363758e6be1e1877d4e56f2c) - **sqlite**: support IS with identifier as RHS *(PR [#6316](https://github.com/tobymao/sqlglot/pull/6316) by [@geooo109](https://github.com/geooo109))*
|
|
504
|
+
- :arrow_lower_right: *fixes issue [#6315](https://github.com/tobymao/sqlglot/issues/6315) opened by [@VLDB2026](https://github.com/VLDB2026)*
|
|
505
|
+
- [`65d213a`](https://github.com/tobymao/sqlglot/commit/65d213a7662962d4226368590508fbf61675c055) - **dialect**: fix typo from millenium to millennium [#6321](https://github.com/tobymao/sqlglot/pull/6321) *(commit by [@lBilali](https://github.com/lBilali))*
|
|
506
|
+
- [`c9d1615`](https://github.com/tobymao/sqlglot/commit/c9d16150a408a41daf704d2d0b0ebfce57425b81) - **tsql**: map iso_week with the correct python directive from strftime *(PR [#6322](https://github.com/tobymao/sqlglot/pull/6322) by [@lBilali](https://github.com/lBilali))*
|
|
507
|
+
- [`85ddcc5`](https://github.com/tobymao/sqlglot/commit/85ddcc5eca22ac726582de454f2f12b9d4877634) - **bigquery**: Do not normalize JSON fields in dot notation *(PR [#6320](https://github.com/tobymao/sqlglot/pull/6320) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
508
|
+
- [`933e981`](https://github.com/tobymao/sqlglot/commit/933e98102fb39d24ae0350da13337d981287130a) - **optimizer**: more robust NULL reduction *(PR [#6327](https://github.com/tobymao/sqlglot/pull/6327) by [@geooo109](https://github.com/geooo109))*
|
|
509
|
+
- [`e1c6d57`](https://github.com/tobymao/sqlglot/commit/e1c6d5716f80eb24b6d0a9c93e187a8c9f05e555) - **parser**: improve between .. preceding .. following parser fixes [#6332](https://github.com/tobymao/sqlglot/pull/6332) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
510
|
+
- [`65706e8`](https://github.com/tobymao/sqlglot/commit/65706e8c7edeb7de674d427718eac181df206dc9) - avoid full traversal for pushdown_cte_alias_columns *(commit by [@tobymao](https://github.com/tobymao))*
|
|
511
|
+
- [`c81258e`](https://github.com/tobymao/sqlglot/commit/c81258e9c26f637f6f8520051c159685c8b1cb7e) - **parser**: allow using OVER token as unquoted identifier *(PR [#6338](https://github.com/tobymao/sqlglot/pull/6338) by [@georgesittas](https://github.com/georgesittas))*
|
|
512
|
+
- :arrow_lower_right: *fixes issue [#6337](https://github.com/tobymao/sqlglot/issues/6337) opened by [@VLDB2026](https://github.com/VLDB2026)*
|
|
513
|
+
- [`73abfac`](https://github.com/tobymao/sqlglot/commit/73abfac4cec27350754c942be71175fa7bdfd1d0) - **redshift**: do not inherit postgres `ROUND` generator closes [#6340](https://github.com/tobymao/sqlglot/pull/6340) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
514
|
+
|
|
515
|
+
### :recycle: Refactors
|
|
516
|
+
- [`9c98fc2`](https://github.com/tobymao/sqlglot/commit/9c98fc2b39fef2bd052b60ba4e15a4b93fd66c00) - **optimizer**: avoid extra copy in simplify *(commit by [@geooo109](https://github.com/geooo109))*
|
|
517
|
+
- [`43985fb`](https://github.com/tobymao/sqlglot/commit/43985fbcb9edea088119951c5c245a9606cf92ae) - **snowflake**: remove redundant tests for ANY_VALUE *(commit by [@geooo109](https://github.com/geooo109))*
|
|
518
|
+
- [`bf7b032`](https://github.com/tobymao/sqlglot/commit/bf7b032baae0c0fd112054a7bed6fa2f56f32890) - clean up struct name inheritance *(PR [#6295](https://github.com/tobymao/sqlglot/pull/6295) by [@georgesittas](https://github.com/georgesittas))*
|
|
519
|
+
- [`49e0f43`](https://github.com/tobymao/sqlglot/commit/49e0f43ba19739575987f2e9c52c2061a6f59717) - extra test for spark approx_top_k_accumulate *(commit by [@geooo109](https://github.com/geooo109))*
|
|
520
|
+
|
|
521
|
+
### :wrench: Chores
|
|
522
|
+
- [`d7be4a5`](https://github.com/tobymao/sqlglot/commit/d7be4a5da3dca6bcc44230b2a176c8b17b81c46e) - **optimizer**: add annotation test for COALESCE *(PR [#6210](https://github.com/tobymao/sqlglot/pull/6210) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
523
|
+
- [`8aa7356`](https://github.com/tobymao/sqlglot/commit/8aa7356ab8adee26193086754ca1a1805957d944) - **optimizer**: add annotation tests for IFF *(PR [#6215](https://github.com/tobymao/sqlglot/pull/6215) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
524
|
+
- [`160a1b9`](https://github.com/tobymao/sqlglot/commit/160a1b90f4ce39a2fce6f7f0e9e854d974fed053) - **optimizer**: mixed type annotation test for sf IFNULL *(commit by [@geooo109](https://github.com/geooo109))*
|
|
525
|
+
- [`893ad2a`](https://github.com/tobymao/sqlglot/commit/893ad2a5b1a28339ccc65c85ac813506e6ad56f1) - **optimizer**: add annotation tests for NULLIF *(PR [#6221](https://github.com/tobymao/sqlglot/pull/6221) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
526
|
+
- [`78d7733`](https://github.com/tobymao/sqlglot/commit/78d77335819d1796fa3989ef072d3f8fd4b83559) - remove redundant or term for unknown in annotate_types *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
527
|
+
- [`b202f3a`](https://github.com/tobymao/sqlglot/commit/b202f3ad64e88a47e52c45e32c9e4faae6c8ac45) - **optimizer**: add test for BITXOR *(PR [#6223](https://github.com/tobymao/sqlglot/pull/6223) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
528
|
+
- [`b20f2e8`](https://github.com/tobymao/sqlglot/commit/b20f2e88d86038f1a98f4b97b5a2ae0b86652e33) - **optimizer**: add test for BITSHIFTLEFT *(PR [#6227](https://github.com/tobymao/sqlglot/pull/6227) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
529
|
+
- [`7f93e85`](https://github.com/tobymao/sqlglot/commit/7f93e8551b00cc32014236a07c8794bd7a3a2b91) - **optimizer**: add annotation tests for BITSHIFTRIGHT *(PR [#6228](https://github.com/tobymao/sqlglot/pull/6228) by [@fivetran-felixhuang](https://github.com/fivetran-felixhuang))*
|
|
530
|
+
- [`fcf017c`](https://github.com/tobymao/sqlglot/commit/fcf017cfb95923fea8ae5669340713a326f4f306) - rename `EXPRESSION_SPEC` to `EXPRESSION_METADATA` *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
531
|
+
- [`55bc9e4`](https://github.com/tobymao/sqlglot/commit/55bc9e4019f8ef8d7e571256d7b0e07b30d9240c) - remove predicate/connector/not from typing metadata *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
532
|
+
- [`349ab29`](https://github.com/tobymao/sqlglot/commit/349ab29aa84fb087388b6a1494fea70273a4a560) - **optimizer**: add annotation test for BOOLAND_OR *(PR [#6260](https://github.com/tobymao/sqlglot/pull/6260) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
533
|
+
- [`75ec424`](https://github.com/tobymao/sqlglot/commit/75ec424667b95462bb1750a251a5096da0d5161b) - **optimizer**: add annotation test for BOOLAND_AGG *(PR [#6257](https://github.com/tobymao/sqlglot/pull/6257) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
534
|
+
- [`bb574aa`](https://github.com/tobymao/sqlglot/commit/bb574aa0cf0a8c0b92f9af7ef3dfddb7de725a8b) - **optimizer**: add annotation test for ARRAY_AGG *(PR [#6264](https://github.com/tobymao/sqlglot/pull/6264) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
535
|
+
- [`a95c5cc`](https://github.com/tobymao/sqlglot/commit/a95c5ccf411dc4d28ef9c19fb03bd8a3615d7c4b) - **optimizer**: add nonnull clickhouse column test case *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
536
|
+
- [`6d6c689`](https://github.com/tobymao/sqlglot/commit/6d6c68915ca699da7cb707675aece963df97f80b) - **optimizer**: add annotation tests for ANY_VALUE *(PR [#6275](https://github.com/tobymao/sqlglot/pull/6275) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
537
|
+
- [`2459f88`](https://github.com/tobymao/sqlglot/commit/2459f8832ae398aa1381025724a4286f7f5e3e9d) - Follow up of 6280 *(PR [#6281](https://github.com/tobymao/sqlglot/pull/6281) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
538
|
+
- [`a7d33d0`](https://github.com/tobymao/sqlglot/commit/a7d33d0e190fc5c9f23a1ab43082ac017d20fd18) - **optimizer**: add annotation tests for APPROX_PERCENTILE *(PR [#6283](https://github.com/tobymao/sqlglot/pull/6283) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
539
|
+
- [`1b2d139`](https://github.com/tobymao/sqlglot/commit/1b2d139d3338c7053dee333914323236a2d15d97) - **optimizer**: add type annotation tests with window for sf APPROX_PERCENTILE *(commit by [@geooo109](https://github.com/geooo109))*
|
|
540
|
+
- [`d059648`](https://github.com/tobymao/sqlglot/commit/d05964851c99553ba06e318bbbda39f9851120db) - **optimizer**: add annotation tests for APPROX_COUNT_DISTINCT *(PR [#6282](https://github.com/tobymao/sqlglot/pull/6282) by [@fivetran-MichaelLee](https://github.com/fivetran-MichaelLee))*
|
|
541
|
+
- [`6bd59ac`](https://github.com/tobymao/sqlglot/commit/6bd59acf2288da5bfe6151c5adf6f2a63792dc1e) - Follow up of PR 6288 *(PR [#6293](https://github.com/tobymao/sqlglot/pull/6293) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
542
|
+
- [`546fd2a`](https://github.com/tobymao/sqlglot/commit/546fd2a2588f7b385bdbb9e39490bd6a422283ca) - Remove dead line in qualify_columns *(PR [#6304](https://github.com/tobymao/sqlglot/pull/6304) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
543
|
+
- [`ac7ac19`](https://github.com/tobymao/sqlglot/commit/ac7ac198a3b915e63ba8a055e9a0193c3dd3e26a) - **exasol**: Implement ODBC date time literals in Exasol Sqlglot *(PR [#6311](https://github.com/tobymao/sqlglot/pull/6311) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
544
|
+
- [`8d1d25c`](https://github.com/tobymao/sqlglot/commit/8d1d25c6de7ad03c50e3efe892d16d16329d8ee9) - **exasol**: Implement local qualifier for-aliases, in GROUP BY, WHERE AND HAVING clause in exasol dialect *(PR [#6277](https://github.com/tobymao/sqlglot/pull/6277) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
545
|
+
- [`509b0aa`](https://github.com/tobymao/sqlglot/commit/509b0aaada0e27542864771ba14777d398b6cee0) - **exasol**: Implement day_of_week function *(PR [#6319](https://github.com/tobymao/sqlglot/pull/6319) by [@nnamdi16](https://github.com/nnamdi16))*
|
|
546
|
+
|
|
547
|
+
|
|
4
548
|
## [v27.29.0] - 2025-10-29
|
|
5
549
|
### :boom: BREAKING CHANGES
|
|
6
550
|
- due to [`5242cdd`](https://github.com/tobymao/sqlglot/commit/5242cddf487e367e7f543ca19d9bccae858f36ac) - annotate type for bq LENGTH *(commit by [@geooo109](https://github.com/geooo109))*:
|
|
@@ -8170,3 +8714,5 @@ Changelog
|
|
|
8170
8714
|
[v27.27.0]: https://github.com/tobymao/sqlglot/compare/v27.26.0...v27.27.0
|
|
8171
8715
|
[v27.28.0]: https://github.com/tobymao/sqlglot/compare/v27.27.0...v27.28.0
|
|
8172
8716
|
[v27.29.0]: https://github.com/tobymao/sqlglot/compare/v27.28.1...v27.29.0
|
|
8717
|
+
[v28.0.0]: https://github.com/tobymao/sqlglot/compare/v27.29.0...v28.0.0
|
|
8718
|
+
[v28.1.0]: https://github.com/tobymao/sqlglot/compare/v28.0.0...v28.1.0
|