sqlglot 30.17.0__tar.gz → 30.19.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.17.0 → sqlglot-30.19.0}/.gitignore +1 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/CHANGELOG.md +319 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/Makefile +1 -1
- {sqlglot-30.17.0/sqlglot.egg-info → sqlglot-30.19.0}/PKG-INFO +4 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/setup.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/_version.py +3 -3
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/__init__.py +3 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/bigquery.py +3 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/dialect.py +53 -18
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/duckdb.py +1 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/mysql.py +4 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/postgres.py +3 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/snowflake.py +1 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/sqlite.py +3 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/starrocks.py +5 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/tsql.py +1 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/executor/context.py +15 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/executor/env.py +26 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/executor/python.py +159 -11
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/executor/table.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/__init__.py +3 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/aggregate.py +6 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/array.py +6 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/builders.py +9 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/constraints.py +4 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/core.py +4 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/ddl.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/json.py +8 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/query.py +21 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/string.py +3 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generator.py +72 -21
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/clickhouse.py +12 -6
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/databricks.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/doris.py +15 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/dremio.py +3 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/duckdb.py +19 -21
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/fabric.py +5 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/hive.py +1 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/mysql.py +12 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/oracle.py +2 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/postgres.py +8 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/presto.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/python.py +20 -3
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/singlestore.py +11 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/snowflake.py +4 -35
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/spark.py +3 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/sqlite.py +54 -25
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/teradata.py +3 -3
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/trino.py +42 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/tsql.py +72 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/lineage.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/annotate_types.py +34 -19
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/canonicalize_internal_names.py +4 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/eliminate_subqueries.py +3 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/journal.py +4 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/merge_subqueries.py +2 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/normalize_identifiers.py +33 -11
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/pushdown_predicates.py +26 -6
- sqlglot-30.19.0/sqlglot/optimizer/pushdown_projections.py +390 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/qualify_columns.py +193 -25
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/qualify_tables.py +10 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/resolver.py +25 -10
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/scope.py +34 -24
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/simplify.py +73 -43
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/unnest_subqueries.py +149 -39
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parser.py +160 -82
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/bigquery.py +2 -7
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/clickhouse.py +27 -6
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/dremio.py +6 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/hive.py +6 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/mysql.py +60 -7
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/oracle.py +1 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/postgres.py +7 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/redshift.py +2 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/snowflake.py +18 -37
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/spark2.py +16 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/sqlite.py +5 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/starrocks.py +3 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/teradata.py +1 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/trino.py +0 -6
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/tsql.py +5 -3
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/planner.py +69 -23
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/transforms.py +51 -6
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/duckdb.py +22 -0
- sqlglot-30.19.0/sqlglot/typing/postgres.py +60 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0/sqlglot.egg-info}/PKG-INFO +4 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot.egg-info/requires.txt +3 -3
- sqlglot-30.19.0/sqlglot.egg-info/scm_version.json +8 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglotc/pyproject.toml +2 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_bigquery.py +37 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_clickhouse.py +91 -4
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_databricks.py +6 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_dialect.py +34 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_doris.py +29 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_dremio.py +21 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_duckdb.py +22 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_fabric.py +15 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_hive.py +5 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_mysql.py +148 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_oracle.py +17 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_postgres.py +74 -7
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_presto.py +0 -7
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_redshift.py +18 -7
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_singlestore.py +28 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_snowflake.py +86 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_spark.py +92 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_sqlite.py +164 -5
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_starrocks.py +10 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_teradata.py +2 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_trino.py +121 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_tsql.py +277 -13
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/identity.sql +7 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/annotate_functions.sql +148 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/normalize_identifiers.sql +30 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/optimizer.sql +2 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/pushdown_predicates.sql +19 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/pushdown_projections.sql +68 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/qualify_columns.sql +98 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/qualify_tables.sql +15 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/simplify.sql +190 -24
- sqlglot-30.19.0/tests/fixtures/optimizer/unnest_subqueries.sql +297 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/helpers.py +4 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/leakcheck.py +5 -3
- sqlglot-30.19.0/tests/test_dialect_imports.py +35 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_executor.py +682 -128
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_expressions.py +18 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_generator.py +2 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_jsonpath.py +2 -1
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_lineage.py +32 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_optimizer.py +227 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_parser.py +69 -14
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_serde.py +2 -2
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_transforms.py +28 -0
- sqlglot-30.17.0/sqlglot/optimizer/pushdown_projections.py +0 -281
- sqlglot-30.17.0/sqlglot/typing/postgres.py +0 -21
- sqlglot-30.17.0/sqlglot.egg-info/scm_version.json +0 -8
- sqlglot-30.17.0/tests/fixtures/optimizer/unnest_subqueries.sql +0 -139
- sqlglot-30.17.0/tests/test_dialect_imports.py +0 -48
- {sqlglot-30.17.0 → sqlglot-30.19.0}/.gitmodules +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/.gitpod.yml +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/.pre-commit-config.yaml +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/AGENTS.md +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/CLAUDE.md +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/CONTRIBUTING.md +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/LICENSE +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/MANIFEST.in +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/README.md +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/pyproject.toml +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/setup.cfg +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/__main__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/_typing.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/anonymize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/athena.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/clickhouse.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/databricks.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/dax.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/doris.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/dremio.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/drill.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/druid.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/dune.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/exasol.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/fabric.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/hive.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/materialize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/oracle.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/presto.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/prql.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/redshift.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/risingwave.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/singlestore.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/solr.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/spark.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/spark2.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/tableau.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/teradata.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/dialects/trino.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/diff.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/errors.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/executor/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/datatypes.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/dml.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/functions.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/math.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/properties.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/expressions/temporal.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/athena.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/bigquery.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/dax.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/drill.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/druid.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/dune.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/exasol.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/materialize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/prql.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/redshift.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/risingwave.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/solr.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/spark2.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/starrocks.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/generators/tableau.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/helper.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/jsonpath.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/canonicalize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/eliminate_ctes.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/eliminate_joins.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/isolate_table_selects.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/normalize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/optimize_joins.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/optimizer.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/optimizer/qualify.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/athena.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/base.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/databricks.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/dax.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/doris.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/drill.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/druid.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/duckdb.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/dune.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/exasol.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/fabric.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/materialize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/presto.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/prql.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/risingwave.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/singlestore.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/solr.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/spark.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/parsers/tableau.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/py.typed +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/schema.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/serde.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/time.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/tokenizer_core.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/tokens.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/trie.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/bigquery.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/clickhouse.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/databricks.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/hive.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/mysql.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/presto.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/redshift.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/snowflake.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/spark.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/spark2.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot/typing/tsql.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot.egg-info/SOURCES.txt +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot.egg-info/dependency_links.txt +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot.egg-info/scm_file_list.json +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot.egg-info/top_level.txt +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglot.png +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglotc/MANIFEST.in +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/sqlglotc/setup.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_athena.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_dax.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_drill.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_druid.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_dune.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_exasol.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_materialize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_pipe_syntax.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_prql.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_risingwave.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_solr.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/dialects/test_tableau.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/jsonpath/LICENSE +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/jsonpath/cts.json +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/annotate_types.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/canonicalize.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/canonicalize_internal_names.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/normalize.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/partial.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/fixtures/pretty.sql +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/gen_fixtures.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/sqlglot/__init__.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_anonymize.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_build.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_dialect_entry_points.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_diff.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_docs.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_errors.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_helper.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_integration_loader.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_schema.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_time.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_tokens.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_transpile.py +0 -0
- {sqlglot-30.17.0 → sqlglot-30.19.0}/tests/test_typing.py +0 -0
|
@@ -1,6 +1,323 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## [v30.18.0] - 2026-09-03
|
|
5
|
+
### :boom: BREAKING CHANGES
|
|
6
|
+
- due to [`8f60665`](https://github.com/tobymao/sqlglot/commit/8f606659077c0380cfbfe2ae53bd43583f41c4cf) - annotate decode for postgres *(PR [#8157](https://github.com/tobymao/sqlglot/pull/8157) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
7
|
+
|
|
8
|
+
annotate decode for postgres (#8157)
|
|
9
|
+
|
|
10
|
+
- due to [`cefce19`](https://github.com/tobymao/sqlglot/commit/cefce19186791442c9995239e1e2bd4931db863a) - map JSONB_CONTAINS to @>, add JSONBContainsTopKey *(PR [#8156](https://github.com/tobymao/sqlglot/pull/8156) by [@georgesittas](https://github.com/georgesittas))*:
|
|
11
|
+
|
|
12
|
+
map JSONB_CONTAINS to @>, add JSONBContainsTopKey (#8156)
|
|
13
|
+
|
|
14
|
+
- due to [`21092b3`](https://github.com/tobymao/sqlglot/commit/21092b3086f0bfba400de98c6deade6f4f6d3de3) - do not normalize identifiers that name data rather than references *(PR [#8161](https://github.com/tobymao/sqlglot/pull/8161) by [@georgesittas](https://github.com/georgesittas))*:
|
|
15
|
+
|
|
16
|
+
do not normalize identifiers that name data rather than references (#8161)
|
|
17
|
+
|
|
18
|
+
- due to [`b4c9ad5`](https://github.com/tobymao/sqlglot/commit/b4c9ad5abcdc8cb76be72876b30881a46077a6c4) - parse BTRIM as TRIM *(PR [#8181](https://github.com/tobymao/sqlglot/pull/8181) by [@jbylund](https://github.com/jbylund))*:
|
|
19
|
+
|
|
20
|
+
parse BTRIM as TRIM (#8181)
|
|
21
|
+
|
|
22
|
+
- due to [`d7ada74`](https://github.com/tobymao/sqlglot/commit/d7ada74e21f33ebeaad0e382b2096460860c5984) - annotate Left function for posrgres *(PR [#8189](https://github.com/tobymao/sqlglot/pull/8189) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
23
|
+
|
|
24
|
+
annotate Left function for posrgres (#8189)
|
|
25
|
+
|
|
26
|
+
- due to [`36785ce`](https://github.com/tobymao/sqlglot/commit/36785ce904ada62355b19e774b1ccd33f145d900) - Annotate Reverse function for Postgres *(PR [#8201](https://github.com/tobymao/sqlglot/pull/8201) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
27
|
+
|
|
28
|
+
Annotate Reverse function for Postgres (#8201)
|
|
29
|
+
|
|
30
|
+
- due to [`cddb7d0`](https://github.com/tobymao/sqlglot/commit/cddb7d03f1f4aa29d2f615dad2c086906e7e5ec1) - annotate Overlay function for Postgres *(PR [#8200](https://github.com/tobymao/sqlglot/pull/8200) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
31
|
+
|
|
32
|
+
annotate Overlay function for Postgres (#8200)
|
|
33
|
+
|
|
34
|
+
- due to [`bb77a11`](https://github.com/tobymao/sqlglot/commit/bb77a117d96265d2732f458fc4e4be23e272d8c1) - Annotate Right function for Postgres *(PR [#8203](https://github.com/tobymao/sqlglot/pull/8203) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
35
|
+
|
|
36
|
+
Annotate Right function for Postgres (#8203)
|
|
37
|
+
|
|
38
|
+
- due to [`0575d38`](https://github.com/tobymao/sqlglot/commit/0575d387603ce7e41068489eec022ffe128ac7c6) - Annotate Rpad function for Postgres *(PR [#8204](https://github.com/tobymao/sqlglot/pull/8204) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
39
|
+
|
|
40
|
+
Annotate Rpad function for Postgres (#8204)
|
|
41
|
+
|
|
42
|
+
- due to [`e674a0e`](https://github.com/tobymao/sqlglot/commit/e674a0e8bae4f06b94eed72e2a781b2df978d983) - Annotate SplitPart function for Postgres *(PR [#8205](https://github.com/tobymao/sqlglot/pull/8205) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
43
|
+
|
|
44
|
+
Annotate SplitPart function for Postgres (#8205)
|
|
45
|
+
|
|
46
|
+
- due to [`585908b`](https://github.com/tobymao/sqlglot/commit/585908b18440149275a0da16e2a7b483b6c34a9b) - Annotate To_Hex function for Postgres *(PR [#8206](https://github.com/tobymao/sqlglot/pull/8206) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
47
|
+
|
|
48
|
+
Annotate To_Hex function for Postgres (#8206)
|
|
49
|
+
|
|
50
|
+
- due to [`542f7b4`](https://github.com/tobymao/sqlglot/commit/542f7b4ae884d6ff7e41a0ddb4f9590de008bc2f) - Annotate Format function for Postgres *(PR [#8207](https://github.com/tobymao/sqlglot/pull/8207) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
51
|
+
|
|
52
|
+
Annotate Format function for Postgres (#8207)
|
|
53
|
+
|
|
54
|
+
- due to [`a580417`](https://github.com/tobymao/sqlglot/commit/a5804178a558acc3a04eacb0057c280c52963ecd) - Annotate Normalize function for Postgres *(PR [#8208](https://github.com/tobymao/sqlglot/pull/8208) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
55
|
+
|
|
56
|
+
Annotate Normalize function for Postgres (#8208)
|
|
57
|
+
|
|
58
|
+
- due to [`2c77cb7`](https://github.com/tobymao/sqlglot/commit/2c77cb7482107082679a10aa0c67a264b1da1fad) - Annotate ToNumber function for Postgres *(PR [#8210](https://github.com/tobymao/sqlglot/pull/8210) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*:
|
|
59
|
+
|
|
60
|
+
Annotate ToNumber function for Postgres (#8210)
|
|
61
|
+
|
|
62
|
+
- due to [`8efda2c`](https://github.com/tobymao/sqlglot/commit/8efda2c6cee394d195ef8ec1856c196228383dc2) - ANALYZE and DROP with multiple tables *(PR [#8229](https://github.com/tobymao/sqlglot/pull/8229) by [@geooo109](https://github.com/geooo109))*:
|
|
63
|
+
|
|
64
|
+
ANALYZE and DROP with multiple tables (#8229)
|
|
65
|
+
|
|
66
|
+
- due to [`e105403`](https://github.com/tobymao/sqlglot/commit/e105403618effd3accb9bb43e93138d2b653b7a1) - annotate maketime for postgres *(PR [#8253](https://github.com/tobymao/sqlglot/pull/8253) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
67
|
+
|
|
68
|
+
annotate maketime for postgres (#8253)
|
|
69
|
+
|
|
70
|
+
- due to [`a3a2a21`](https://github.com/tobymao/sqlglot/commit/a3a2a2178d5f47fa548b5575da6b680bcd95d1c2) - annotate regexpreplace for postgres *(PR [#8256](https://github.com/tobymao/sqlglot/pull/8256) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
71
|
+
|
|
72
|
+
annotate regexpreplace for postgres (#8256)
|
|
73
|
+
|
|
74
|
+
- due to [`79276b6`](https://github.com/tobymao/sqlglot/commit/79276b67d3ae01f97a443df0c20b00da51e87251) - annotate make_timestamp for postgres *(PR [#8258](https://github.com/tobymao/sqlglot/pull/8258) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
75
|
+
|
|
76
|
+
annotate make_timestamp for postgres (#8258)
|
|
77
|
+
|
|
78
|
+
- due to [`f481c22`](https://github.com/tobymao/sqlglot/commit/f481c22bcbd8a453486d1b2a4543e93685b94ce6) - annotate bit_or for postgres *(PR [#8264](https://github.com/tobymao/sqlglot/pull/8264) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
79
|
+
|
|
80
|
+
annotate bit_or for postgres (#8264)
|
|
81
|
+
|
|
82
|
+
- due to [`3762ef4`](https://github.com/tobymao/sqlglot/commit/3762ef4361895ad764a8c3e117132d6a0d1c47df) - Parse MOD at multiplicative precedence *(PR [#8259](https://github.com/tobymao/sqlglot/pull/8259) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
83
|
+
|
|
84
|
+
Parse MOD at multiplicative precedence (#8259)
|
|
85
|
+
|
|
86
|
+
- due to [`5294204`](https://github.com/tobymao/sqlglot/commit/52942044486ad91d16c93b714e686799591c59d4) - annotate function bit_xor for postgres *(PR [#8274](https://github.com/tobymao/sqlglot/pull/8274) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
87
|
+
|
|
88
|
+
annotate function bit_xor for postgres (#8274)
|
|
89
|
+
|
|
90
|
+
- due to [`9fac05c`](https://github.com/tobymao/sqlglot/commit/9fac05c062f0c9258cee2c72108a14f498f47737) - keep the `COALESCE` wrapping when `CONCAT` is generated as `||` *(PR [#8283](https://github.com/tobymao/sqlglot/pull/8283) by [@ebarkhordar](https://github.com/ebarkhordar))*:
|
|
91
|
+
|
|
92
|
+
keep the `COALESCE` wrapping when `CONCAT` is generated as `||` (#8283)
|
|
93
|
+
|
|
94
|
+
- due to [`2be2afc`](https://github.com/tobymao/sqlglot/commit/2be2afc69fcaeee5bc83ecab555fbdc0a0891b81) - don't push WHERE predicates into sources a later RIGHT or FULL join null-extends [CLAUDE] *(PR [#8282](https://github.com/tobymao/sqlglot/pull/8282) by [@jaideeppyne](https://github.com/jaideeppyne))*:
|
|
95
|
+
|
|
96
|
+
don't push WHERE predicates into sources a later RIGHT or FULL join null-extends [CLAUDE] (#8282)
|
|
97
|
+
|
|
98
|
+
- due to [`b2a1bf5`](https://github.com/tobymao/sqlglot/commit/b2a1bf560ce5c0aafc84995f113f4499b5277e94) - annotate localtimestamp for postgres *(PR [#8295](https://github.com/tobymao/sqlglot/pull/8295) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
99
|
+
|
|
100
|
+
annotate localtimestamp for postgres (#8295)
|
|
101
|
+
|
|
102
|
+
- due to [`f064484`](https://github.com/tobymao/sqlglot/commit/f064484b68547d9c80a9bcecd5e07dd8a056a36b) - normalize DATE_PART unit casing to match EXTRACT [CLAUDE] *(PR [#8293](https://github.com/tobymao/sqlglot/pull/8293) by [@PhuocOng](https://github.com/PhuocOng))*:
|
|
103
|
+
|
|
104
|
+
normalize DATE_PART unit casing to match EXTRACT [CLAUDE] (#8293)
|
|
105
|
+
|
|
106
|
+
- due to [`bb6220b`](https://github.com/tobymao/sqlglot/commit/bb6220b76a852e87b95f0b6d00979732b29fcc1f) - stop dropping structured types on CREATE TABLE [GROK] *(PR [#8299](https://github.com/tobymao/sqlglot/pull/8299) by [@ishaan-upadhyay](https://github.com/ishaan-upadhyay))*:
|
|
107
|
+
|
|
108
|
+
stop dropping structured types on CREATE TABLE [GROK] (#8299)
|
|
109
|
+
|
|
110
|
+
- due to [`b3f23fe`](https://github.com/tobymao/sqlglot/commit/b3f23fe3cfc8107d349e058649728045c707fe5d) - mod generation precedence *(PR [#8290](https://github.com/tobymao/sqlglot/pull/8290) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
111
|
+
|
|
112
|
+
mod generation precedence (#8290)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
### :sparkles: New Features
|
|
116
|
+
- [`6e109b3`](https://github.com/tobymao/sqlglot/commit/6e109b3a796c41acba935442a23bf79bebef4a13) - **executor**: implement DPIPE [CLAUDE] *(PR [#8146](https://github.com/tobymao/sqlglot/pull/8146) by [@jbylund](https://github.com/jbylund))*
|
|
117
|
+
- [`8f60665`](https://github.com/tobymao/sqlglot/commit/8f606659077c0380cfbfe2ae53bd43583f41c4cf) - **optimizer**: annotate decode for postgres *(PR [#8157](https://github.com/tobymao/sqlglot/pull/8157) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
118
|
+
- [`3bc3350`](https://github.com/tobymao/sqlglot/commit/3bc3350e23cf62e3136783b3d05fa0e17bff4c34) - **optimizer**: Provide support for databricks div(a,b) function *(PR [#8143](https://github.com/tobymao/sqlglot/pull/8143) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
119
|
+
- [`eb5d4da`](https://github.com/tobymao/sqlglot/commit/eb5d4daf499b498f4ee84af3444c53ab0f8726ea) - **executor**: add REVERSE to ENV [CLAUDE] *(PR [#8180](https://github.com/tobymao/sqlglot/pull/8180) by [@jbylund](https://github.com/jbylund))*
|
|
120
|
+
- [`f3b7c6c`](https://github.com/tobymao/sqlglot/commit/f3b7c6cb737c3d6c798f0c6b408ec8c9ffea6f4b) - **dremio**: support 4-argument REGEXP_SPLIT *(PR [#8148](https://github.com/tobymao/sqlglot/pull/8148) by [@rusackas](https://github.com/rusackas))*
|
|
121
|
+
- [`b4c9ad5`](https://github.com/tobymao/sqlglot/commit/b4c9ad5abcdc8cb76be72876b30881a46077a6c4) - **postgres**: parse BTRIM as TRIM *(PR [#8181](https://github.com/tobymao/sqlglot/pull/8181) by [@jbylund](https://github.com/jbylund))*
|
|
122
|
+
- [`4ff8ab3`](https://github.com/tobymao/sqlglot/commit/4ff8ab3614dca6d6cf6c8c73562886694675e443) - **executor**: evaluate subqueries the optimizer declines to rewrite [CLAUDE] *(PR [#8190](https://github.com/tobymao/sqlglot/pull/8190) by [@jbylund](https://github.com/jbylund))*
|
|
123
|
+
- [`20f2f70`](https://github.com/tobymao/sqlglot/commit/20f2f7035df0bda3b8a8e2c25e211a6fa0eb6b77) - **bigquery**: support digit-prefixed field names closes [#8175](https://github.com/tobymao/sqlglot/pull/8175) *(PR [#8196](https://github.com/tobymao/sqlglot/pull/8196) by [@georgesittas](https://github.com/georgesittas))*
|
|
124
|
+
- :arrow_lower_right: *addresses issue [#8175](https://github.com/tobymao/sqlglot/issues/8175) opened by [@sayantan-wisdom](https://github.com/sayantan-wisdom)*
|
|
125
|
+
- [`d7ada74`](https://github.com/tobymao/sqlglot/commit/d7ada74e21f33ebeaad0e382b2096460860c5984) - **optimizer**: annotate Left function for posrgres *(PR [#8189](https://github.com/tobymao/sqlglot/pull/8189) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
126
|
+
- [`36785ce`](https://github.com/tobymao/sqlglot/commit/36785ce904ada62355b19e774b1ccd33f145d900) - **optimizer**: Annotate Reverse function for Postgres *(PR [#8201](https://github.com/tobymao/sqlglot/pull/8201) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
127
|
+
- [`cddb7d0`](https://github.com/tobymao/sqlglot/commit/cddb7d03f1f4aa29d2f615dad2c086906e7e5ec1) - **optimizer**: annotate Overlay function for Postgres *(PR [#8200](https://github.com/tobymao/sqlglot/pull/8200) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
128
|
+
- [`bb77a11`](https://github.com/tobymao/sqlglot/commit/bb77a117d96265d2732f458fc4e4be23e272d8c1) - **optimizer**: Annotate Right function for Postgres *(PR [#8203](https://github.com/tobymao/sqlglot/pull/8203) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
129
|
+
- [`0575d38`](https://github.com/tobymao/sqlglot/commit/0575d387603ce7e41068489eec022ffe128ac7c6) - **optimizer**: Annotate Rpad function for Postgres *(PR [#8204](https://github.com/tobymao/sqlglot/pull/8204) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
130
|
+
- [`e674a0e`](https://github.com/tobymao/sqlglot/commit/e674a0e8bae4f06b94eed72e2a781b2df978d983) - **optimizer**: Annotate SplitPart function for Postgres *(PR [#8205](https://github.com/tobymao/sqlglot/pull/8205) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
131
|
+
- [`585908b`](https://github.com/tobymao/sqlglot/commit/585908b18440149275a0da16e2a7b483b6c34a9b) - **optimizer**: Annotate To_Hex function for Postgres *(PR [#8206](https://github.com/tobymao/sqlglot/pull/8206) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
132
|
+
- [`542f7b4`](https://github.com/tobymao/sqlglot/commit/542f7b4ae884d6ff7e41a0ddb4f9590de008bc2f) - **optimizer**: Annotate Format function for Postgres *(PR [#8207](https://github.com/tobymao/sqlglot/pull/8207) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
133
|
+
- [`a580417`](https://github.com/tobymao/sqlglot/commit/a5804178a558acc3a04eacb0057c280c52963ecd) - **optimizer**: Annotate Normalize function for Postgres *(PR [#8208](https://github.com/tobymao/sqlglot/pull/8208) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
134
|
+
- [`2c77cb7`](https://github.com/tobymao/sqlglot/commit/2c77cb7482107082679a10aa0c67a264b1da1fad) - **optimizer**: Annotate ToNumber function for Postgres *(PR [#8210](https://github.com/tobymao/sqlglot/pull/8210) by [@vaishnavi-polekar](https://github.com/vaishnavi-polekar))*
|
|
135
|
+
- [`8579d7c`](https://github.com/tobymao/sqlglot/commit/8579d7ca57a9056e393161dd1524b76f2d92cc64) - **executor**: support OFFSET [CLAUDE] *(PR [#8219](https://github.com/tobymao/sqlglot/pull/8219) by [@jbylund](https://github.com/jbylund))*
|
|
136
|
+
- [`69b059e`](https://github.com/tobymao/sqlglot/commit/69b059e045150f0d12883eecbc2a0026e67a188e) - **clickhouse**: parse trimLeft/trimRight/trimBoth into Trim *(PR [#8240](https://github.com/tobymao/sqlglot/pull/8240) by [@raghav-reglobe](https://github.com/raghav-reglobe))*
|
|
137
|
+
- [`e105403`](https://github.com/tobymao/sqlglot/commit/e105403618effd3accb9bb43e93138d2b653b7a1) - **optimizer**: annotate maketime for postgres *(PR [#8253](https://github.com/tobymao/sqlglot/pull/8253) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
138
|
+
- [`a3a2a21`](https://github.com/tobymao/sqlglot/commit/a3a2a2178d5f47fa548b5575da6b680bcd95d1c2) - **optimizer**: annotate regexpreplace for postgres *(PR [#8256](https://github.com/tobymao/sqlglot/pull/8256) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
139
|
+
- [`79276b6`](https://github.com/tobymao/sqlglot/commit/79276b67d3ae01f97a443df0c20b00da51e87251) - **optimizer**: annotate make_timestamp for postgres *(PR [#8258](https://github.com/tobymao/sqlglot/pull/8258) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
140
|
+
- [`f481c22`](https://github.com/tobymao/sqlglot/commit/f481c22bcbd8a453486d1b2a4543e93685b94ce6) - **optimizer**: annotate bit_or for postgres *(PR [#8264](https://github.com/tobymao/sqlglot/pull/8264) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
141
|
+
- [`5294204`](https://github.com/tobymao/sqlglot/commit/52942044486ad91d16c93b714e686799591c59d4) - **optimizer**: annotate function bit_xor for postgres *(PR [#8274](https://github.com/tobymao/sqlglot/pull/8274) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
142
|
+
- [`222eb11`](https://github.com/tobymao/sqlglot/commit/222eb11fc491b3593c52a1f6cf7c7adaeaaf4953) - **clickhouse**: support the view() table function [CLAUDE] *(PR [#8275](https://github.com/tobymao/sqlglot/pull/8275) by [@ei-grad](https://github.com/ei-grad))*
|
|
143
|
+
- [`45158c3`](https://github.com/tobymao/sqlglot/commit/45158c35c7d4ed3aea55564c2bfca352e2075e13) - explode(map) *(PR [#8235](https://github.com/tobymao/sqlglot/pull/8235) by [@betodealmeida](https://github.com/betodealmeida))*
|
|
144
|
+
- [`5a91be3`](https://github.com/tobymao/sqlglot/commit/5a91be3fbc014d54d78f2b38bcde89192245b9e4) - **postgres**: support LOCK as command *(PR [#8281](https://github.com/tobymao/sqlglot/pull/8281) by [@treysp](https://github.com/treysp))*
|
|
145
|
+
- :arrow_lower_right: *addresses issue [#8277](https://github.com/tobymao/sqlglot/issues/8277) opened by [@jerryhu1234](https://github.com/jerryhu1234)*
|
|
146
|
+
- [`b2a1bf5`](https://github.com/tobymao/sqlglot/commit/b2a1bf560ce5c0aafc84995f113f4499b5277e94) - **optimizer**: annotate localtimestamp for postgres *(PR [#8295](https://github.com/tobymao/sqlglot/pull/8295) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
147
|
+
- [`2e86ded`](https://github.com/tobymao/sqlglot/commit/2e86ded7d0f6474e9041882058358616fb911464) - **teradata**: `mod()` func syntax *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
148
|
+
|
|
149
|
+
### :bug: Bug Fixes
|
|
150
|
+
- [`29acdfd`](https://github.com/tobymao/sqlglot/commit/29acdfde9f2d2c1bfc2215c10279552ca4d63c7c) - **trino**: TIME literal with a timezone *(PR [#8154](https://github.com/tobymao/sqlglot/pull/8154) by [@fcfangcc](https://github.com/fcfangcc))*
|
|
151
|
+
- [`8ced6d5`](https://github.com/tobymao/sqlglot/commit/8ced6d5495455cd783fc5e81228d6d7ffd55781d) - **duckdb**: parenthesize JSON_VALUE arrow extract when parent requires it *(PR [#8153](https://github.com/tobymao/sqlglot/pull/8153) by [@Jacques-Peeters](https://github.com/Jacques-Peeters))*
|
|
152
|
+
- [`cefce19`](https://github.com/tobymao/sqlglot/commit/cefce19186791442c9995239e1e2bd4931db863a) - **postgres**: map JSONB_CONTAINS to @>, add JSONBContainsTopKey *(PR [#8156](https://github.com/tobymao/sqlglot/pull/8156) by [@georgesittas](https://github.com/georgesittas))*
|
|
153
|
+
- :arrow_lower_right: *fixes issue [#8152](https://github.com/tobymao/sqlglot/issues/8152) opened by [@RogerHYang](https://github.com/RogerHYang)*
|
|
154
|
+
- [`ecf5b97`](https://github.com/tobymao/sqlglot/commit/ecf5b97819c91257a21dcb1acd7780e8e4563932) - **executor**: return NULL from POW instead of raising [CLAUDE] *(PR [#8159](https://github.com/tobymao/sqlglot/pull/8159) by [@jbylund](https://github.com/jbylund))*
|
|
155
|
+
- [`d89f392`](https://github.com/tobymao/sqlglot/commit/d89f392e089d13b8e217ca4501558d6da263eb4d) - **mysql**: map %x and %r date format specifiers [CLAUDE] *(PR [#8142](https://github.com/tobymao/sqlglot/pull/8142) by [@codeAnqiang-ma](https://github.com/codeAnqiang-ma))*
|
|
156
|
+
- [`05f5484`](https://github.com/tobymao/sqlglot/commit/05f548429469133b502b303dd367f96f4e3126ba) - **executor**: honor nulls_first when ordering [CLAUDE] *(PR [#8158](https://github.com/tobymao/sqlglot/pull/8158) by [@jbylund](https://github.com/jbylund))*
|
|
157
|
+
- [`83129c7`](https://github.com/tobymao/sqlglot/commit/83129c711baf600f6ae902f79cf1cd6e50bdba58) - **snowflake**: robust filter_sql anonymous func handling, closes [#8170](https://github.com/tobymao/sqlglot/pull/8170) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
158
|
+
- [`d138cae`](https://github.com/tobymao/sqlglot/commit/d138cae03d21656d66e512ab489a0cf9441d4b0a) - don't crash in exp.cast() when the input is already a cast to INTERVAL (CLAUDE) *(PR [#8173](https://github.com/tobymao/sqlglot/pull/8173) by [@eeshsaxena](https://github.com/eeshsaxena))*
|
|
159
|
+
- :arrow_lower_right: *fixes issue [#8172](https://github.com/tobymao/sqlglot/issues/8172) opened by [@eeshsaxena](https://github.com/eeshsaxena)*
|
|
160
|
+
- [`bf34105`](https://github.com/tobymao/sqlglot/commit/bf3410543fd15e983138311577b58455e41f9551) - **sqlite**: render RegexpLike as the REGEXP operator [CLAUDE] *(PR [#8163](https://github.com/tobymao/sqlglot/pull/8163) by [@nikolauspschuetz](https://github.com/nikolauspschuetz))*
|
|
161
|
+
- :arrow_lower_right: *fixes issue [#8080](https://github.com/tobymao/sqlglot/issues/8080) opened by [@RogerHYang](https://github.com/RogerHYang)*
|
|
162
|
+
- [`21092b3`](https://github.com/tobymao/sqlglot/commit/21092b3086f0bfba400de98c6deade6f4f6d3de3) - **optimizer**: do not normalize identifiers that name data rather than references *(PR [#8161](https://github.com/tobymao/sqlglot/pull/8161) by [@georgesittas](https://github.com/georgesittas))*
|
|
163
|
+
- [`ebd15d9`](https://github.com/tobymao/sqlglot/commit/ebd15d99958662562359b7469bb958f4b4790767) - **executor**: return NULL from typed division of NULL [CLAUDE] *(PR [#8178](https://github.com/tobymao/sqlglot/pull/8178) by [@jbylund](https://github.com/jbylund))*
|
|
164
|
+
- [`39e289a`](https://github.com/tobymao/sqlglot/commit/39e289a75efb250d45c2dfcfffc719f19e9925a2) - **executor**: parenthesize CASE in generated Python [CLAUDE] *(PR [#8176](https://github.com/tobymao/sqlglot/pull/8176) by [@jbylund](https://github.com/jbylund))*
|
|
165
|
+
- [`f64adb4`](https://github.com/tobymao/sqlglot/commit/f64adb4c9a3f96ff4ad692d571b80848ad1b649d) - **bigquery**: array_agg(<subquery> ignore nulls) AttributeError closes [#8193](https://github.com/tobymao/sqlglot/pull/8193) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
166
|
+
- [`a570cf8`](https://github.com/tobymao/sqlglot/commit/a570cf8a908d02e78b66cec1478ab066f1ff1f0d) - **bigquery**: parse FULL/LEFT before set ops as modifiers, not aliases closes [#8195](https://github.com/tobymao/sqlglot/pull/8195) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
167
|
+
- [`6e30ee7`](https://github.com/tobymao/sqlglot/commit/6e30ee791c1a993d7722d641d12967afc8fd9548) - **parser**: inline digit-prefixed field parsing to avoid deepening recursion *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
168
|
+
- [`6874e1c`](https://github.com/tobymao/sqlglot/commit/6874e1c4bfa398d8dc2b4310fcadd304a0715d16) - **clickhouse**: make VALUES tuple wrapping idempotent [CLAUDE] *(PR [#8185](https://github.com/tobymao/sqlglot/pull/8185) by [@sanket801036](https://github.com/sanket801036))*
|
|
169
|
+
- [`7cca122`](https://github.com/tobymao/sqlglot/commit/7cca122d28c4cedbd7a9baed4bee39f241710b8c) - **clickhouse**: preserve quoted parameterized relations *(PR [#8198](https://github.com/tobymao/sqlglot/pull/8198) by [@alessio-gastaldo](https://github.com/alessio-gastaldo))*
|
|
170
|
+
- [`1ba7b27`](https://github.com/tobymao/sqlglot/commit/1ba7b2715dd9aba896edc7dc69fcc41bbb601b90) - **executor**: return the rows of an ORDER BY over a set operation [CLAUDE] *(PR [#8214](https://github.com/tobymao/sqlglot/pull/8214) by [@jbylund](https://github.com/jbylund))*
|
|
171
|
+
- [`f62c344`](https://github.com/tobymao/sqlglot/commit/f62c3446d0590daea30fed77264194b53b725d24) - **qualify**: resolve snowflake positional column refs *(PR [#8202](https://github.com/tobymao/sqlglot/pull/8202) by [@treysp](https://github.com/treysp))*
|
|
172
|
+
- [`038f015`](https://github.com/tobymao/sqlglot/commit/038f015992d31163bd16075b8508a0c1df0f28e2) - **parser**: parse a list of tables in DROP TABLE [CLAUDE] *(PR [#8223](https://github.com/tobymao/sqlglot/pull/8223) by [@sanket801036](https://github.com/sanket801036))*
|
|
173
|
+
- :arrow_lower_right: *fixes issue [#8222](https://github.com/tobymao/sqlglot/issues/8222) opened by [@guijinxin](https://github.com/guijinxin)*
|
|
174
|
+
- [`8efda2c`](https://github.com/tobymao/sqlglot/commit/8efda2c6cee394d195ef8ec1856c196228383dc2) - **parser**: ANALYZE and DROP with multiple tables *(PR [#8229](https://github.com/tobymao/sqlglot/pull/8229) by [@geooo109](https://github.com/geooo109))*
|
|
175
|
+
- :arrow_lower_right: *fixes issue [#8227](https://github.com/tobymao/sqlglot/issues/8227) opened by [@guijinxin](https://github.com/guijinxin)*
|
|
176
|
+
- [`05eed63`](https://github.com/tobymao/sqlglot/commit/05eed63b281f7ac020045e2b792beef8fad8d3ee) - **executor**: execute an IN/ANY subquery that has no FROM [CLAUDE] *(PR [#8221](https://github.com/tobymao/sqlglot/pull/8221) by [@jbylund](https://github.com/jbylund))*
|
|
177
|
+
- [`91119bc`](https://github.com/tobymao/sqlglot/commit/91119bcaac977ede6f4a641bdda593b0015ef998) - **mysql**: support KEY in CREATE TABLE column definition *(PR [#8230](https://github.com/tobymao/sqlglot/pull/8230) by [@treysp](https://github.com/treysp))*
|
|
178
|
+
- :arrow_lower_right: *fixes issue [#8225](https://github.com/tobymao/sqlglot/issues/8225) opened by [@guijinxin](https://github.com/guijinxin)*
|
|
179
|
+
- [`1e9c804`](https://github.com/tobymao/sqlglot/commit/1e9c804ec54ff74b81d965fe487dcbd5af72b0a5) - **optimizer**: decline decorrelation of a negated correlated IN [CLAUDE] *(PR [#8236](https://github.com/tobymao/sqlglot/pull/8236) by [@jbylund](https://github.com/jbylund))*
|
|
180
|
+
- [`b79cbf8`](https://github.com/tobymao/sqlglot/commit/b79cbf86d154f3ccfca1dada7073435fdaa06b09) - **optimizer**: preserve UNPIVOT passthrough columns *(PR [#8238](https://github.com/tobymao/sqlglot/pull/8238) by [@treysp](https://github.com/treysp))*
|
|
181
|
+
- [`ce427c9`](https://github.com/tobymao/sqlglot/commit/ce427c96246a8a0bc4f05a47a39adbba0bc7a7b1) - **postgres**: don't emit JSON_EXTRACT_PATH with no keys for a root-only JSON path [CLAUDE] *(PR [#8233](https://github.com/tobymao/sqlglot/pull/8233) by [@jaideeppyne](https://github.com/jaideeppyne))*
|
|
182
|
+
- :arrow_lower_right: *fixes issue [#8232](https://github.com/tobymao/sqlglot/issues/8232) opened by [@RogerHYang](https://github.com/RogerHYang)*
|
|
183
|
+
- [`2a46a03`](https://github.com/tobymao/sqlglot/commit/2a46a03311aa014e645f26bf4d8ad87ee590bf3a) - **clickhouse**: generate native lag/lead instead of lagInFrame/leadInFrame *(commit by [@tobymao](https://github.com/tobymao))*
|
|
184
|
+
- [`40f285c`](https://github.com/tobymao/sqlglot/commit/40f285cb61edff4a40950fc708e79ae4e8ed583d) - **clickhouse**: preserve multi-array arrayMap and arrayFilter *(commit by [@tobymao](https://github.com/tobymao))*
|
|
185
|
+
- [`d5e3f14`](https://github.com/tobymao/sqlglot/commit/d5e3f14b109ebe5decd66bc77bde38fd5b001bb1) - **parser, optimizer**: support starrocks GENERATE_SERIES parse and qualify *(PR [#8246](https://github.com/tobymao/sqlglot/pull/8246) by [@geooo109](https://github.com/geooo109))*
|
|
186
|
+
- :arrow_lower_right: *fixes issue [#8244](https://github.com/tobymao/sqlglot/issues/8244) opened by [@xiayaoshun](https://github.com/xiayaoshun)*
|
|
187
|
+
- [`a60171e`](https://github.com/tobymao/sqlglot/commit/a60171e8f73257a3917f2a95b308183460fb159d) - **optimizer**: apply qualified star exclusions only to the referenced source *(PR [#8247](https://github.com/tobymao/sqlglot/pull/8247) by [@geooo109](https://github.com/geooo109))*
|
|
188
|
+
- :arrow_lower_right: *fixes issue [#8245](https://github.com/tobymao/sqlglot/issues/8245) opened by [@paddy-devan](https://github.com/paddy-devan)*
|
|
189
|
+
- [`88419b1`](https://github.com/tobymao/sqlglot/commit/88419b1aa19453be7fca80c0178362b1fbf2d6e1) - **dialect**: fall back on TokenError when an operand isn't a JSON path *(PR [#8260](https://github.com/tobymao/sqlglot/pull/8260) by [@jaideeppyne](https://github.com/jaideeppyne))*
|
|
190
|
+
- :arrow_lower_right: *fixes issue [#8249](https://github.com/tobymao/sqlglot/issues/8249) opened by [@RogerHYang](https://github.com/RogerHYang)*
|
|
191
|
+
- [`f131ec9`](https://github.com/tobymao/sqlglot/commit/f131ec9f9ea40ce55f0e254baa41b01f87bad25c) - **snowflake**: parse a qualified wildcard in OBJECT_CONSTRUCT_KEEP_NULL *(PR [#8270](https://github.com/tobymao/sqlglot/pull/8270) by [@ishaan-upadhyay](https://github.com/ishaan-upadhyay))*
|
|
192
|
+
- :arrow_lower_right: *fixes issue [#8262](https://github.com/tobymao/sqlglot/issues/8262) opened by [@ishaan-upadhyay](https://github.com/ishaan-upadhyay)*
|
|
193
|
+
- [`4303c3f`](https://github.com/tobymao/sqlglot/commit/4303c3f30f8fa23f40853858260d8ec83ccfd882) - **parser**: don't raise ValueError on a GRANT or REVOKE with no privileges [CLAUDE] *(PR [#8271](https://github.com/tobymao/sqlglot/pull/8271) by [@tsamaras](https://github.com/tsamaras))*
|
|
194
|
+
- [`3762ef4`](https://github.com/tobymao/sqlglot/commit/3762ef4361895ad764a8c3e117132d6a0d1c47df) - **parser**: Parse MOD at multiplicative precedence *(PR [#8259](https://github.com/tobymao/sqlglot/pull/8259) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
195
|
+
- [`3110e15`](https://github.com/tobymao/sqlglot/commit/3110e151bfe6e229ec6b85708a56a9340a56c6a6) - **sqlite**: preserve explicit end bound in RANGE CURRENT ROW window frames [CLAUDE] *(PR [#8267](https://github.com/tobymao/sqlglot/pull/8267) by [@AmirF194](https://github.com/AmirF194))*
|
|
196
|
+
- :arrow_lower_right: *fixes issue [#8209](https://github.com/tobymao/sqlglot/issues/8209) opened by [@glaziermag](https://github.com/glaziermag)*
|
|
197
|
+
- [`d0aa2b4`](https://github.com/tobymao/sqlglot/commit/d0aa2b432498ec00f88a8721a904afe2e1b5c24d) - **optimizer**: raise OptimizeError instead of corrupting the scope graph in _traverse_union [CLAUDE] *(PR [#8269](https://github.com/tobymao/sqlglot/pull/8269) by [@chaitanyaatlan](https://github.com/chaitanyaatlan))*
|
|
198
|
+
- :arrow_lower_right: *fixes issue [#8268](https://github.com/tobymao/sqlglot/issues/8268) opened by [@chaitanyaatlan](https://github.com/chaitanyaatlan)*
|
|
199
|
+
- [`9fac05c`](https://github.com/tobymao/sqlglot/commit/9fac05c062f0c9258cee2c72108a14f498f47737) - **sqlite**: keep the `COALESCE` wrapping when `CONCAT` is generated as `||` *(PR [#8283](https://github.com/tobymao/sqlglot/pull/8283) by [@ebarkhordar](https://github.com/ebarkhordar))*
|
|
200
|
+
- [`2be2afc`](https://github.com/tobymao/sqlglot/commit/2be2afc69fcaeee5bc83ecab555fbdc0a0891b81) - **optimizer**: don't push WHERE predicates into sources a later RIGHT or FULL join null-extends [CLAUDE] *(PR [#8282](https://github.com/tobymao/sqlglot/pull/8282) by [@jaideeppyne](https://github.com/jaideeppyne))*
|
|
201
|
+
- [`9b25ca5`](https://github.com/tobymao/sqlglot/commit/9b25ca5dbef52c348cb9a45706bac4f41fb56f4d) - **mysql**: parse BINARY column attribute as a column constraint [CLAUDE] *(PR [#8286](https://github.com/tobymao/sqlglot/pull/8286) by [@PhuocOng](https://github.com/PhuocOng))*
|
|
202
|
+
- [`67cf1ec`](https://github.com/tobymao/sqlglot/commit/67cf1ec91dfe2658f41c049130ab242a40bf4789) - **parser**: stop GROUP BY from consuming query modifiers [CLAUDE] *(PR [#8285](https://github.com/tobymao/sqlglot/pull/8285) by [@Kunal8954](https://github.com/Kunal8954))*
|
|
203
|
+
- :arrow_lower_right: *fixes issue [#8279](https://github.com/tobymao/sqlglot/issues/8279) opened by [@RogerHYang](https://github.com/RogerHYang)*
|
|
204
|
+
- [`6b9cb87`](https://github.com/tobymao/sqlglot/commit/6b9cb87bd01ed4606d1902a0266ff79aad78b54f) - **postgres**: preserve quoting of the one-byte "char" type [CLAUDE] *(PR [#8284](https://github.com/tobymao/sqlglot/pull/8284) by [@Kunal8954](https://github.com/Kunal8954))*
|
|
205
|
+
- :arrow_lower_right: *fixes issue [#8280](https://github.com/tobymao/sqlglot/issues/8280) opened by [@RogerHYang](https://github.com/RogerHYang)*
|
|
206
|
+
- [`e2f4ad7`](https://github.com/tobymao/sqlglot/commit/e2f4ad7d50cb764c78da69b5ca7933c69156ebaa) - **redshift**: preserve quoting of the one-byte "char" type *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
207
|
+
- [`f064484`](https://github.com/tobymao/sqlglot/commit/f064484b68547d9c80a9bcecd5e07dd8a056a36b) - **postgres**: normalize DATE_PART unit casing to match EXTRACT [CLAUDE] *(PR [#8293](https://github.com/tobymao/sqlglot/pull/8293) by [@PhuocOng](https://github.com/PhuocOng))*
|
|
208
|
+
- :arrow_lower_right: *fixes issue [#8292](https://github.com/tobymao/sqlglot/issues/8292) opened by [@PhuocOng](https://github.com/PhuocOng)*
|
|
209
|
+
- [`d546830`](https://github.com/tobymao/sqlglot/commit/d5468304f6a1b8e9ec20aa3ea8564031be2f6e0e) - **spark**: distinguish GROUPING SETS suffix syntax *(PR [#8288](https://github.com/tobymao/sqlglot/pull/8288) by [@treysp](https://github.com/treysp))*
|
|
210
|
+
- :arrow_lower_right: *fixes issue [#8266](https://github.com/tobymao/sqlglot/issues/8266) opened by [@wwzhe007](https://github.com/wwzhe007)*
|
|
211
|
+
- [`c6c1fa4`](https://github.com/tobymao/sqlglot/commit/c6c1fa4d3775eadd8673ddb9a8d4211dfe1cdd4f) - **transforms**: keep the table when dropping an unnamed UNIQUE constraint [CLAUDE] *(PR [#8300](https://github.com/tobymao/sqlglot/pull/8300) by [@PhuocOng](https://github.com/PhuocOng))*
|
|
212
|
+
- :arrow_lower_right: *fixes issue [#8297](https://github.com/tobymao/sqlglot/issues/8297) opened by [@krishnakaanchan-png](https://github.com/krishnakaanchan-png)*
|
|
213
|
+
- [`bb6220b`](https://github.com/tobymao/sqlglot/commit/bb6220b76a852e87b95f0b6d00979732b29fcc1f) - **snowflake**: stop dropping structured types on CREATE TABLE [GROK] *(PR [#8299](https://github.com/tobymao/sqlglot/pull/8299) by [@ishaan-upadhyay](https://github.com/ishaan-upadhyay))*
|
|
214
|
+
- :arrow_lower_right: *fixes issue [#8298](https://github.com/tobymao/sqlglot/issues/8298) opened by [@ishaan-upadhyay](https://github.com/ishaan-upadhyay)*
|
|
215
|
+
- [`b3f23fe`](https://github.com/tobymao/sqlglot/commit/b3f23fe3cfc8107d349e058649728045c707fe5d) - **generator**: mod generation precedence *(PR [#8290](https://github.com/tobymao/sqlglot/pull/8290) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
216
|
+
- [`2391144`](https://github.com/tobymao/sqlglot/commit/23911445cb38e14978ab9a4e0b29d0a58b80fa88) - **postgres**: keep the time zone argument of DATE_TRUNC [CLAUDE] *(PR [#8305](https://github.com/tobymao/sqlglot/pull/8305) by [@dylanpulver](https://github.com/dylanpulver))*
|
|
217
|
+
|
|
218
|
+
### :zap: Performance Improvements
|
|
219
|
+
- [`1fa9653`](https://github.com/tobymao/sqlglot/commit/1fa965376ccf6e972c6aa4a3c6a587f4bce9b494) - **dialects**: cache dialect classes resolved through the package __getattr__ *(PR [#8303](https://github.com/tobymao/sqlglot/pull/8303) by [@tobymao](https://github.com/tobymao))*
|
|
220
|
+
|
|
221
|
+
### :recycle: Refactors
|
|
222
|
+
- [`829c2b1`](https://github.com/tobymao/sqlglot/commit/829c2b1c7061cbdc6c65ae7ea13dea73aa12522a) - clean up nth_value from [first|last] support *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
223
|
+
- [`b11c3d9`](https://github.com/tobymao/sqlglot/commit/b11c3d915ca617ea6f343b0c7cc4b392766fdaa0) - **optimizer**: clean up `pushdown_projections` *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
224
|
+
|
|
225
|
+
### :white_check_mark: Tests
|
|
226
|
+
- [`ceb5111`](https://github.com/tobymao/sqlglot/commit/ceb5111421e9aa6135f7c650c1995ee19f9528a2) - **clickhouse**: pin the trim renderings for non-ClickHouse targets *(commit by [@tobymao](https://github.com/tobymao))*
|
|
227
|
+
- [`99947fb`](https://github.com/tobymao/sqlglot/commit/99947fbcc5fa34f4db6354c97f6cef79c105d41b) - **executor**: pin the clock in test_scalar_functions to fix a rollover flake [CLAUDE] *(PR [#8276](https://github.com/tobymao/sqlglot/pull/8276) by [@nikolauspschuetz](https://github.com/nikolauspschuetz))*
|
|
228
|
+
|
|
229
|
+
### :wrench: Chores
|
|
230
|
+
- [`a04d327`](https://github.com/tobymao/sqlglot/commit/a04d327b10902537a414f0fa64f91afa1e622e32) - **parser**: clean up multi-table DROP TABLE *(commit by [@geooo109](https://github.com/geooo109))*
|
|
231
|
+
- [`d002d4d`](https://github.com/tobymao/sqlglot/commit/d002d4dac34967ff10df31557b278a427e63428d) - **clickhouse**: tidy up the trim builders and tests *(commit by [@tobymao](https://github.com/tobymao))*
|
|
232
|
+
- [`37362f4`](https://github.com/tobymao/sqlglot/commit/37362f4fc1d63c4687149cec3a8aab109c1eb989) - simplify TRIMBOTH parsing for ck *(commit by [@geooo109](https://github.com/geooo109))*
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
## [v30.17.0] - 2026-08-12
|
|
236
|
+
### :boom: BREAKING CHANGES
|
|
237
|
+
- due to [`5c12472`](https://github.com/tobymao/sqlglot/commit/5c12472a8016dff6eb8d9aab9c9a029adab2d514) - stop optimizing OR-conditioned joins and anti joins *(PR [#8118](https://github.com/tobymao/sqlglot/pull/8118) by [@georgesittas](https://github.com/georgesittas))*:
|
|
238
|
+
|
|
239
|
+
stop optimizing OR-conditioned joins and anti joins (#8118)
|
|
240
|
+
|
|
241
|
+
- due to [`07c2241`](https://github.com/tobymao/sqlglot/commit/07c22415977c21b342d578bd01b0ea7352a8a726) - support `and`, `or` function syntax *(PR [#8065](https://github.com/tobymao/sqlglot/pull/8065) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
|
|
242
|
+
|
|
243
|
+
support `and`, `or` function syntax (#8065)
|
|
244
|
+
|
|
245
|
+
- due to [`3d74d62`](https://github.com/tobymao/sqlglot/commit/3d74d62c323ad3097c690092e7a4eb86aabb2f2d) - prevent pruning columns referenced by GROUP BY / HAVING / QUALIFY *(PR [#8121](https://github.com/tobymao/sqlglot/pull/8121) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
246
|
+
|
|
247
|
+
prevent pruning columns referenced by GROUP BY / HAVING / QUALIFY (#8121)
|
|
248
|
+
|
|
249
|
+
- due to [`7c56116`](https://github.com/tobymao/sqlglot/commit/7c561165fad44b1af9008dcdf1d636323a28ef58) - annoate lag for mysql *(PR [#8133](https://github.com/tobymao/sqlglot/pull/8133) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
250
|
+
|
|
251
|
+
annoate lag for mysql (#8133)
|
|
252
|
+
|
|
253
|
+
- due to [`ac7b6d9`](https://github.com/tobymao/sqlglot/commit/ac7b6d922b8ea2c318efe767603dd276f7a1c71f) - do not prune projections under INTERSECT/EXCEPT ALL or GROUP BY ALL *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
|
254
|
+
|
|
255
|
+
do not prune projections under INTERSECT/EXCEPT ALL or GROUP BY ALL
|
|
256
|
+
|
|
257
|
+
- due to [`e8836e8`](https://github.com/tobymao/sqlglot/commit/e8836e8fb1a0c59ce40bbac9832565aa8898d3a5) - annotate width_bucket for postgres *(PR [#8135](https://github.com/tobymao/sqlglot/pull/8135) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
258
|
+
|
|
259
|
+
annotate width_bucket for postgres (#8135)
|
|
260
|
+
|
|
261
|
+
- due to [`e7685a7`](https://github.com/tobymao/sqlglot/commit/e7685a7480fa698e77ee0a209bf29c93c825738a) - represent shadowed clause column refs as qualified Columns *(PR [#8128](https://github.com/tobymao/sqlglot/pull/8128) by [@georgesittas](https://github.com/georgesittas))*:
|
|
262
|
+
|
|
263
|
+
represent shadowed clause column refs as qualified Columns (#8128)
|
|
264
|
+
|
|
265
|
+
- due to [`8a29419`](https://github.com/tobymao/sqlglot/commit/8a29419f98c88939080db8e4fe1df34225d9135a) - stop pruning implicit GROUP BY ALL keys during projection pushdown *(PR [#8129](https://github.com/tobymao/sqlglot/pull/8129) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*:
|
|
266
|
+
|
|
267
|
+
stop pruning implicit GROUP BY ALL keys during projection pushdown (#8129)
|
|
268
|
+
|
|
269
|
+
- due to [`8ba0435`](https://github.com/tobymao/sqlglot/commit/8ba04354d37cb60031d3b14249743620dc7b2732) - escape `gen` delimited names (strings, etc) *(PR [#8134](https://github.com/tobymao/sqlglot/pull/8134) by [@georgesittas](https://github.com/georgesittas))*:
|
|
270
|
+
|
|
271
|
+
escape `gen` delimited names (strings, etc) (#8134)
|
|
272
|
+
|
|
273
|
+
- due to [`9312212`](https://github.com/tobymao/sqlglot/commit/9312212f2f3bda9b8bca191679e22c386c11edf9) - properly support `UNION BY NAME` in qualify, type inference *(PR [#8136](https://github.com/tobymao/sqlglot/pull/8136) by [@georgesittas](https://github.com/georgesittas))*:
|
|
274
|
+
|
|
275
|
+
properly support `UNION BY NAME` in qualify, type inference (#8136)
|
|
276
|
+
|
|
277
|
+
- due to [`3a76dfd`](https://github.com/tobymao/sqlglot/commit/3a76dfdbb0c4409e81fd30795c0d978fd827d23e) - annotate encode for postgresql *(PR [#8137](https://github.com/tobymao/sqlglot/pull/8137) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
278
|
+
|
|
279
|
+
annotate encode for postgresql (#8137)
|
|
280
|
+
|
|
281
|
+
- due to [`b7386b7`](https://github.com/tobymao/sqlglot/commit/b7386b756675567f89a098b7a5dbe598264ec2d5) - scope DML / DDL query fragments properly *(PR [#8140](https://github.com/tobymao/sqlglot/pull/8140) by [@georgesittas](https://github.com/georgesittas))*:
|
|
282
|
+
|
|
283
|
+
scope DML / DDL query fragments properly (#8140)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
### :sparkles: New Features
|
|
287
|
+
- [`31f3751`](https://github.com/tobymao/sqlglot/commit/31f375116dbd504615b0ebf50e4be917bc4e9305) - **trino**: parse WHILE/DO/END WHILE routine statements [CLAUDE] *(PR [#8122](https://github.com/tobymao/sqlglot/pull/8122) by [@rusackas](https://github.com/rusackas))*
|
|
288
|
+
- [`07c2241`](https://github.com/tobymao/sqlglot/commit/07c22415977c21b342d578bd01b0ea7352a8a726) - **databricks**: support `and`, `or` function syntax *(PR [#8065](https://github.com/tobymao/sqlglot/pull/8065) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
289
|
+
- [`9815786`](https://github.com/tobymao/sqlglot/commit/9815786785604e8d580a229b31dc90b94a58b3ad) - **trino**: parse LOOP/REPEAT/ITERATE/LEAVE routine statements [CLAUDE] *(PR [#8130](https://github.com/tobymao/sqlglot/pull/8130) by [@rusackas](https://github.com/rusackas))*
|
|
290
|
+
- [`7c56116`](https://github.com/tobymao/sqlglot/commit/7c561165fad44b1af9008dcdf1d636323a28ef58) - **optimizer**: annoate lag for mysql *(PR [#8133](https://github.com/tobymao/sqlglot/pull/8133) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
291
|
+
- [`e8836e8`](https://github.com/tobymao/sqlglot/commit/e8836e8fb1a0c59ce40bbac9832565aa8898d3a5) - **optimizer**: annotate width_bucket for postgres *(PR [#8135](https://github.com/tobymao/sqlglot/pull/8135) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
292
|
+
- [`3a76dfd`](https://github.com/tobymao/sqlglot/commit/3a76dfdbb0c4409e81fd30795c0d978fd827d23e) - **optimizer**: annotate encode for postgresql *(PR [#8137](https://github.com/tobymao/sqlglot/pull/8137) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*
|
|
293
|
+
- [`98f3d66`](https://github.com/tobymao/sqlglot/commit/98f3d663c9f110216a5495e8d5b779d9d4e8cc61) - **executor**: implement ILIKE [CLAUDE] *(PR [#8144](https://github.com/tobymao/sqlglot/pull/8144) by [@jbylund](https://github.com/jbylund))*
|
|
294
|
+
- [`9a8129b`](https://github.com/tobymao/sqlglot/commit/9a8129b6f2667673f24713f4b49162ebae1f699d) - **executor**: implement LENGTH [CLAUDE] *(PR [#8145](https://github.com/tobymao/sqlglot/pull/8145) by [@jbylund](https://github.com/jbylund))*
|
|
295
|
+
|
|
296
|
+
### :bug: Bug Fixes
|
|
297
|
+
- [`36bc768`](https://github.com/tobymao/sqlglot/commit/36bc768fc122337e9c79eaaee900610aef4b7d42) - **prql**: `_select_all` accepts the Optional its callers pass *(commit by [@tobymao](https://github.com/tobymao))*
|
|
298
|
+
- [`5c12472`](https://github.com/tobymao/sqlglot/commit/5c12472a8016dff6eb8d9aab9c9a029adab2d514) - **optimizer**: stop optimizing OR-conditioned joins and anti joins *(PR [#8118](https://github.com/tobymao/sqlglot/pull/8118) by [@georgesittas](https://github.com/georgesittas))*
|
|
299
|
+
- :arrow_lower_right: *fixes issue [#8101](https://github.com/tobymao/sqlglot/issues/8101) opened by [@dev-willbird1936](https://github.com/dev-willbird1936)*
|
|
300
|
+
- [`84447c0`](https://github.com/tobymao/sqlglot/commit/84447c08e98b4006c0a87209dfb23708c2f4f177) - **sqlite**: drop a dead `is not None` guard on a sentinel-typed Token *(commit by [@tobymao](https://github.com/tobymao))*
|
|
301
|
+
- [`353d0ff`](https://github.com/tobymao/sqlglot/commit/353d0ffca96acbd5407e73b832cadf5c1fedc9fe) - **sqlite**: emit STORED for generated columns instead of PERSISTED *(PR [#8123](https://github.com/tobymao/sqlglot/pull/8123) by [@dgvj-work](https://github.com/dgvj-work))*
|
|
302
|
+
- [`3d74d62`](https://github.com/tobymao/sqlglot/commit/3d74d62c323ad3097c690092e7a4eb86aabb2f2d) - **optimizer**: prevent pruning columns referenced by GROUP BY / HAVING / QUALIFY *(PR [#8121](https://github.com/tobymao/sqlglot/pull/8121) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
303
|
+
- [`ac7b6d9`](https://github.com/tobymao/sqlglot/commit/ac7b6d922b8ea2c318efe767603dd276f7a1c71f) - **optimizer**: do not prune projections under INTERSECT/EXCEPT ALL or GROUP BY ALL *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
304
|
+
- [`8a29419`](https://github.com/tobymao/sqlglot/commit/8a29419f98c88939080db8e4fe1df34225d9135a) - **optimizer**: stop pruning implicit GROUP BY ALL keys during projection pushdown *(PR [#8129](https://github.com/tobymao/sqlglot/pull/8129) by [@fivetran-kwoodbeck](https://github.com/fivetran-kwoodbeck))*
|
|
305
|
+
- [`8ba0435`](https://github.com/tobymao/sqlglot/commit/8ba04354d37cb60031d3b14249743620dc7b2732) - **optimizer**: escape `gen` delimited names (strings, etc) *(PR [#8134](https://github.com/tobymao/sqlglot/pull/8134) by [@georgesittas](https://github.com/georgesittas))*
|
|
306
|
+
- [`9312212`](https://github.com/tobymao/sqlglot/commit/9312212f2f3bda9b8bca191679e22c386c11edf9) - **optimizer**: properly support `UNION BY NAME` in qualify, type inference *(PR [#8136](https://github.com/tobymao/sqlglot/pull/8136) by [@georgesittas](https://github.com/georgesittas))*
|
|
307
|
+
- [`1dae76b`](https://github.com/tobymao/sqlglot/commit/1dae76b5833a47c9e2bc0a72a93d94d829377a0c) - **executor**: only truncate typed division when both operands are integers [CLAUDE] *(PR [#8138](https://github.com/tobymao/sqlglot/pull/8138) by [@jbylund](https://github.com/jbylund))*
|
|
308
|
+
- :arrow_lower_right: *fixes issue [#8132](https://github.com/tobymao/sqlglot/issues/8132) opened by [@jbylund](https://github.com/jbylund)*
|
|
309
|
+
- [`7cab581`](https://github.com/tobymao/sqlglot/commit/7cab581ffea8df170402381d942b6ac0781d2125) - **executor**: honor the negate flag on LIKE and ILIKE [CLAUDE] *(PR [#8139](https://github.com/tobymao/sqlglot/pull/8139) by [@jbylund](https://github.com/jbylund))*
|
|
310
|
+
- [`44b73a0`](https://github.com/tobymao/sqlglot/commit/44b73a002328aea0fe0f655921ce43e43084e2d3) - **executor**: fullmatch like semantics *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
311
|
+
- [`8619582`](https://github.com/tobymao/sqlglot/commit/86195827b827a34d324d6e21e0076d20031fb8a6) - **optimizer**: preserve identifier meta when restoring JSON dot part case *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
312
|
+
- [`b7386b7`](https://github.com/tobymao/sqlglot/commit/b7386b756675567f89a098b7a5dbe598264ec2d5) - **optimizer**: scope DML / DDL query fragments properly *(PR [#8140](https://github.com/tobymao/sqlglot/pull/8140) by [@georgesittas](https://github.com/georgesittas))*
|
|
313
|
+
|
|
314
|
+
### :recycle: Refactors
|
|
315
|
+
- [`e7685a7`](https://github.com/tobymao/sqlglot/commit/e7685a7480fa698e77ee0a209bf29c93c825738a) - **optimizer**: represent shadowed clause column refs as qualified Columns *(PR [#8128](https://github.com/tobymao/sqlglot/pull/8128) by [@georgesittas](https://github.com/georgesittas))*
|
|
316
|
+
|
|
317
|
+
### :wrench: Chores
|
|
318
|
+
- [`1183e88`](https://github.com/tobymao/sqlglot/commit/1183e88c9661f98220c1a3719b5570e2efd645d0) - **mypy**: Bump version to v.2.3.0.post1 *(PR [#8126](https://github.com/tobymao/sqlglot/pull/8126) by [@VaggelisD](https://github.com/VaggelisD))*
|
|
319
|
+
|
|
320
|
+
|
|
4
321
|
## [v30.16.0] - 2026-08-10
|
|
5
322
|
### :boom: BREAKING CHANGES
|
|
6
323
|
- due to [`32d44c5`](https://github.com/tobymao/sqlglot/commit/32d44c50d0138762c812a9326bb394eebd862464) - annotate bit_and for mysql *(PR [#8038](https://github.com/tobymao/sqlglot/pull/8038) by [@PiyaDaswadkar](https://github.com/PiyaDaswadkar))*:
|
|
@@ -15397,3 +15714,5 @@ pip install "sqlglot[c]" # compiled — faster, but no subclassing
|
|
|
15397
15714
|
[v30.13.0]: https://github.com/tobymao/sqlglot/compare/v30.12.0...v30.13.0
|
|
15398
15715
|
[v30.14.0]: https://github.com/tobymao/sqlglot/compare/v30.13.0...v30.14.0
|
|
15399
15716
|
[v30.16.0]: https://github.com/tobymao/sqlglot/compare/v30.15.0...v30.16.0
|
|
15717
|
+
[v30.17.0]: https://github.com/tobymao/sqlglot/compare/v30.16.0...v30.17.0
|
|
15718
|
+
[v30.18.0]: https://github.com/tobymao/sqlglot/compare/v30.17.0...v30.18.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlglot
|
|
3
|
-
Version: 30.
|
|
3
|
+
Version: 30.19.0
|
|
4
4
|
Summary: An easily customizable SQL parser and transpiler
|
|
5
5
|
Author-email: Toby Mao <toby.mao@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -19,7 +19,7 @@ Description-Content-Type: text/markdown
|
|
|
19
19
|
License-File: LICENSE
|
|
20
20
|
Provides-Extra: dev
|
|
21
21
|
Requires-Dist: duckdb>=0.6; extra == "dev"
|
|
22
|
-
Requires-Dist: sqlglot-mypy>=2.3.0.
|
|
22
|
+
Requires-Dist: sqlglot-mypy>=2.3.0.post2; python_version >= "3.10" and extra == "dev"
|
|
23
23
|
Requires-Dist: mypy; python_version < "3.10" and extra == "dev"
|
|
24
24
|
Requires-Dist: setuptools_scm; extra == "dev"
|
|
25
25
|
Requires-Dist: pandas; extra == "dev"
|
|
@@ -34,10 +34,10 @@ Requires-Dist: types-pytz; extra == "dev"
|
|
|
34
34
|
Requires-Dist: typing_extensions; extra == "dev"
|
|
35
35
|
Requires-Dist: pyperf; extra == "dev"
|
|
36
36
|
Provides-Extra: c
|
|
37
|
-
Requires-Dist: sqlglotc==30.
|
|
37
|
+
Requires-Dist: sqlglotc==30.19.0; python_version >= "3.10" and extra == "c"
|
|
38
38
|
Provides-Extra: rs
|
|
39
39
|
Requires-Dist: sqlglotrs==0.13.0; extra == "rs"
|
|
40
|
-
Requires-Dist: sqlglotc==30.
|
|
40
|
+
Requires-Dist: sqlglotc==30.19.0; python_version >= "3.10" and extra == "rs"
|
|
41
41
|
Dynamic: license-file
|
|
42
42
|
Dynamic: provides-extra
|
|
43
43
|
|
|
@@ -9,7 +9,7 @@ setup(
|
|
|
9
9
|
"duckdb>=0.6",
|
|
10
10
|
# sqlglot-mypy 1.20+ is the build dep for sqlglotc and only ships
|
|
11
11
|
# for py3.10+; on py3.9 just use upstream mypy for type checking.
|
|
12
|
-
"sqlglot-mypy >= 2.3.0.
|
|
12
|
+
"sqlglot-mypy >= 2.3.0.post2; python_version >= '3.10'",
|
|
13
13
|
"mypy; python_version < '3.10'",
|
|
14
14
|
"setuptools_scm",
|
|
15
15
|
"pandas",
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '30.
|
|
22
|
-
__version_tuple__ = version_tuple = (30,
|
|
21
|
+
__version__ = version = '30.19.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (30, 19, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g025622283'
|
|
@@ -122,6 +122,8 @@ def __getattr__(name):
|
|
|
122
122
|
if module_name:
|
|
123
123
|
with _import_lock:
|
|
124
124
|
module = importlib.import_module(f"sqlglot.dialects.{module_name}")
|
|
125
|
-
|
|
125
|
+
attr = getattr(module, name)
|
|
126
|
+
globals()[name] = attr
|
|
127
|
+
return attr
|
|
126
128
|
|
|
127
129
|
raise AttributeError(f"module {__name__} has no attribute {name}")
|
|
@@ -10,6 +10,7 @@ from sqlglot._typing import E
|
|
|
10
10
|
from sqlglot.parsers.bigquery import BigQueryParser
|
|
11
11
|
from sqlglot.generators.bigquery import BigQueryGenerator
|
|
12
12
|
from sqlglot.dialects.dialect import (
|
|
13
|
+
ASCII_LOWER,
|
|
13
14
|
Dialect,
|
|
14
15
|
NormalizationStrategy,
|
|
15
16
|
)
|
|
@@ -50,6 +51,7 @@ class BigQuery(Dialect):
|
|
|
50
51
|
|
|
51
52
|
# https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#case_sensitivity
|
|
52
53
|
NORMALIZATION_STRATEGY = NormalizationStrategy.CASE_INSENSITIVE
|
|
54
|
+
ASCII_ONLY_NORMALIZATION = True
|
|
53
55
|
|
|
54
56
|
# bigquery udfs are case sensitive
|
|
55
57
|
NORMALIZE_FUNCTIONS = False
|
|
@@ -152,7 +154,7 @@ class BigQuery(Dialect):
|
|
|
152
154
|
or expression.meta_get("is_table")
|
|
153
155
|
)
|
|
154
156
|
if not case_sensitive:
|
|
155
|
-
expression.set("this", expression.this.
|
|
157
|
+
expression.set("this", expression.this.translate(ASCII_LOWER))
|
|
156
158
|
|
|
157
159
|
return t.cast(E, expression)
|
|
158
160
|
|