sqlglot 30.13.0__tar.gz → 30.15.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-30.13.0 → sqlglot-30.15.0}/.gitignore +6 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/CHANGELOG.md +430 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/CONTRIBUTING.md +8 -0
- {sqlglot-30.13.0/sqlglot.egg-info → sqlglot-30.15.0}/PKG-INFO +36 -28
- {sqlglot-30.13.0 → sqlglot-30.15.0}/README.md +33 -25
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/_version.py +3 -3
- sqlglot-30.15.0/sqlglot/anonymize.py +307 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/bigquery.py +0 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/clickhouse.py +0 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/dialect.py +63 -7
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/dremio.py +0 -6
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/duckdb.py +0 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/hive.py +6 -7
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/materialize.py +2 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/mysql.py +0 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/postgres.py +3 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/redshift.py +2 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/risingwave.py +2 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/snowflake.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/spark.py +10 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/spark2.py +10 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/starrocks.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/trino.py +4 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/tsql.py +3 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/executor/env.py +52 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/executor/python.py +109 -31
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/array.py +4 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/core.py +1 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/datatypes.py +12 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/ddl.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/dml.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/math.py +8 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/properties.py +9 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/query.py +20 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/string.py +4 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/temporal.py +1 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generator.py +86 -31
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/bigquery.py +7 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/clickhouse.py +29 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/doris.py +7 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/duckdb.py +124 -26
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/exasol.py +9 -4
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/fabric.py +2 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/hive.py +24 -13
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/mysql.py +21 -30
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/oracle.py +2 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/postgres.py +15 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/python.py +7 -5
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/singlestore.py +3 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/spark2.py +7 -23
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/sqlite.py +2 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/starrocks.py +7 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/trino.py +16 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/tsql.py +9 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/jsonpath.py +4 -4
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/annotate_types.py +101 -82
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/canonicalize_internal_names.py +21 -7
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/eliminate_ctes.py +6 -1
- sqlglot-30.15.0/sqlglot/optimizer/journal.py +32 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/merge_subqueries.py +86 -62
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/pushdown_predicates.py +20 -6
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/pushdown_projections.py +10 -5
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/qualify.py +1 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/qualify_columns.py +137 -26
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/qualify_tables.py +2 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/scope.py +1 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/simplify.py +75 -26
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/unnest_subqueries.py +13 -4
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parser.py +183 -43
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/bigquery.py +33 -19
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/clickhouse.py +56 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/dremio.py +6 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/duckdb.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/mysql.py +16 -6
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/spark.py +0 -1
- sqlglot-30.15.0/sqlglot/parsers/trino.py +158 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/tsql.py +16 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/planner.py +3 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/schema.py +2 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/tokenizer_core.py +0 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/tokens.py +0 -4
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/transforms.py +17 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/databricks.py +8 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/duckdb.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/hive.py +2 -0
- sqlglot-30.15.0/sqlglot/typing/mysql.py +162 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/spark.py +18 -6
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/spark2.py +7 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0/sqlglot.egg-info}/PKG-INFO +36 -28
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot.egg-info/SOURCES.txt +3 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot.egg-info/requires.txt +2 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot.egg-info/scm_file_list.json +323 -320
- sqlglot-30.15.0/sqlglot.egg-info/scm_version.json +8 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglotc/setup.py +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_bigquery.py +220 -11
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_clickhouse.py +48 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_databricks.py +15 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_dialect.py +15 -5
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_doris.py +3 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_duckdb.py +16 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_hive.py +4 -4
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_mysql.py +20 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_oracle.py +31 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_postgres.py +54 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_presto.py +7 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_singlestore.py +1 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_snowflake.py +34 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_spark.py +47 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_starrocks.py +11 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_trino.py +128 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_tsql.py +40 -3
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/identity.sql +1 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/annotate_functions.sql +272 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/canonicalize_internal_names.sql +28 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/merge_subqueries.sql +12 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/pushdown_predicates.sql +20 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/pushdown_projections.sql +2 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/qualify_columns.sql +107 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/qualify_columns__invalid.sql +3 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/simplify.sql +152 -19
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/unnest_subqueries.sql +12 -0
- sqlglot-30.15.0/tests/test_anonymize.py +514 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_executor.py +147 -1
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_jsonpath.py +11 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_optimizer.py +250 -2
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_parser.py +14 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_time.py +9 -8
- sqlglot-30.13.0/sqlglot/parsers/trino.py +0 -63
- sqlglot-30.13.0/sqlglot/typing/mysql.py +0 -79
- sqlglot-30.13.0/sqlglot.egg-info/scm_version.json +0 -8
- {sqlglot-30.13.0 → sqlglot-30.15.0}/.gitmodules +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/.gitpod.yml +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/.pre-commit-config.yaml +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/AGENTS.md +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/CLAUDE.md +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/LICENSE +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/MANIFEST.in +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/Makefile +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/pyproject.toml +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/setup.cfg +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/setup.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/__main__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/_typing.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/athena.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/databricks.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/dax.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/doris.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/drill.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/druid.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/dune.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/exasol.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/fabric.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/oracle.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/presto.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/prql.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/singlestore.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/solr.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/sqlite.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/tableau.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/dialects/teradata.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/diff.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/errors.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/executor/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/executor/context.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/executor/table.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/aggregate.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/builders.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/constraints.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/functions.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/expressions/json.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/athena.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/databricks.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/dax.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/dremio.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/drill.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/druid.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/dune.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/materialize.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/presto.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/prql.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/redshift.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/risingwave.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/snowflake.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/solr.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/spark.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/tableau.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/generators/teradata.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/helper.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/lineage.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/canonicalize.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/eliminate_joins.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/isolate_table_selects.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/normalize.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/normalize_identifiers.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/optimize_joins.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/optimizer.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/optimizer/resolver.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/athena.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/base.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/databricks.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/dax.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/doris.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/drill.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/druid.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/dune.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/exasol.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/fabric.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/hive.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/materialize.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/oracle.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/postgres.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/presto.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/prql.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/redshift.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/risingwave.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/singlestore.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/snowflake.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/solr.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/spark2.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/sqlite.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/starrocks.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/tableau.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/parsers/teradata.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/py.typed +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/serde.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/time.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/trie.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/bigquery.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/clickhouse.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/postgres.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/presto.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/redshift.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/snowflake.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot/typing/tsql.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot.egg-info/dependency_links.txt +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot.egg-info/top_level.txt +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglot.png +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglotc/MANIFEST.in +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/sqlglotc/pyproject.toml +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_athena.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_dax.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_dremio.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_drill.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_druid.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_dune.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_exasol.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_fabric.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_materialize.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_pipe_syntax.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_prql.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_redshift.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_risingwave.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_solr.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_sqlite.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_tableau.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/dialects/test_teradata.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/jsonpath/LICENSE +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/jsonpath/cts.json +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/annotate_types.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/canonicalize.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/normalize.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/optimizer.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/partial.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/fixtures/pretty.sql +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/gen_fixtures.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/helpers.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/leakcheck.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/sqlglot/__init__.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_build.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_dialect_entry_points.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_dialect_imports.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_diff.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_docs.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_errors.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_expressions.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_generator.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_helper.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_integration_loader.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_lineage.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_schema.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_serde.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_tokens.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_transforms.py +0 -0
- {sqlglot-30.13.0 → sqlglot-30.15.0}/tests/test_transpile.py +0 -0
|
@@ -1,6 +1,434 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## [v30.14.0] - 2026-07-27
|
|
5
|
+
### :boom: BREAKING CHANGES
|
|
6
|
+
- due to [`a715f9f`](https://github.com/tobymao/sqlglot/commit/a715f9f9aa1ba640f558c7602af9a63fc35d8697) - type annotation for databricks NANVL, SIGN, SHIFTLEFT, SIGNUM, SHUFFLE *(PR [#7896](https://github.com/tobymao/sqlglot/pull/7896) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
7
|
+
|
|
8
|
+
type annotation for databricks NANVL, SIGN, SHIFTLEFT, SIGNUM, SHUFFLE (#7896)
|
|
9
|
+
|
|
10
|
+
- due to [`acb635a`](https://github.com/tobymao/sqlglot/commit/acb635a9d5a1e2bdcd4d18e44a63830f10583240) - don't normalize quoted derived output aliases in qualify_outputs *(PR [#7921](https://github.com/tobymao/sqlglot/pull/7921) by [@georgesittas](https://github.com/georgesittas))*:
|
|
11
|
+
|
|
12
|
+
don't normalize quoted derived output aliases in qualify_outputs (#7921)
|
|
13
|
+
|
|
14
|
+
- due to [`c090f35`](https://github.com/tobymao/sqlglot/commit/c090f35c8625d5bb1371a1c0c75ba434f4df6b95) - dedupe colliding star expanded aliases *(PR [#7872](https://github.com/tobymao/sqlglot/pull/7872) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
15
|
+
|
|
16
|
+
dedupe colliding star expanded aliases (#7872)
|
|
17
|
+
|
|
18
|
+
- due to [`1b442c9`](https://github.com/tobymao/sqlglot/commit/1b442c97deafa067733ff0590f7a612e66ae8aed) - handle non-literal star ILIKE patterns and Snowflake backslash escapes *(PR [#7918](https://github.com/tobymao/sqlglot/pull/7918) by [@georgesittas](https://github.com/georgesittas))*:
|
|
19
|
+
|
|
20
|
+
handle non-literal star ILIKE patterns and Snowflake backslash escapes (#7918)
|
|
21
|
+
|
|
22
|
+
- due to [`66316e3`](https://github.com/tobymao/sqlglot/commit/66316e335fd617d2f3ab8c412ae7a87356431c97) - parse single-digit hour/minute/second without padding CLAUDE *(PR [#7925](https://github.com/tobymao/sqlglot/pull/7925) by [@deepyaman](https://github.com/deepyaman))*:
|
|
23
|
+
|
|
24
|
+
parse single-digit hour/minute/second without padding CLAUDE (#7925)
|
|
25
|
+
|
|
26
|
+
- due to [`c75b7b6`](https://github.com/tobymao/sqlglot/commit/c75b7b610e182fedba20758853d227b81bc1cb34) - annotate unhex for duckdb *(PR [#7930](https://github.com/tobymao/sqlglot/pull/7930) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
27
|
+
|
|
28
|
+
annotate unhex for duckdb (#7930)
|
|
29
|
+
|
|
30
|
+
- due to [`88c4b4a`](https://github.com/tobymao/sqlglot/commit/88c4b4a6f0372978f8ec58c872f0a7f26570bfe3) - parse and annotate duckdb FROM_HEX *(PR [#7931](https://github.com/tobymao/sqlglot/pull/7931) by [@geooo109](https://github.com/geooo109))*:
|
|
31
|
+
|
|
32
|
+
parse and annotate duckdb FROM_HEX (#7931)
|
|
33
|
+
|
|
34
|
+
- due to [`a7725f2`](https://github.com/tobymao/sqlglot/commit/a7725f2a1944bc853deddf8acec29a01946615dd) - annotate convert_tz for mysql *(PR [#7932](https://github.com/tobymao/sqlglot/pull/7932) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
35
|
+
|
|
36
|
+
annotate convert_tz for mysql (#7932)
|
|
37
|
+
|
|
38
|
+
- due to [`85e0b7c`](https://github.com/tobymao/sqlglot/commit/85e0b7c89f3009fe4fbde381df30a1931a975fb4) - annotate UTC_DATE for MySQL *(PR [#7935](https://github.com/tobymao/sqlglot/pull/7935) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
39
|
+
|
|
40
|
+
annotate UTC_DATE for MySQL (#7935)
|
|
41
|
+
|
|
42
|
+
- due to [`7fbb14f`](https://github.com/tobymao/sqlglot/commit/7fbb14f804e601598f3b398276e9d07b9a2d6dbc) - annotate utc_time for mysql *(PR [#7936](https://github.com/tobymao/sqlglot/pull/7936) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
43
|
+
|
|
44
|
+
annotate utc_time for mysql (#7936)
|
|
45
|
+
|
|
46
|
+
- due to [`212fe55`](https://github.com/tobymao/sqlglot/commit/212fe552375e5ef8432a5ed0dd107278075922e8) - annotate utc_timestamp for mysql *(PR [#7937](https://github.com/tobymao/sqlglot/pull/7937) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
47
|
+
|
|
48
|
+
annotate utc_timestamp for mysql (#7937)
|
|
49
|
+
|
|
50
|
+
- due to [`166cd4d`](https://github.com/tobymao/sqlglot/commit/166cd4de90e272c89f14eb7d04d2989d75ef6742) - annotate substringindex for mysql *(PR [#7945](https://github.com/tobymao/sqlglot/pull/7945) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
51
|
+
|
|
52
|
+
annotate substringindex for mysql (#7945)
|
|
53
|
+
|
|
54
|
+
- due to [`26078eb`](https://github.com/tobymao/sqlglot/commit/26078eb7ca56645521fe6f9d60da67d7e9f7e82b) - annotate unhex for mysql *(PR [#7944](https://github.com/tobymao/sqlglot/pull/7944) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
55
|
+
|
|
56
|
+
annotate unhex for mysql (#7944)
|
|
57
|
+
|
|
58
|
+
- due to [`33de21f`](https://github.com/tobymao/sqlglot/commit/33de21fc21cdc05755a2de39318b292c10ccec0f) - annotate regexpsubstr for mysql *(PR [#7946](https://github.com/tobymao/sqlglot/pull/7946) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
59
|
+
|
|
60
|
+
annotate regexpsubstr for mysql (#7946)
|
|
61
|
+
|
|
62
|
+
- due to [`2aae7f7`](https://github.com/tobymao/sqlglot/commit/2aae7f7605ed38fe0950d004cb9defc1dd9621e5) - preserve x IS NOT NULL instead of normalizing to NOT x IS NULL *(PR [#7938](https://github.com/tobymao/sqlglot/pull/7938) by [@geooo109](https://github.com/geooo109))*:
|
|
63
|
+
|
|
64
|
+
preserve x IS NOT NULL instead of normalizing to NOT x IS NULL (#7938)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### :sparkles: New Features
|
|
68
|
+
- [`c402094`](https://github.com/tobymao/sqlglot/commit/c4020942b711eb0f5c8a182ff580b31541aed07f) - **duckdb**: transpile BigQuery ARRAY_CONCAT_AGG to DuckDB *(PR [#7891](https://github.com/tobymao/sqlglot/pull/7891) by [@sirockin](https://github.com/sirockin))*
|
|
69
|
+
- [`8be76d2`](https://github.com/tobymao/sqlglot/commit/8be76d20a133ee818cffd52e04366fdc74d6a89e) - **duckdb**: convert ARRAY_AGG IGNORE NULLS to FILTER clause *(PR [#7893](https://github.com/tobymao/sqlglot/pull/7893) by [@sirockin](https://github.com/sirockin))*
|
|
70
|
+
- [`a715f9f`](https://github.com/tobymao/sqlglot/commit/a715f9f9aa1ba640f558c7602af9a63fc35d8697) - **optimizer**: type annotation for databricks NANVL, SIGN, SHIFTLEFT, SIGNUM, SHUFFLE *(PR [#7896](https://github.com/tobymao/sqlglot/pull/7896) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
71
|
+
- [`ee5a989`](https://github.com/tobymao/sqlglot/commit/ee5a989cd5b756c10068837887f34ffe8606ce7f) - **mysql**: support INSERT ... SET ... syntax closes [#7927](https://github.com/tobymao/sqlglot/pull/7927) *(PR [#7929](https://github.com/tobymao/sqlglot/pull/7929) by [@georgesittas](https://github.com/georgesittas))*
|
|
72
|
+
- :arrow_lower_right: *addresses issue [#7927](https://github.com/tobymao/sqlglot/issues/7927) opened by [@samerdokas](https://github.com/samerdokas)*
|
|
73
|
+
- [`c75b7b6`](https://github.com/tobymao/sqlglot/commit/c75b7b610e182fedba20758853d227b81bc1cb34) - **optimizer**: annotate unhex for duckdb *(PR [#7930](https://github.com/tobymao/sqlglot/pull/7930) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
74
|
+
- [`88c4b4a`](https://github.com/tobymao/sqlglot/commit/88c4b4a6f0372978f8ec58c872f0a7f26570bfe3) - **optimizer**: parse and annotate duckdb FROM_HEX *(PR [#7931](https://github.com/tobymao/sqlglot/pull/7931) by [@geooo109](https://github.com/geooo109))*
|
|
75
|
+
- [`3cd3e58`](https://github.com/tobymao/sqlglot/commit/3cd3e58e10dcdf941f14765889641a5974e550ae) - **duckdb**: transpile BigQuery IN UNNEST(array) to ARRAY_CONTAINS *(PR [#7892](https://github.com/tobymao/sqlglot/pull/7892) by [@sirockin](https://github.com/sirockin))*
|
|
76
|
+
- [`a7725f2`](https://github.com/tobymao/sqlglot/commit/a7725f2a1944bc853deddf8acec29a01946615dd) - **optimizer**: annotate convert_tz for mysql *(PR [#7932](https://github.com/tobymao/sqlglot/pull/7932) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
77
|
+
- [`85e0b7c`](https://github.com/tobymao/sqlglot/commit/85e0b7c89f3009fe4fbde381df30a1931a975fb4) - **optimizer**: annotate UTC_DATE for MySQL *(PR [#7935](https://github.com/tobymao/sqlglot/pull/7935) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
78
|
+
- [`7fbb14f`](https://github.com/tobymao/sqlglot/commit/7fbb14f804e601598f3b398276e9d07b9a2d6dbc) - **optimizer**: annotate utc_time for mysql *(PR [#7936](https://github.com/tobymao/sqlglot/pull/7936) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
79
|
+
- [`212fe55`](https://github.com/tobymao/sqlglot/commit/212fe552375e5ef8432a5ed0dd107278075922e8) - **optimizer**: annotate utc_timestamp for mysql *(PR [#7937](https://github.com/tobymao/sqlglot/pull/7937) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
80
|
+
- [`6bb78c9`](https://github.com/tobymao/sqlglot/commit/6bb78c9aa8982b1c69378f797f02c8f248af97b4) - **snowflake**: add support for input => select ... kwarg syntax *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
81
|
+
- [`166cd4d`](https://github.com/tobymao/sqlglot/commit/166cd4de90e272c89f14eb7d04d2989d75ef6742) - **optimizer**: annotate substringindex for mysql *(PR [#7945](https://github.com/tobymao/sqlglot/pull/7945) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
82
|
+
- [`26078eb`](https://github.com/tobymao/sqlglot/commit/26078eb7ca56645521fe6f9d60da67d7e9f7e82b) - **optimizer**: annotate unhex for mysql *(PR [#7944](https://github.com/tobymao/sqlglot/pull/7944) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
83
|
+
- [`33de21f`](https://github.com/tobymao/sqlglot/commit/33de21fc21cdc05755a2de39318b292c10ccec0f) - **optimizer**: annotate regexpsubstr for mysql *(PR [#7946](https://github.com/tobymao/sqlglot/pull/7946) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
84
|
+
- [`2aae7f7`](https://github.com/tobymao/sqlglot/commit/2aae7f7605ed38fe0950d004cb9defc1dd9621e5) - **postgres**: preserve x IS NOT NULL instead of normalizing to NOT x IS NULL *(PR [#7938](https://github.com/tobymao/sqlglot/pull/7938) by [@geooo109](https://github.com/geooo109))*
|
|
85
|
+
- :arrow_lower_right: *addresses issue [#7909](https://github.com/tobymao/sqlglot/issues/7909) opened by [@tonywasson](https://github.com/tonywasson)*
|
|
86
|
+
|
|
87
|
+
### :bug: Bug Fixes
|
|
88
|
+
- [`c368c5e`](https://github.com/tobymao/sqlglot/commit/c368c5eb2d84133a18f38ff98946b112c81f060d) - **duckdb**: handle ORDER BY and LIMIT for bq ARRAY_CONCAT_AGG *(PR [#7920](https://github.com/tobymao/sqlglot/pull/7920) by [@geooo109](https://github.com/geooo109))*
|
|
89
|
+
- [`acb635a`](https://github.com/tobymao/sqlglot/commit/acb635a9d5a1e2bdcd4d18e44a63830f10583240) - **optimizer**: don't normalize quoted derived output aliases in qualify_outputs *(PR [#7921](https://github.com/tobymao/sqlglot/pull/7921) by [@georgesittas](https://github.com/georgesittas))*
|
|
90
|
+
- :arrow_lower_right: *fixes issue [#7919](https://github.com/tobymao/sqlglot/issues/7919) opened by [@baruchoxman](https://github.com/baruchoxman)*
|
|
91
|
+
- [`c090f35`](https://github.com/tobymao/sqlglot/commit/c090f35c8625d5bb1371a1c0c75ba434f4df6b95) - **optimizer**: dedupe colliding star expanded aliases *(PR [#7872](https://github.com/tobymao/sqlglot/pull/7872) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
92
|
+
- [`1b442c9`](https://github.com/tobymao/sqlglot/commit/1b442c97deafa067733ff0590f7a612e66ae8aed) - handle non-literal star ILIKE patterns and Snowflake backslash escapes *(PR [#7918](https://github.com/tobymao/sqlglot/pull/7918) by [@georgesittas](https://github.com/georgesittas))*
|
|
93
|
+
- [`66316e3`](https://github.com/tobymao/sqlglot/commit/66316e335fd617d2f3ab8c412ae7a87356431c97) - **hive**: parse single-digit hour/minute/second without padding CLAUDE *(PR [#7925](https://github.com/tobymao/sqlglot/pull/7925) by [@deepyaman](https://github.com/deepyaman))*
|
|
94
|
+
- [`e265dca`](https://github.com/tobymao/sqlglot/commit/e265dcafd6a28bdfb43a6491777b433b49a1ebd7) - **optimizer**: canonicalize unaliased scalar subquery projections *(PR [#7928](https://github.com/tobymao/sqlglot/pull/7928) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
95
|
+
- [`b0a8635`](https://github.com/tobymao/sqlglot/commit/b0a8635ff3fcd769743c4848651497cce6acee19) - **parser**: treat `TokenType.OUT` as an identifier token *(PR [#7933](https://github.com/tobymao/sqlglot/pull/7933) by [@georgesittas](https://github.com/georgesittas))*
|
|
96
|
+
- [`ba0bff3`](https://github.com/tobymao/sqlglot/commit/ba0bff3d9164217f06cfcf9fadbdfd35ae84eefe) - **jsonpath**: preserve falsey union members *(PR [#7957](https://github.com/tobymao/sqlglot/pull/7957) by [@dev-willbird1936](https://github.com/dev-willbird1936))*
|
|
97
|
+
- :arrow_lower_right: *fixes issue [#7956](https://github.com/tobymao/sqlglot/issues/7956) opened by [@dev-willbird1936](https://github.com/dev-willbird1936)*
|
|
98
|
+
- [`b9fd4c9`](https://github.com/tobymao/sqlglot/commit/b9fd4c9a5d3e5aa4ccc5dff395cbde3227f18e5a) - **typing**: on_qualify expects a `Table` argument *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
99
|
+
|
|
100
|
+
### :zap: Performance Improvements
|
|
101
|
+
- [`1a38c05`](https://github.com/tobymao/sqlglot/commit/1a38c056a1f47cfc07c9bef4ed11b795a91f947e) - **optimizer**: speed up merge_subqueries *(PR [#7924](https://github.com/tobymao/sqlglot/pull/7924) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
102
|
+
- [`b8180fd`](https://github.com/tobymao/sqlglot/commit/b8180fdb8c2617b7e51e1c9491a76cae852eb87b) - **optimizer**: speed up merge_subqueries *(PR [#7924](https://github.com/tobymao/sqlglot/pull/7924) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
103
|
+
|
|
104
|
+
### :wrench: Chores
|
|
105
|
+
- [`cda0147`](https://github.com/tobymao/sqlglot/commit/cda0147754257779c4c103d617c04d2deb6979b9) - **generator**: refactor ARRAY_AGG tests and bq -> duckdb transpilation *(PR [#7922](https://github.com/tobymao/sqlglot/pull/7922) by [@geooo109](https://github.com/geooo109))*
|
|
106
|
+
- [`f37d1b5`](https://github.com/tobymao/sqlglot/commit/f37d1b5d6305ff293f7b1757ce1253c3299d8e88) - **duckdb**: refactor transpilation of IN UNNEST *(commit by [@geooo109](https://github.com/geooo109))*
|
|
107
|
+
- [`296d8b0`](https://github.com/tobymao/sqlglot/commit/296d8b02e7f7b4d0634194ed367ac3ce49a03714) - polish README file *(PR [#7947](https://github.com/tobymao/sqlglot/pull/7947) by [@georgesittas](https://github.com/georgesittas))*
|
|
108
|
+
- [`29c651b`](https://github.com/tobymao/sqlglot/commit/29c651b85309693924b8c034501e6a2733d14588) - retrigger v30.14.0 release *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
## [v30.13.0] - 2026-07-20
|
|
112
|
+
### :boom: BREAKING CHANGES
|
|
113
|
+
- due to [`58f5bf9`](https://github.com/tobymao/sqlglot/commit/58f5bf9b40dda34784bcb2d3bf0a04f02490de12) - databricks type annotation for REGEXP_COUNT, REGEXP_EXTRACT_ALL *(PR [#7797](https://github.com/tobymao/sqlglot/pull/7797) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
114
|
+
|
|
115
|
+
databricks type annotation for REGEXP_COUNT, REGEXP_EXTRACT_ALL (#7797)
|
|
116
|
+
|
|
117
|
+
- due to [`fd6d4d6`](https://github.com/tobymao/sqlglot/commit/fd6d4d61c25e7918118fc22c5579098a86a58e10) - annotate repeat function *(PR [#7803](https://github.com/tobymao/sqlglot/pull/7803) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
118
|
+
|
|
119
|
+
annotate repeat function (#7803)
|
|
120
|
+
|
|
121
|
+
- due to [`93802ce`](https://github.com/tobymao/sqlglot/commit/93802ce4d0c8c0b960be6b7b84785fa3556c0310) - annotate type for REGEXP_REPLACE hive chain *(PR [#7804](https://github.com/tobymao/sqlglot/pull/7804) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*:
|
|
122
|
+
|
|
123
|
+
annotate type for REGEXP_REPLACE hive chain (#7804)
|
|
124
|
+
|
|
125
|
+
- due to [`cbc9206`](https://github.com/tobymao/sqlglot/commit/cbc9206e0603ffa7d0e2e72c0bf84ebc77cdb8e5) - annotate `to_json` for hive-like dialects *(PR [#7814](https://github.com/tobymao/sqlglot/pull/7814) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*:
|
|
126
|
+
|
|
127
|
+
annotate `to_json` for hive-like dialects (#7814)
|
|
128
|
+
|
|
129
|
+
- due to [`85fea2c`](https://github.com/tobymao/sqlglot/commit/85fea2cf4375de4fd99c5d036d8ccfac2965a753) - more robust date formats *(PR [#7813](https://github.com/tobymao/sqlglot/pull/7813) by [@geooo109](https://github.com/geooo109))*:
|
|
130
|
+
|
|
131
|
+
more robust date formats (#7813)
|
|
132
|
+
|
|
133
|
+
- due to [`abdac97`](https://github.com/tobymao/sqlglot/commit/abdac971b68f0914801bda4784860c04258a22e8) - annotate str_to_map for hive-like dialects *(PR [#7822](https://github.com/tobymao/sqlglot/pull/7822) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*:
|
|
134
|
+
|
|
135
|
+
annotate str_to_map for hive-like dialects (#7822)
|
|
136
|
+
|
|
137
|
+
- due to [`79d1061`](https://github.com/tobymao/sqlglot/commit/79d1061ca838101ec6baaf399a8e7fd3410df926) - add databricks type inference for REGEXP_INSTR, REGEXP_LIKE, REGEXP_SUBSTR, REGR_AVGX *(PR [#7815](https://github.com/tobymao/sqlglot/pull/7815) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
138
|
+
|
|
139
|
+
add databricks type inference for REGEXP_INSTR, REGEXP_LIKE, REGEXP_SUBSTR, REGR_AVGX (#7815)
|
|
140
|
+
|
|
141
|
+
- due to [`aeb2711`](https://github.com/tobymao/sqlglot/commit/aeb2711f3be05bdcfa39a5e7479a0bedb0ca03f7) - parse regexp extract (and variants) correctly *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
|
142
|
+
|
|
143
|
+
parse regexp extract (and variants) correctly
|
|
144
|
+
|
|
145
|
+
- due to [`b29ef61`](https://github.com/tobymao/sqlglot/commit/b29ef618b5db539f7bd4685e49b72ea08730daa5) - true/null in t.true/null should be identifiers *(PR [#7831](https://github.com/tobymao/sqlglot/pull/7831) by [@georgesittas](https://github.com/georgesittas))*:
|
|
146
|
+
|
|
147
|
+
true/null in t.true/null should be identifiers (#7831)
|
|
148
|
+
|
|
149
|
+
- due to [`a5ab08b`](https://github.com/tobymao/sqlglot/commit/a5ab08bbbbed61567913eda8a95ccc6094036027) - preserve SHA256/SHA512 digest semantics, render SHA2 as hex string *(PR [#7824](https://github.com/tobymao/sqlglot/pull/7824) by [@Pawansingh3889](https://github.com/Pawansingh3889))*:
|
|
150
|
+
|
|
151
|
+
preserve SHA256/SHA512 digest semantics, render SHA2 as hex string (#7824)
|
|
152
|
+
|
|
153
|
+
- due to [`e9b0140`](https://github.com/tobymao/sqlglot/commit/e9b014074b47ddb85aca93fac43d431e28add9f1) - normalization of synthesized output aliases *(PR [#7816](https://github.com/tobymao/sqlglot/pull/7816) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
154
|
+
|
|
155
|
+
normalization of synthesized output aliases (#7816)
|
|
156
|
+
|
|
157
|
+
- due to [`94e82ff`](https://github.com/tobymao/sqlglot/commit/94e82ffa116660838f11073395ecf9b3ecc6662a) - map native SHA512 to SHA2Digest, mirroring SHA256 *(PR [#7832](https://github.com/tobymao/sqlglot/pull/7832) by [@Pawansingh3889](https://github.com/Pawansingh3889))*:
|
|
158
|
+
|
|
159
|
+
map native SHA512 to SHA2Digest, mirroring SHA256 (#7832)
|
|
160
|
+
|
|
161
|
+
- due to [`c2fac5d`](https://github.com/tobymao/sqlglot/commit/c2fac5dd987118a04633f36e8bd0de5447ff694a) - annotate insert for mysql *(PR [#7836](https://github.com/tobymao/sqlglot/pull/7836) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
162
|
+
|
|
163
|
+
annotate insert for mysql (#7836)
|
|
164
|
+
|
|
165
|
+
- due to [`f37c71e`](https://github.com/tobymao/sqlglot/commit/f37c71e762321625350f16c1c358e12e28fa6380) - use a dedicated token for PROJECTION closes [#7837](https://github.com/tobymao/sqlglot/pull/7837) *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
|
166
|
+
|
|
167
|
+
use a dedicated token for PROJECTION closes #7837
|
|
168
|
+
|
|
169
|
+
- due to [`0ce4063`](https://github.com/tobymao/sqlglot/commit/0ce4063ae9c2de1e05e4597d08b5e546c5d2a43c) - annotate hex for mysql *(PR [#7841](https://github.com/tobymao/sqlglot/pull/7841) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
170
|
+
|
|
171
|
+
annotate hex for mysql (#7841)
|
|
172
|
+
|
|
173
|
+
- due to [`da55602`](https://github.com/tobymao/sqlglot/commit/da55602dea6e70de54c500d072a0bff5ecfb3d6d) - delimited text incorrectly consumed by _match_texts, _match_text_seq *(PR [#7843](https://github.com/tobymao/sqlglot/pull/7843) by [@georgesittas](https://github.com/georgesittas))*:
|
|
174
|
+
|
|
175
|
+
delimited text incorrectly consumed by _match_texts, _match_text_seq (#7843)
|
|
176
|
+
|
|
177
|
+
- due to [`77c7814`](https://github.com/tobymao/sqlglot/commit/77c78147fc6a83bd4126c247c149df7205424010) - annotate type for databricks REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE *(PR [#7820](https://github.com/tobymao/sqlglot/pull/7820) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
178
|
+
|
|
179
|
+
annotate type for databricks REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE (#7820)
|
|
180
|
+
|
|
181
|
+
- due to [`ab77e9f`](https://github.com/tobymao/sqlglot/commit/ab77e9f0d78e945324bcbb857780a728378cc2d7) - annotate lpad for mysql *(PR [#7846](https://github.com/tobymao/sqlglot/pull/7846) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
182
|
+
|
|
183
|
+
annotate lpad for mysql (#7846)
|
|
184
|
+
|
|
185
|
+
- due to [`93d1659`](https://github.com/tobymao/sqlglot/commit/93d16591dbde9f548b3693f8a48ef2c73e8ff983) - annotate left for mysql *(PR [#7848](https://github.com/tobymao/sqlglot/pull/7848) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
186
|
+
|
|
187
|
+
annotate left for mysql (#7848)
|
|
188
|
+
|
|
189
|
+
- due to [`122b44f`](https://github.com/tobymao/sqlglot/commit/122b44f5836bd21a1bae5df3a388d397df180ca5) - merge window issue *(PR [#7845](https://github.com/tobymao/sqlglot/pull/7845) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
190
|
+
|
|
191
|
+
merge window issue (#7845)
|
|
192
|
+
|
|
193
|
+
- due to [`3ec3506`](https://github.com/tobymao/sqlglot/commit/3ec35068e1b54f338ebf6585cb1f8eab8c7a12eb) - annotate localtimestamp for mysql *(PR [#7850](https://github.com/tobymao/sqlglot/pull/7850) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
194
|
+
|
|
195
|
+
annotate localtimestamp for mysql (#7850)
|
|
196
|
+
|
|
197
|
+
- due to [`fdb1b86`](https://github.com/tobymao/sqlglot/commit/fdb1b86bcd86a79175d5a459a80e4d15785e8472) - annotate format for mysql *(PR [#7858](https://github.com/tobymao/sqlglot/pull/7858) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
198
|
+
|
|
199
|
+
annotate format for mysql (#7858)
|
|
200
|
+
|
|
201
|
+
- due to [`88a0143`](https://github.com/tobymao/sqlglot/commit/88a0143e486e78d273e5b760b022909f25f3bbbb) - annotate corr for clickhouse *(PR [#7860](https://github.com/tobymao/sqlglot/pull/7860) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
202
|
+
|
|
203
|
+
annotate corr for clickhouse (#7860)
|
|
204
|
+
|
|
205
|
+
- due to [`c2e935f`](https://github.com/tobymao/sqlglot/commit/c2e935f2fbe75f94a671187f3aa68710c210ce70) - preserve leading zeros in subsecond_precision *(PR [#7854](https://github.com/tobymao/sqlglot/pull/7854) by [@c-tonneslan](https://github.com/c-tonneslan))*:
|
|
206
|
+
|
|
207
|
+
preserve leading zeros in subsecond_precision (#7854)
|
|
208
|
+
|
|
209
|
+
- due to [`70c0a18`](https://github.com/tobymao/sqlglot/commit/70c0a18927a49df5a3df68c41ed45431922526f5) - `merge_subqueries` issue with numeric literal `ORDER BY` *(PR [#7856](https://github.com/tobymao/sqlglot/pull/7856) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
210
|
+
|
|
211
|
+
`merge_subqueries` issue with numeric literal `ORDER BY` (#7856)
|
|
212
|
+
|
|
213
|
+
- due to [`adb29c7`](https://github.com/tobymao/sqlglot/commit/adb29c73c5631992dfe903a379d5698aded073aa) - annotate minute for mysql *(PR [#7863](https://github.com/tobymao/sqlglot/pull/7863) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
214
|
+
|
|
215
|
+
annotate minute for mysql (#7863)
|
|
216
|
+
|
|
217
|
+
- due to [`79fb3af`](https://github.com/tobymao/sqlglot/commit/79fb3afaf644a540cd6dae567b2e4d4580db9131) - annotate right for mysql *(PR [#7862](https://github.com/tobymao/sqlglot/pull/7862) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
218
|
+
|
|
219
|
+
annotate right for mysql (#7862)
|
|
220
|
+
|
|
221
|
+
- due to [`21ebde8`](https://github.com/tobymao/sqlglot/commit/21ebde8eb11b324b2d8459a6bcc77e6db4ad6ea1) - type annotation for databricks REGR_SXX, REGR_SXY, REGR_SYY *(PR [#7851](https://github.com/tobymao/sqlglot/pull/7851) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
222
|
+
|
|
223
|
+
type annotation for databricks REGR_SXX, REGR_SXY, REGR_SYY (#7851)
|
|
224
|
+
|
|
225
|
+
- due to [`26123c1`](https://github.com/tobymao/sqlglot/commit/26123c1a1b05b5d1e469313b41a591bae833b326) - incorrect handling of negated (i)like operator closes [#7866](https://github.com/tobymao/sqlglot/pull/7866) *(PR [#7867](https://github.com/tobymao/sqlglot/pull/7867) by [@georgesittas](https://github.com/georgesittas))*:
|
|
226
|
+
|
|
227
|
+
incorrect handling of negated (i)like operator closes #7866 (#7867)
|
|
228
|
+
|
|
229
|
+
- due to [`e17ab30`](https://github.com/tobymao/sqlglot/commit/e17ab302340feee60b097b1732f91f5d3d348875) - evict mutated projections from the annotator cache *(PR [#7868](https://github.com/tobymao/sqlglot/pull/7868) by [@georgesittas](https://github.com/georgesittas))*:
|
|
230
|
+
|
|
231
|
+
evict mutated projections from the annotator cache (#7868)
|
|
232
|
+
|
|
233
|
+
- due to [`8c7941f`](https://github.com/tobymao/sqlglot/commit/8c7941fb1e87f2b6fb4ea50477c73f86311d591d) - handle escaped quote before closing multi-char delimiter, preserve escapes in raw strings *(PR [#7870](https://github.com/tobymao/sqlglot/pull/7870) by [@georgesittas](https://github.com/georgesittas))*:
|
|
234
|
+
|
|
235
|
+
handle escaped quote before closing multi-char delimiter, preserve escapes in raw strings (#7870)
|
|
236
|
+
|
|
237
|
+
- due to [`f617f30`](https://github.com/tobymao/sqlglot/commit/f617f30cc4dea9c35f867ca6462279f1e04b642b) - type annotation for databricks RINT *(PR [#7869](https://github.com/tobymao/sqlglot/pull/7869) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
238
|
+
|
|
239
|
+
type annotation for databricks RINT (#7869)
|
|
240
|
+
|
|
241
|
+
- due to [`a62c4d9`](https://github.com/tobymao/sqlglot/commit/a62c4d9aa562ff02776199c070296bd1d952c025) - annotate reverse for mysql *(PR [#7861](https://github.com/tobymao/sqlglot/pull/7861) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
242
|
+
|
|
243
|
+
annotate reverse for mysql (#7861)
|
|
244
|
+
|
|
245
|
+
- due to [`6581f8c`](https://github.com/tobymao/sqlglot/commit/6581f8c38b8d4812b6a4287b51aa971f81458470) - parse month/day without leading 0 *(PR [#7773](https://github.com/tobymao/sqlglot/pull/7773) by [@deepyaman](https://github.com/deepyaman))*:
|
|
246
|
+
|
|
247
|
+
parse month/day without leading 0 (#7773)
|
|
248
|
+
|
|
249
|
+
- due to [`0a374bf`](https://github.com/tobymao/sqlglot/commit/0a374bf421f874d4c0618a2c710aaca14086c74f) - simplify lax/strict %m, %d transpilation to hive hierarchy *(PR [#7873](https://github.com/tobymao/sqlglot/pull/7873) by [@georgesittas](https://github.com/georgesittas))*:
|
|
250
|
+
|
|
251
|
+
simplify lax/strict %m, %d transpilation to hive hierarchy (#7873)
|
|
252
|
+
|
|
253
|
+
- due to [`559b2c1`](https://github.com/tobymao/sqlglot/commit/559b2c1e0dfb3be5c816d9d7976615023753f4ad) - transpile `DATEDIFF` with day from MySQL correctly *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
|
254
|
+
|
|
255
|
+
transpile `DATEDIFF` with day from MySQL correctly
|
|
256
|
+
|
|
257
|
+
- due to [`91a284b`](https://github.com/tobymao/sqlglot/commit/91a284b7c55f11cf7454b405a6458ea39379e7ff) - parse camelCase dateTrunc, not just date_trunc [CLAUDE] *(PR [#7876](https://github.com/tobymao/sqlglot/pull/7876) by [@chuenchen309](https://github.com/chuenchen309))*:
|
|
258
|
+
|
|
259
|
+
parse camelCase dateTrunc, not just date_trunc [CLAUDE] (#7876)
|
|
260
|
+
|
|
261
|
+
- due to [`5e08bb9`](https://github.com/tobymao/sqlglot/commit/5e08bb934c3441a97e908594a045cae6b8c65904) - preserve UNPIVOT IN-list literal labels [CLAUDE] *(PR [#7877](https://github.com/tobymao/sqlglot/pull/7877) by [@chuenchen309](https://github.com/chuenchen309))*:
|
|
262
|
+
|
|
263
|
+
preserve UNPIVOT IN-list literal labels [CLAUDE] (#7877)
|
|
264
|
+
|
|
265
|
+
- due to [`618804c`](https://github.com/tobymao/sqlglot/commit/618804ce12b09b563147a31c37734725928f34c6) - resolve NATURAL JOIN common columns in qualify [CLAUDE] *(PR [#7880](https://github.com/tobymao/sqlglot/pull/7880) by [@chuenchen309](https://github.com/chuenchen309))*:
|
|
266
|
+
|
|
267
|
+
resolve NATURAL JOIN common columns in qualify [CLAUDE] (#7880)
|
|
268
|
+
|
|
269
|
+
- due to [`72a125e`](https://github.com/tobymao/sqlglot/commit/72a125e101a199e72d24498c8211cafba552ef05) - type annotation for databricks RTRIM, SEARCH *(PR [#7886](https://github.com/tobymao/sqlglot/pull/7886) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
270
|
+
|
|
271
|
+
type annotation for databricks RTRIM, SEARCH (#7886)
|
|
272
|
+
|
|
273
|
+
- due to [`2f9c628`](https://github.com/tobymao/sqlglot/commit/2f9c6280b7942f130aca5c70b45e732a5e904f13) - improve generator of FILTER() *(PR [#7889](https://github.com/tobymao/sqlglot/pull/7889) by [@georgesittas](https://github.com/georgesittas))*:
|
|
274
|
+
|
|
275
|
+
improve generator of FILTER() (#7889)
|
|
276
|
+
|
|
277
|
+
- due to [`a85eeff`](https://github.com/tobymao/sqlglot/commit/a85eeff2124af1279e6979c970a6d1ae175adb07) - properly support VALUES as a set operation operand *(PR [#7897](https://github.com/tobymao/sqlglot/pull/7897) by [@georgesittas](https://github.com/georgesittas))*:
|
|
278
|
+
|
|
279
|
+
properly support VALUES as a set operation operand (#7897)
|
|
280
|
+
|
|
281
|
+
- due to [`812294b`](https://github.com/tobymao/sqlglot/commit/812294bfce534f3a70c9db4b275178c05e36a786) - annotate decode for duckdb *(PR [#7910](https://github.com/tobymao/sqlglot/pull/7910) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
282
|
+
|
|
283
|
+
annotate decode for duckdb (#7910)
|
|
284
|
+
|
|
285
|
+
- due to [`ae702b1`](https://github.com/tobymao/sqlglot/commit/ae702b184d6b67beaa3cc7adfcf8a82da7a306b2) - don't push predicates into a subquery with LIMIT/OFFSET [CLAUDE] *(PR [#7901](https://github.com/tobymao/sqlglot/pull/7901) by [@chuenchen309](https://github.com/chuenchen309))*:
|
|
286
|
+
|
|
287
|
+
don't push predicates into a subquery with LIMIT/OFFSET [CLAUDE] (#7901)
|
|
288
|
+
|
|
289
|
+
- due to [`199547a`](https://github.com/tobymao/sqlglot/commit/199547a5304449f2f4b061e15caf63dc52964704) - keep columns a recursive CTE reads from itself [CLAUDE] *(PR [#7899](https://github.com/tobymao/sqlglot/pull/7899) by [@isaka1022](https://github.com/isaka1022))*:
|
|
290
|
+
|
|
291
|
+
keep columns a recursive CTE reads from itself [CLAUDE] (#7899)
|
|
292
|
+
|
|
293
|
+
- due to [`24d6d73`](https://github.com/tobymao/sqlglot/commit/24d6d735c1ae3607ee3a0f29fe87f41e1ea64d74) - respect date part boundary semantics in DATE_DIFF transpilation *(PR [#7911](https://github.com/tobymao/sqlglot/pull/7911) by [@georgesittas](https://github.com/georgesittas))*:
|
|
294
|
+
|
|
295
|
+
respect date part boundary semantics in DATE_DIFF transpilation (#7911)
|
|
296
|
+
|
|
297
|
+
- due to [`da43c5c`](https://github.com/tobymao/sqlglot/commit/da43c5c14d196faa03e2e4d0fcc110d08ee58ef1) - annotate truncate for mysql *(PR [#7914](https://github.com/tobymao/sqlglot/pull/7914) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
298
|
+
|
|
299
|
+
annotate truncate for mysql (#7914)
|
|
300
|
+
|
|
301
|
+
- due to [`b110593`](https://github.com/tobymao/sqlglot/commit/b1105933ba90fb9cb6dfc2c60bbf090f4c742b89) - annotate encode for duckdb *(PR [#7915](https://github.com/tobymao/sqlglot/pull/7915) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
302
|
+
|
|
303
|
+
annotate encode for duckdb (#7915)
|
|
304
|
+
|
|
305
|
+
- due to [`755e95e`](https://github.com/tobymao/sqlglot/commit/755e95e48f82f4abfacd3812f9c2371cc2ad1d3d) - preserve `ILIKE` roundtrip *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
|
306
|
+
|
|
307
|
+
preserve `ILIKE` roundtrip
|
|
308
|
+
|
|
309
|
+
- due to [`c933fe3`](https://github.com/tobymao/sqlglot/commit/c933fe330472ae216786eff3837bcc5233ab6d08) - canonicalize numeric-literal GROUP BY to positional ordinal on merge *(PR [#7883](https://github.com/tobymao/sqlglot/pull/7883) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
310
|
+
|
|
311
|
+
canonicalize numeric-literal GROUP BY to positional ordinal on merge (#7883)
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
### :sparkles: New Features
|
|
315
|
+
- [`58f5bf9`](https://github.com/tobymao/sqlglot/commit/58f5bf9b40dda34784bcb2d3bf0a04f02490de12) - **optimizer**: databricks type annotation for REGEXP_COUNT, REGEXP_EXTRACT_ALL *(PR [#7797](https://github.com/tobymao/sqlglot/pull/7797) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
316
|
+
- [`fd6d4d6`](https://github.com/tobymao/sqlglot/commit/fd6d4d61c25e7918118fc22c5579098a86a58e10) - **optimizer**: annotate repeat function *(PR [#7803](https://github.com/tobymao/sqlglot/pull/7803) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
317
|
+
- [`cbc9206`](https://github.com/tobymao/sqlglot/commit/cbc9206e0603ffa7d0e2e72c0bf84ebc77cdb8e5) - **optimizer**: annotate `to_json` for hive-like dialects *(PR [#7814](https://github.com/tobymao/sqlglot/pull/7814) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*
|
|
318
|
+
- [`abdac97`](https://github.com/tobymao/sqlglot/commit/abdac971b68f0914801bda4784860c04258a22e8) - **typing**: annotate str_to_map for hive-like dialects *(PR [#7822](https://github.com/tobymao/sqlglot/pull/7822) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*
|
|
319
|
+
- [`79d1061`](https://github.com/tobymao/sqlglot/commit/79d1061ca838101ec6baaf399a8e7fd3410df926) - **typing**: add databricks type inference for REGEXP_INSTR, REGEXP_LIKE, REGEXP_SUBSTR, REGR_AVGX *(PR [#7815](https://github.com/tobymao/sqlglot/pull/7815) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
320
|
+
- [`c2fac5d`](https://github.com/tobymao/sqlglot/commit/c2fac5dd987118a04633f36e8bd0de5447ff694a) - **optimizer**: annotate insert for mysql *(PR [#7836](https://github.com/tobymao/sqlglot/pull/7836) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
321
|
+
- [`ce1aab9`](https://github.com/tobymao/sqlglot/commit/ce1aab9f5fbee6207017ff5f429e2663154f0446) - **duckdb**: transpile snowflake count_if all-null semantics closes [#7833](https://github.com/tobymao/sqlglot/pull/7833) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
322
|
+
- [`0ce4063`](https://github.com/tobymao/sqlglot/commit/0ce4063ae9c2de1e05e4597d08b5e546c5d2a43c) - **optimizer**: annotate hex for mysql *(PR [#7841](https://github.com/tobymao/sqlglot/pull/7841) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
323
|
+
- [`ab77e9f`](https://github.com/tobymao/sqlglot/commit/ab77e9f0d78e945324bcbb857780a728378cc2d7) - **optimizer**: annotate lpad for mysql *(PR [#7846](https://github.com/tobymao/sqlglot/pull/7846) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
324
|
+
- [`93d1659`](https://github.com/tobymao/sqlglot/commit/93d16591dbde9f548b3693f8a48ef2c73e8ff983) - **optimizer**: annotate left for mysql *(PR [#7848](https://github.com/tobymao/sqlglot/pull/7848) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
325
|
+
- [`3ec3506`](https://github.com/tobymao/sqlglot/commit/3ec35068e1b54f338ebf6585cb1f8eab8c7a12eb) - **optimizer**: annotate localtimestamp for mysql *(PR [#7850](https://github.com/tobymao/sqlglot/pull/7850) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
326
|
+
- [`fdb1b86`](https://github.com/tobymao/sqlglot/commit/fdb1b86bcd86a79175d5a459a80e4d15785e8472) - **optimizer**: annotate format for mysql *(PR [#7858](https://github.com/tobymao/sqlglot/pull/7858) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
327
|
+
- [`88a0143`](https://github.com/tobymao/sqlglot/commit/88a0143e486e78d273e5b760b022909f25f3bbbb) - **optimizer**: annotate corr for clickhouse *(PR [#7860](https://github.com/tobymao/sqlglot/pull/7860) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
328
|
+
- [`adb29c7`](https://github.com/tobymao/sqlglot/commit/adb29c73c5631992dfe903a379d5698aded073aa) - **optimizer**: annotate minute for mysql *(PR [#7863](https://github.com/tobymao/sqlglot/pull/7863) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
329
|
+
- [`79fb3af`](https://github.com/tobymao/sqlglot/commit/79fb3afaf644a540cd6dae567b2e4d4580db9131) - **optimizer**: annotate right for mysql *(PR [#7862](https://github.com/tobymao/sqlglot/pull/7862) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
330
|
+
- [`21ebde8`](https://github.com/tobymao/sqlglot/commit/21ebde8eb11b324b2d8459a6bcc77e6db4ad6ea1) - **optimizer**: type annotation for databricks REGR_SXX, REGR_SXY, REGR_SYY *(PR [#7851](https://github.com/tobymao/sqlglot/pull/7851) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
331
|
+
- [`f617f30`](https://github.com/tobymao/sqlglot/commit/f617f30cc4dea9c35f867ca6462279f1e04b642b) - **optimizer**: type annotation for databricks RINT *(PR [#7869](https://github.com/tobymao/sqlglot/pull/7869) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
332
|
+
- [`a62c4d9`](https://github.com/tobymao/sqlglot/commit/a62c4d9aa562ff02776199c070296bd1d952c025) - **optimizer**: annotate reverse for mysql *(PR [#7861](https://github.com/tobymao/sqlglot/pull/7861) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
333
|
+
- [`31bc57e`](https://github.com/tobymao/sqlglot/commit/31bc57e7f14bc5ff97527e8027463d47d98a17fb) - **dremio**: support AT SNAPSHOT and AT TIMESTAMP time travel [CLAUDE] *(PR [#7888](https://github.com/tobymao/sqlglot/pull/7888) by [@nruia-penn](https://github.com/nruia-penn))*
|
|
334
|
+
- [`72a125e`](https://github.com/tobymao/sqlglot/commit/72a125e101a199e72d24498c8211cafba552ef05) - **optimizer**: type annotation for databricks RTRIM, SEARCH *(PR [#7886](https://github.com/tobymao/sqlglot/pull/7886) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
335
|
+
- [`19983a7`](https://github.com/tobymao/sqlglot/commit/19983a7b364aa0cb67943c1228215c5919f834d0) - **databricks**: support timeseries pk constraints closes [#7887](https://github.com/tobymao/sqlglot/pull/7887) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
336
|
+
- [`a60ec81`](https://github.com/tobymao/sqlglot/commit/a60ec8136fc3ffc7ef5c15c0348dc189a0fd1048) - dax scaffolding *(PR [#7890](https://github.com/tobymao/sqlglot/pull/7890) by [@tobymao](https://github.com/tobymao))*
|
|
337
|
+
- [`812294b`](https://github.com/tobymao/sqlglot/commit/812294bfce534f3a70c9db4b275178c05e36a786) - **optimizer**: annotate decode for duckdb *(PR [#7910](https://github.com/tobymao/sqlglot/pull/7910) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
338
|
+
- [`da43c5c`](https://github.com/tobymao/sqlglot/commit/da43c5c14d196faa03e2e4d0fcc110d08ee58ef1) - **optimizer**: annotate truncate for mysql *(PR [#7914](https://github.com/tobymao/sqlglot/pull/7914) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
339
|
+
- [`b110593`](https://github.com/tobymao/sqlglot/commit/b1105933ba90fb9cb6dfc2c60bbf090f4c742b89) - **optimizer**: annotate encode for duckdb *(PR [#7915](https://github.com/tobymao/sqlglot/pull/7915) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
340
|
+
|
|
341
|
+
### :bug: Bug Fixes
|
|
342
|
+
- [`93802ce`](https://github.com/tobymao/sqlglot/commit/93802ce4d0c8c0b960be6b7b84785fa3556c0310) - **optimizer**: annotate type for REGEXP_REPLACE hive chain *(PR [#7804](https://github.com/tobymao/sqlglot/pull/7804) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*
|
|
343
|
+
- [`287cc39`](https://github.com/tobymao/sqlglot/commit/287cc3916ff8f3d851ad91ac58eae5e765fd360b) - **parser**: prioritize parsing parenthesized expressions as Tuple when multi-expression CSV exists *(PR [#7807](https://github.com/tobymao/sqlglot/pull/7807) by [@Hasnaathussain](https://github.com/Hasnaathussain))*
|
|
344
|
+
- :arrow_lower_right: *fixes issue [#7805](https://github.com/tobymao/sqlglot/issues/7805) opened by [@VLDB2026](https://github.com/VLDB2026)*
|
|
345
|
+
- [`4e271fb`](https://github.com/tobymao/sqlglot/commit/4e271fbe3e24223bb7761b46a89b3405a3b4df09) - **duckdb**: default missing year to 1970 for BigQuery PARSE_DATE/PARSE_TIMESTAMP *(PR [#7800](https://github.com/tobymao/sqlglot/pull/7800) by [@greymoth-jp](https://github.com/greymoth-jp))*
|
|
346
|
+
- [`cf7e4bf`](https://github.com/tobymao/sqlglot/commit/cf7e4bf4a57d331e4a6e5f4933cb7daf0e503c3b) - **parser**: parse chained range operators (IN/LIKE) instead of raising [CLAUDE] *(PR [#7809](https://github.com/tobymao/sqlglot/pull/7809) by [@jichaowang02-lang](https://github.com/jichaowang02-lang))*
|
|
347
|
+
- :arrow_lower_right: *fixes issue [#7806](https://github.com/tobymao/sqlglot/issues/7806) opened by [@VLDB2026](https://github.com/VLDB2026)*
|
|
348
|
+
- [`e17d918`](https://github.com/tobymao/sqlglot/commit/e17d91898457a2e3fcdb3f4c4b00dad79772dd7e) - **trino**: transpile FROM_ISO8601_TIMESTAMP_NANOS to cast *(PR [#7808](https://github.com/tobymao/sqlglot/pull/7808) by [@greymoth-jp](https://github.com/greymoth-jp))*
|
|
349
|
+
- [`85fea2c`](https://github.com/tobymao/sqlglot/commit/85fea2cf4375de4fd99c5d036d8ccfac2965a753) - **postgres**: more robust date formats *(PR [#7813](https://github.com/tobymao/sqlglot/pull/7813) by [@geooo109](https://github.com/geooo109))*
|
|
350
|
+
- [`52b8f4a`](https://github.com/tobymao/sqlglot/commit/52b8f4a93fcb7a8baffeba1727dc3e0ebcb88525) - **hive**: PARSE_JSON and TO_JSON roundtrip *(PR [#7818](https://github.com/tobymao/sqlglot/pull/7818) by [@geooo109](https://github.com/geooo109))*
|
|
351
|
+
- [`ed70375`](https://github.com/tobymao/sqlglot/commit/ed70375d5317c8075c7deab26a3197ae2df8d607) - **optimizer**: incorrect canonical names for certain qualified star queries *(PR [#7819](https://github.com/tobymao/sqlglot/pull/7819) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
352
|
+
- [`aeb2711`](https://github.com/tobymao/sqlglot/commit/aeb2711f3be05bdcfa39a5e7479a0bedb0ca03f7) - **clickhouse**: parse regexp extract (and variants) correctly *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
353
|
+
- [`faf15e6`](https://github.com/tobymao/sqlglot/commit/faf15e65e9059248c82564ab29de2bd4c492392e) - **generator**: emit LIMIT 1 for countless FETCH FIRST ROWS ONLY CLAUDE *(PR [#7825](https://github.com/tobymao/sqlglot/pull/7825) by [@gaoflow](https://github.com/gaoflow))*
|
|
354
|
+
- [`a66104f`](https://github.com/tobymao/sqlglot/commit/a66104f52aca450087524f84b76e29173971e656) - **bigquery**: mypyc generation bug due to wrong type hints closes [#7826](https://github.com/tobymao/sqlglot/pull/7826) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
355
|
+
- [`b29ef61`](https://github.com/tobymao/sqlglot/commit/b29ef618b5db539f7bd4685e49b72ea08730daa5) - true/null in t.true/null should be identifiers *(PR [#7831](https://github.com/tobymao/sqlglot/pull/7831) by [@georgesittas](https://github.com/georgesittas))*
|
|
356
|
+
- [`a5ab08b`](https://github.com/tobymao/sqlglot/commit/a5ab08bbbbed61567913eda8a95ccc6094036027) - **presto**: preserve SHA256/SHA512 digest semantics, render SHA2 as hex string *(PR [#7824](https://github.com/tobymao/sqlglot/pull/7824) by [@Pawansingh3889](https://github.com/Pawansingh3889))*
|
|
357
|
+
- [`e9b0140`](https://github.com/tobymao/sqlglot/commit/e9b014074b47ddb85aca93fac43d431e28add9f1) - **optimizer**: normalization of synthesized output aliases *(PR [#7816](https://github.com/tobymao/sqlglot/pull/7816) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
358
|
+
- [`94e82ff`](https://github.com/tobymao/sqlglot/commit/94e82ffa116660838f11073395ecf9b3ecc6662a) - **bigquery**: map native SHA512 to SHA2Digest, mirroring SHA256 *(PR [#7832](https://github.com/tobymao/sqlglot/pull/7832) by [@Pawansingh3889](https://github.com/Pawansingh3889))*
|
|
359
|
+
- [`bcc8b1c`](https://github.com/tobymao/sqlglot/commit/bcc8b1cd48593a7b8dfbabf43a5d9710eae19117) - **tsql**: parse EXEC return status parameter (CLAUDE) *(PR [#7835](https://github.com/tobymao/sqlglot/pull/7835) by [@AnayGarodia](https://github.com/AnayGarodia))*
|
|
360
|
+
- :arrow_lower_right: *fixes issue [#7834](https://github.com/tobymao/sqlglot/issues/7834) opened by [@guilherme-wisdom](https://github.com/guilherme-wisdom)*
|
|
361
|
+
- [`f37c71e`](https://github.com/tobymao/sqlglot/commit/f37c71e762321625350f16c1c358e12e28fa6380) - **clickhouse**: use a dedicated token for PROJECTION closes [#7837](https://github.com/tobymao/sqlglot/pull/7837) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
362
|
+
- [`da55602`](https://github.com/tobymao/sqlglot/commit/da55602dea6e70de54c500d072a0bff5ecfb3d6d) - **parser**: delimited text incorrectly consumed by _match_texts, _match_text_seq *(PR [#7843](https://github.com/tobymao/sqlglot/pull/7843) by [@georgesittas](https://github.com/georgesittas))*
|
|
363
|
+
- [`77c7814`](https://github.com/tobymao/sqlglot/commit/77c78147fc6a83bd4126c247c149df7205424010) - **optimizer**: annotate type for databricks REGR_AVGY, REGR_COUNT, REGR_INTERCEPT, REGR_R2, REGR_SLOPE *(PR [#7820](https://github.com/tobymao/sqlglot/pull/7820) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
364
|
+
- [`122b44f`](https://github.com/tobymao/sqlglot/commit/122b44f5836bd21a1bae5df3a388d397df180ca5) - **optimizer**: merge window issue *(PR [#7845](https://github.com/tobymao/sqlglot/pull/7845) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
365
|
+
- [`c2e935f`](https://github.com/tobymao/sqlglot/commit/c2e935f2fbe75f94a671187f3aa68710c210ce70) - preserve leading zeros in subsecond_precision *(PR [#7854](https://github.com/tobymao/sqlglot/pull/7854) by [@c-tonneslan](https://github.com/c-tonneslan))*
|
|
366
|
+
- [`70c0a18`](https://github.com/tobymao/sqlglot/commit/70c0a18927a49df5a3df68c41ed45431922526f5) - **optimizer**: `merge_subqueries` issue with numeric literal `ORDER BY` *(PR [#7856](https://github.com/tobymao/sqlglot/pull/7856) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
367
|
+
- [`2d86a76`](https://github.com/tobymao/sqlglot/commit/2d86a76bc8db1bdf51c27b30f033d4623452b3df) - **bigquery**: transpile single projection GENERATE_SERIES from postgres *(PR [#7855](https://github.com/tobymao/sqlglot/pull/7855) by [@geooo109](https://github.com/geooo109))*
|
|
368
|
+
- :arrow_lower_right: *fixes issue [#7852](https://github.com/tobymao/sqlglot/issues/7852) opened by [@sb335c](https://github.com/sb335c)*
|
|
369
|
+
- [`26123c1`](https://github.com/tobymao/sqlglot/commit/26123c1a1b05b5d1e469313b41a591bae833b326) - **optimizer**: incorrect handling of negated (i)like operator closes [#7866](https://github.com/tobymao/sqlglot/pull/7866) *(PR [#7867](https://github.com/tobymao/sqlglot/pull/7867) by [@georgesittas](https://github.com/georgesittas))*
|
|
370
|
+
- [`e17ab30`](https://github.com/tobymao/sqlglot/commit/e17ab302340feee60b097b1732f91f5d3d348875) - **optimizer**: evict mutated projections from the annotator cache *(PR [#7868](https://github.com/tobymao/sqlglot/pull/7868) by [@georgesittas](https://github.com/georgesittas))*
|
|
371
|
+
- [`8c7941f`](https://github.com/tobymao/sqlglot/commit/8c7941fb1e87f2b6fb4ea50477c73f86311d591d) - **tokenizer**: handle escaped quote before closing multi-char delimiter, preserve escapes in raw strings *(PR [#7870](https://github.com/tobymao/sqlglot/pull/7870) by [@georgesittas](https://github.com/georgesittas))*
|
|
372
|
+
- [`6581f8c`](https://github.com/tobymao/sqlglot/commit/6581f8c38b8d4812b6a4287b51aa971f81458470) - **hive**: parse month/day without leading 0 *(PR [#7773](https://github.com/tobymao/sqlglot/pull/7773) by [@deepyaman](https://github.com/deepyaman))*
|
|
373
|
+
- [`7099d89`](https://github.com/tobymao/sqlglot/commit/7099d896d11f5d146afa97bb4844d7703082ade6) - **optimizer**: incorrect merge with literal alias collision *(PR [#7847](https://github.com/tobymao/sqlglot/pull/7847) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
374
|
+
- [`559b2c1`](https://github.com/tobymao/sqlglot/commit/559b2c1e0dfb3be5c816d9d7976615023753f4ad) - **postgres**: transpile `DATEDIFF` with day from MySQL correctly *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
375
|
+
- [`91a284b`](https://github.com/tobymao/sqlglot/commit/91a284b7c55f11cf7454b405a6458ea39379e7ff) - **clickhouse**: parse camelCase dateTrunc, not just date_trunc [CLAUDE] *(PR [#7876](https://github.com/tobymao/sqlglot/pull/7876) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
376
|
+
- [`5e08bb9`](https://github.com/tobymao/sqlglot/commit/5e08bb934c3441a97e908594a045cae6b8c65904) - **oracle**: preserve UNPIVOT IN-list literal labels [CLAUDE] *(PR [#7877](https://github.com/tobymao/sqlglot/pull/7877) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
377
|
+
- [`a7058d6`](https://github.com/tobymao/sqlglot/commit/a7058d6976e3a2439f55b9cfa208d03a4b888522) - **oracle**: unrecognized WITH hangs the parser [CLAUDE] *(PR [#7881](https://github.com/tobymao/sqlglot/pull/7881) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
378
|
+
- [`618804c`](https://github.com/tobymao/sqlglot/commit/618804ce12b09b563147a31c37734725928f34c6) - **optimizer**: resolve NATURAL JOIN common columns in qualify [CLAUDE] *(PR [#7880](https://github.com/tobymao/sqlglot/pull/7880) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
379
|
+
- :arrow_lower_right: *fixes issue [#7879](https://github.com/tobymao/sqlglot/issues/7879) opened by [@chuenchen309](https://github.com/chuenchen309)*
|
|
380
|
+
- [`b2c07a1`](https://github.com/tobymao/sqlglot/commit/b2c07a1ee4ea48fae2b0f1a08407d253cc798b9e) - **snowflake**: wrap FILTER condition inside DISTINCT/ORDER BY args [CLAUDE] *(PR [#7884](https://github.com/tobymao/sqlglot/pull/7884) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
381
|
+
- [`2814421`](https://github.com/tobymao/sqlglot/commit/281442123ca0f617b1d877e8ebeacc4a7ad3cd2c) - **snowflake**: parse AUTOINCREMENT parts independently [CLAUDE] *(PR [#7885](https://github.com/tobymao/sqlglot/pull/7885) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
382
|
+
- [`a85eeff`](https://github.com/tobymao/sqlglot/commit/a85eeff2124af1279e6979c970a6d1ae175adb07) - properly support VALUES as a set operation operand *(PR [#7897](https://github.com/tobymao/sqlglot/pull/7897) by [@georgesittas](https://github.com/georgesittas))*
|
|
383
|
+
- [`a247168`](https://github.com/tobymao/sqlglot/commit/a247168f955fda0a09915efc53e90af7eb4337b8) - use `.this` and `.expression` instead of `.left` and `.right` in more places *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
384
|
+
- [`a034db7`](https://github.com/tobymao/sqlglot/commit/a034db7f6d91626f044152245bc284776a154c6f) - **sqlite**: unwrap `INTERVAL` amount in `DATE_ADD` [CLAUDE] *(PR [#7908](https://github.com/tobymao/sqlglot/pull/7908) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
385
|
+
- [`ae702b1`](https://github.com/tobymao/sqlglot/commit/ae702b184d6b67beaa3cc7adfcf8a82da7a306b2) - **optimizer**: don't push predicates into a subquery with LIMIT/OFFSET [CLAUDE] *(PR [#7901](https://github.com/tobymao/sqlglot/pull/7901) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
386
|
+
- [`655876f`](https://github.com/tobymao/sqlglot/commit/655876fce7d7d26ef30f9df6d1fca60f03c36d80) - **optimizer**: don't push predicates into a subquery with QUALIFY *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
387
|
+
- [`199547a`](https://github.com/tobymao/sqlglot/commit/199547a5304449f2f4b061e15caf63dc52964704) - **optimizer**: keep columns a recursive CTE reads from itself [CLAUDE] *(PR [#7899](https://github.com/tobymao/sqlglot/pull/7899) by [@isaka1022](https://github.com/isaka1022))*
|
|
388
|
+
- [`47e255d`](https://github.com/tobymao/sqlglot/commit/47e255dda3a328277b7dbb28503f200aea26a429) - **snowflake**: rewrite COUNT(*) FILTER to COUNT_IF [CLAUDE] *(PR [#7900](https://github.com/tobymao/sqlglot/pull/7900) by [@chuenchen309](https://github.com/chuenchen309))*
|
|
389
|
+
- [`e4d2ea5`](https://github.com/tobymao/sqlglot/commit/e4d2ea50bdbbe8c38a2d69b43810bc21d48638b3) - **presto**: TIMESTAMP_DIFF/DATETIME_DIFF transpilation to Presto/Trino [CLAUDE] *(PR [#7895](https://github.com/tobymao/sqlglot/pull/7895) by [@winklemad](https://github.com/winklemad))*
|
|
390
|
+
- [`1bc99a9`](https://github.com/tobymao/sqlglot/commit/1bc99a9013e1cd942ad01203db4f6b47f0420777) - **snowflake**: more robust transpilation for duckdb COUNT(*) FILTER (WHERE) *(commit by [@geooo109](https://github.com/geooo109))*
|
|
391
|
+
- [`24d6d73`](https://github.com/tobymao/sqlglot/commit/24d6d735c1ae3607ee3a0f29fe87f41e1ea64d74) - **presto**: respect date part boundary semantics in DATE_DIFF transpilation *(PR [#7911](https://github.com/tobymao/sqlglot/pull/7911) by [@georgesittas](https://github.com/georgesittas))*
|
|
392
|
+
- [`6d29878`](https://github.com/tobymao/sqlglot/commit/6d2987879753e01683b4dc232df7c488d10a9aa2) - **drill**: generate native `ILIKE` function instead of invalid infix operator *(PR [#7913](https://github.com/tobymao/sqlglot/pull/7913) by [@vidigoat](https://github.com/vidigoat))*
|
|
393
|
+
- [`a1e3338`](https://github.com/tobymao/sqlglot/commit/a1e3338e31354496a3ef3bed5f3c5e0c4df4e0f6) - **postgres**: support unicode escape string literals U&'...' closes [#7898](https://github.com/tobymao/sqlglot/pull/7898) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
394
|
+
- [`169b836`](https://github.com/tobymao/sqlglot/commit/169b8364b643c4285dcf073aa2f357c5b40831a6) - **duckdb**: position table alias correctly when combined with time-travel syntax closes [#7916](https://github.com/tobymao/sqlglot/pull/7916) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
395
|
+
- [`c933fe3`](https://github.com/tobymao/sqlglot/commit/c933fe330472ae216786eff3837bcc5233ab6d08) - **optimizer**: canonicalize numeric-literal GROUP BY to positional ordinal on merge *(PR [#7883](https://github.com/tobymao/sqlglot/pull/7883) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
396
|
+
|
|
397
|
+
### :zap: Performance Improvements
|
|
398
|
+
- [`693b3e3`](https://github.com/tobymao/sqlglot/commit/693b3e3efa5f6e5ec547e29a79cbbe2b84971f21) - **optimizer**: memoize UNNEST/EXPLODE column-type resolution [CLAUDE] *(PR [#7823](https://github.com/tobymao/sqlglot/pull/7823) by [@dvryaboy](https://github.com/dvryaboy))*
|
|
399
|
+
- :arrow_lower_right: *addresses issue [#7821](https://github.com/tobymao/sqlglot/issues/7821) opened by [@dvryaboy](https://github.com/dvryaboy)*
|
|
400
|
+
- [`e58f3cf`](https://github.com/tobymao/sqlglot/commit/e58f3cfb42d6da02a3c0b77f3bb5d01c0ceafd8f) - **tokens**: remove per-thread tokenizer core cache *(commit by [@tobymao](https://github.com/tobymao))*
|
|
401
|
+
|
|
402
|
+
### :recycle: Refactors
|
|
403
|
+
- [`0a374bf`](https://github.com/tobymao/sqlglot/commit/0a374bf421f874d4c0618a2c710aaca14086c74f) - simplify lax/strict %m, %d transpilation to hive hierarchy *(PR [#7873](https://github.com/tobymao/sqlglot/pull/7873) by [@georgesittas](https://github.com/georgesittas))*
|
|
404
|
+
- [`2f9c628`](https://github.com/tobymao/sqlglot/commit/2f9c6280b7942f130aca5c70b45e732a5e904f13) - **snowflake**: improve generator of FILTER() *(PR [#7889](https://github.com/tobymao/sqlglot/pull/7889) by [@georgesittas](https://github.com/georgesittas))*
|
|
405
|
+
- [`bbb376d`](https://github.com/tobymao/sqlglot/commit/bbb376d26d68a27d047774516d00d2ab65eb0397) - tighten the self-referencing cte check in projection pushdown *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
406
|
+
- [`755e95e`](https://github.com/tobymao/sqlglot/commit/755e95e48f82f4abfacd3812f9c2371cc2ad1d3d) - **druid**: preserve `ILIKE` roundtrip *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
407
|
+
|
|
408
|
+
### :white_check_mark: Tests
|
|
409
|
+
- [`b9051e7`](https://github.com/tobymao/sqlglot/commit/b9051e75e05491b1a8440d568efdce5d0e1a4de0) - **mysql**: add string input test for MAKETIME *(PR [#7859](https://github.com/tobymao/sqlglot/pull/7859) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
410
|
+
|
|
411
|
+
### :wrench: Chores
|
|
412
|
+
- [`af73b1c`](https://github.com/tobymao/sqlglot/commit/af73b1c9a8f39a3e4e32bb7393c21e398d4679b1) - tests for REGEXP_REPLACE hive chain *(commit by [@geooo109](https://github.com/geooo109))*
|
|
413
|
+
- [`d5a01c4`](https://github.com/tobymao/sqlglot/commit/d5a01c4fa41892db8d237dd89a63a8d6dbc46dc1) - minor refactor for REGEXP_REPLACE tests *(commit by [@geooo109](https://github.com/geooo109))*
|
|
414
|
+
- [`6c1f081`](https://github.com/tobymao/sqlglot/commit/6c1f08191f2aa32540de960ffb8c1d72b05ec7c4) - improve sqlglotc detection in the tokenizer *(PR [#7812](https://github.com/tobymao/sqlglot/pull/7812) by [@georgesittas](https://github.com/georgesittas))*
|
|
415
|
+
- :arrow_lower_right: *addresses issue [#7810](https://github.com/tobymao/sqlglot/issues/7810) opened by [@wernerdaehn](https://github.com/wernerdaehn)*
|
|
416
|
+
- [`5d9c56e`](https://github.com/tobymao/sqlglot/commit/5d9c56e8799fad51ebf941984fd12f8087a64673) - add policy regarding LLM-assisted PRs *(PR [#7817](https://github.com/tobymao/sqlglot/pull/7817) by [@georgesittas](https://github.com/georgesittas))*
|
|
417
|
+
- [`aedf83a`](https://github.com/tobymao/sqlglot/commit/aedf83a2d4d375019f086813693c240e1564535d) - remove invalid CONCAT_WS redshift test *(commit by [@geooo109](https://github.com/geooo109))*
|
|
418
|
+
- [`daf9aeb`](https://github.com/tobymao/sqlglot/commit/daf9aeb2f0e3c9613ec9d0544ce7b1a006f655c7) - **ci**: cache sqlglotc versions *(PR [#7849](https://github.com/tobymao/sqlglot/pull/7849) by [@geooo109](https://github.com/geooo109))*
|
|
419
|
+
- [`b58dd66`](https://github.com/tobymao/sqlglot/commit/b58dd66286600ce0761a9ddc244cfb5412818edb) - extend LOCALTIMESTAMP annotation tests for mysql *(commit by [@geooo109](https://github.com/geooo109))*
|
|
420
|
+
- [`65491dc`](https://github.com/tobymao/sqlglot/commit/65491dc5b0bf5e139efd1177168320633ee96345) - mysql format 3 arg annotate test *(commit by [@geooo109](https://github.com/geooo109))*
|
|
421
|
+
- [`b83659b`](https://github.com/tobymao/sqlglot/commit/b83659ba03955ff8ddf8219540480745cb3d228f) - compile sqlglotc in parallel by default *(PR [#7865](https://github.com/tobymao/sqlglot/pull/7865) by [@georgesittas](https://github.com/georgesittas))*
|
|
422
|
+
- [`ceda825`](https://github.com/tobymao/sqlglot/commit/ceda825eaa50919123d30867a7d2d3451253397b) - clickhouse CORR type annotation clean up *(commit by [@geooo109](https://github.com/geooo109))*
|
|
423
|
+
- [`baf9534`](https://github.com/tobymao/sqlglot/commit/baf9534c0aab49f0c738139d9a1d1ae08cce2426) - minor annotate_functions.sql change *(commit by [@geooo109](https://github.com/geooo109))*
|
|
424
|
+
- [`a39ad08`](https://github.com/tobymao/sqlglot/commit/a39ad08e482c368c3ffeb8166252244aaab32fd0) - mysql type annotator clean up *(commit by [@geooo109](https://github.com/geooo109))*
|
|
425
|
+
- [`a6b71a5`](https://github.com/tobymao/sqlglot/commit/a6b71a5db632638edb0debf6ac1ecf7b64612b9a) - refactor REVERSE mysql annotation *(commit by [@geooo109](https://github.com/geooo109))*
|
|
426
|
+
- [`39333fc`](https://github.com/tobymao/sqlglot/commit/39333fcbe7857ed7b762c4a12b530bcd121a99ca) - **mypyc**: Bump sqlglot-mypy to post8 *(PR [#7878](https://github.com/tobymao/sqlglot/pull/7878) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
427
|
+
- [`154df7c`](https://github.com/tobymao/sqlglot/commit/154df7cba590941247612c9822fb65c6a2a8d490) - remove stray raise in simplify *(PR [#7882](https://github.com/tobymao/sqlglot/pull/7882) by [@georgesittas](https://github.com/georgesittas))*
|
|
428
|
+
- [`c8e56e4`](https://github.com/tobymao/sqlglot/commit/c8e56e4ee0336d02991bc6d39bf942c322067f5d) - **mypyc**: Bump sqlglot-mypy to post9 *(PR [#7894](https://github.com/tobymao/sqlglot/pull/7894) by [@geooo109](https://github.com/geooo109))*
|
|
429
|
+
- [`2965ee5`](https://github.com/tobymao/sqlglot/commit/2965ee57ef8d4ad2270e6f160cd4575d48ed4697) - refactor DISTINCT agg func parsing + duckdb support *(PR [#7875](https://github.com/tobymao/sqlglot/pull/7875) by [@geooo109](https://github.com/geooo109))*
|
|
430
|
+
|
|
431
|
+
|
|
4
432
|
## [v30.12.0] - 2026-06-26
|
|
5
433
|
### :boom: BREAKING CHANGES
|
|
6
434
|
- due to [`d0ebc83`](https://github.com/tobymao/sqlglot/commit/d0ebc8353a3be4eb3258a9e078cc5e124c0e8c78) - Annotate MINUTE function *(PR [#7747](https://github.com/tobymao/sqlglot/pull/7747) by [@vishvambhar-ranoshe](https://github.com/vishvambhar-ranoshe))*:
|
|
@@ -14756,3 +15184,5 @@ pip install "sqlglot[c]" # compiled — faster, but no subclassing
|
|
|
14756
15184
|
[v30.10.0]: https://github.com/tobymao/sqlglot/compare/v30.9.0...v30.10.0
|
|
14757
15185
|
[v30.11.0]: https://github.com/tobymao/sqlglot/compare/v30.10.0...v30.11.0
|
|
14758
15186
|
[v30.12.0]: https://github.com/tobymao/sqlglot/compare/v30.11.0...v30.12.0
|
|
15187
|
+
[v30.13.0]: https://github.com/tobymao/sqlglot/compare/v30.12.0...v30.13.0
|
|
15188
|
+
[v30.14.0]: https://github.com/tobymao/sqlglot/compare/v30.13.0...v30.14.0
|
|
@@ -92,6 +92,14 @@ We use GitHub issues to track public bugs. Report a bug by opening a new issue.
|
|
|
92
92
|
of the code. If you want to propose a new feature, this is the right place to do it. Just start a discussion, and
|
|
93
93
|
let us know why you think this feature would be a good addition to SQLGlot (by possibly including some usage examples).
|
|
94
94
|
|
|
95
|
+
## Deployment (maintainers only)
|
|
96
|
+
|
|
97
|
+
To deploy a new SQLGlot version, follow these steps:
|
|
98
|
+
|
|
99
|
+
1. Run `git pull` to make sure the local git repo is at the head of the main branch
|
|
100
|
+
2. Do a `git tag` operation to bump the SQLGlot version, e.g. `git tag v28.5.0`
|
|
101
|
+
3. Run `git push && git push --tags` to deploy the new version
|
|
102
|
+
|
|
95
103
|
## [License](https://github.com/tobymao/sqlglot/blob/main/LICENSE)
|
|
96
104
|
|
|
97
105
|
By contributing, you agree that your contributions will be licensed under its MIT License.
|