sqlglot 27.15.3__tar.gz → 27.16.1__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-27.15.3 → sqlglot-27.16.1}/CHANGELOG.md +29 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/PKG-INFO +1 -1
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/_version.py +3 -3
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/snowflake.py +1 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/expressions.py +8 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/parser.py +1 -1
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/PKG-INFO +1 -1
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_oracle.py +14 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_postgres.py +3 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_snowflake.py +4 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/annotate_functions.sql +20 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/.gitignore +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/.gitpod.yml +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/.pre-commit-config.yaml +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/CONTRIBUTING.md +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/LICENSE +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/MANIFEST.in +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/Makefile +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/README.md +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/pyproject.toml +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/setup.cfg +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/setup.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/__init__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/__main__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/_typing.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/__init__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/athena.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/bigquery.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/clickhouse.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/databricks.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/dialect.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/doris.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/dremio.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/drill.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/druid.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/duckdb.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/dune.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/exasol.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/fabric.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/hive.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/materialize.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/mysql.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/oracle.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/postgres.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/presto.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/prql.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/redshift.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/risingwave.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/singlestore.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/spark.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/spark2.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/sqlite.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/starrocks.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/tableau.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/teradata.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/trino.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/tsql.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/diff.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/errors.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/__init__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/context.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/env.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/python.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/table.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/generator.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/helper.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/jsonpath.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/lineage.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/__init__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/annotate_types.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/canonicalize.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/eliminate_ctes.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/eliminate_joins.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/isolate_table_selects.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/merge_subqueries.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/normalize.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/normalize_identifiers.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/optimize_joins.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/optimizer.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/pushdown_predicates.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/pushdown_projections.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/qualify.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/qualify_columns.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/qualify_tables.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/scope.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/simplify.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/unnest_subqueries.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/planner.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/py.typed +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/schema.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/serde.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/time.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/tokens.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/transforms.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/trie.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/SOURCES.txt +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/dependency_links.txt +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/requires.txt +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/top_level.txt +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.png +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/Cargo.lock +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/Cargo.toml +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/dialect_settings.json +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/long.rs +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/token_type_settings.json +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/tokenizer_settings.json +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/pyproject.toml +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/lib.rs +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/settings.rs +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/token.rs +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/tokenizer.rs +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/trie.rs +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/__init__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/__init__.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_athena.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_bigquery.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_clickhouse.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_databricks.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_dialect.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_doris.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_dremio.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_drill.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_druid.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_duckdb.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_dune.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_exasol.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_fabric.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_hive.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_materialize.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_mysql.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_pipe_syntax.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_presto.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_prql.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_redshift.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_risingwave.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_singlestore.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_spark.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_sqlite.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_starrocks.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_tableau.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_teradata.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_trino.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_tsql.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/identity.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/jsonpath/LICENSE +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/jsonpath/cts.json +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/annotate_types.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/canonicalize.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/normalize.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/optimizer.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/simplify.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/partial.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/pretty.sql +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/gen_fixtures.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/helpers.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_build.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_dialect_imports.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_diff.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_docs.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_executor.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_expressions.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_generator.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_helper.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_jsonpath.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_lineage.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_optimizer.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_parser.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_schema.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_serde.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_time.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_tokens.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_transforms.py +0 -0
- {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_transpile.py +0 -0
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## [v27.16.0] - 2025-09-18
|
|
5
|
+
### :boom: BREAKING CHANGES
|
|
6
|
+
- due to [`5a973e9`](https://github.com/tobymao/sqlglot/commit/5a973e9a88fa7f522a9bf91dc60fb0f6effef53d) - annotate types for Snowflake AI_CLASSIFY function *(PR [#5909](https://github.com/tobymao/sqlglot/pull/5909) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
|
|
7
|
+
|
|
8
|
+
annotate types for Snowflake AI_CLASSIFY function (#5909)
|
|
9
|
+
|
|
10
|
+
- due to [`2d0d908`](https://github.com/tobymao/sqlglot/commit/2d0d908b5bbc32ff3bc92eb1ae9fc6e5ac3409bc) - produce TableAlias instead of Alias for USING in merge builder *(PR [#5911](https://github.com/tobymao/sqlglot/pull/5911) by [@georgesittas](https://github.com/georgesittas))*:
|
|
11
|
+
|
|
12
|
+
produce TableAlias instead of Alias for USING in merge builder (#5911)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### :sparkles: New Features
|
|
16
|
+
- [`5a973e9`](https://github.com/tobymao/sqlglot/commit/5a973e9a88fa7f522a9bf91dc60fb0f6effef53d) - **optimizer**: annotate types for Snowflake AI_CLASSIFY function *(PR [#5909](https://github.com/tobymao/sqlglot/pull/5909) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
|
|
17
|
+
|
|
18
|
+
### :bug: Bug Fixes
|
|
19
|
+
- [`2d0d908`](https://github.com/tobymao/sqlglot/commit/2d0d908b5bbc32ff3bc92eb1ae9fc6e5ac3409bc) - produce TableAlias instead of Alias for USING in merge builder *(PR [#5911](https://github.com/tobymao/sqlglot/pull/5911) by [@georgesittas](https://github.com/georgesittas))*
|
|
20
|
+
- :arrow_lower_right: *fixes issue [#5910](https://github.com/tobymao/sqlglot/issues/5910) opened by [@deepyaman](https://github.com/deepyaman)*
|
|
21
|
+
|
|
22
|
+
### :wrench: Chores
|
|
23
|
+
- [`e8974e7`](https://github.com/tobymao/sqlglot/commit/e8974e70d9956ce7a5cb119ba465660f5f172a17) - **optimizer**: Add tests for snowflake likeall, likeany and ilikeany functions *(PR [#5908](https://github.com/tobymao/sqlglot/pull/5908) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
## [v27.15.3] - 2025-09-17
|
|
27
|
+
### :bug: Bug Fixes
|
|
28
|
+
- [`bd3e965`](https://github.com/tobymao/sqlglot/commit/bd3e9655aa72ffef8a9e0221205fa2c3915ef58b) - allow `lock` to be used as an identifier *(commit by [@georgesittas](https://github.com/georgesittas))*
|
|
29
|
+
|
|
30
|
+
|
|
4
31
|
## [v27.15.2] - 2025-09-17
|
|
5
32
|
### :sparkles: New Features
|
|
6
33
|
- [`d5cf114`](https://github.com/tobymao/sqlglot/commit/d5cf1149932850a91cb5f1ebecda2652616729ef) - **duckdb**: support INSTALL *(PR [#5904](https://github.com/tobymao/sqlglot/pull/5904) by [@geooo109](https://github.com/geooo109))*
|
|
@@ -7346,3 +7373,5 @@ Changelog
|
|
|
7346
7373
|
[v27.15.0]: https://github.com/tobymao/sqlglot/compare/v27.14.0...v27.15.0
|
|
7347
7374
|
[v27.15.1]: https://github.com/tobymao/sqlglot/compare/v27.15.0...v27.15.1
|
|
7348
7375
|
[v27.15.2]: https://github.com/tobymao/sqlglot/compare/v27.15.1...v27.15.2
|
|
7376
|
+
[v27.15.3]: https://github.com/tobymao/sqlglot/compare/v27.15.2...v27.15.3
|
|
7377
|
+
[v27.16.0]: https://github.com/tobymao/sqlglot/compare/v27.15.3...v27.16.0
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '27.
|
|
32
|
-
__version_tuple__ = version_tuple = (27,
|
|
31
|
+
__version__ = version = '27.16.1'
|
|
32
|
+
__version_tuple__ = version_tuple = (27, 16, 1)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g0e256b3f8'
|
|
@@ -5780,6 +5780,11 @@ class AISummarizeAgg(AggFunc):
|
|
|
5780
5780
|
_sql_names = ["AI_SUMMARIZE_AGG"]
|
|
5781
5781
|
|
|
5782
5782
|
|
|
5783
|
+
class AIClassify(Func):
|
|
5784
|
+
arg_types = {"this": True, "categories": True, "config": False}
|
|
5785
|
+
_sql_names = ["AI_CLASSIFY"]
|
|
5786
|
+
|
|
5787
|
+
|
|
5783
5788
|
class ArrayAll(Func):
|
|
5784
5789
|
arg_types = {"this": True, "expression": True}
|
|
5785
5790
|
|
|
@@ -8312,6 +8317,9 @@ def merge(
|
|
|
8312
8317
|
if returning:
|
|
8313
8318
|
merge = merge.returning(returning, dialect=dialect, copy=False, **opts)
|
|
8314
8319
|
|
|
8320
|
+
if isinstance(using_clause := merge.args.get("using"), Alias):
|
|
8321
|
+
using_clause.replace(alias_(using_clause.this, using_clause.args["alias"], table=True))
|
|
8322
|
+
|
|
8315
8323
|
return merge
|
|
8316
8324
|
|
|
8317
8325
|
|
|
@@ -5100,7 +5100,7 @@ class Parser(metaclass=_Parser):
|
|
|
5100
5100
|
isinstance(this, exp.Column)
|
|
5101
5101
|
and not this.table
|
|
5102
5102
|
and not this.this.quoted
|
|
5103
|
-
and this.name.upper()
|
|
5103
|
+
and this.name.upper() in ("IS", "ROWS")
|
|
5104
5104
|
):
|
|
5105
5105
|
self._retreat(index)
|
|
5106
5106
|
return None
|
|
@@ -777,3 +777,17 @@ CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4"""
|
|
|
777
777
|
self.validate_identity("UTC_TIME(6)").assert_is(exp.UtcTime)
|
|
778
778
|
self.validate_identity("UTC_TIMESTAMP()").assert_is(exp.UtcTimestamp)
|
|
779
779
|
self.validate_identity("UTC_TIMESTAMP(6)").assert_is(exp.UtcTimestamp)
|
|
780
|
+
|
|
781
|
+
def test_merge_builder_alias(self):
|
|
782
|
+
merge_stmt = exp.merge(
|
|
783
|
+
"WHEN MATCHED THEN UPDATE SET my_table.col1 = source_table.col1",
|
|
784
|
+
"WHEN NOT MATCHED THEN INSERT (my_table.id, my_table.col1) VALUES (source_table.id, source_table.col1)",
|
|
785
|
+
into="my_table",
|
|
786
|
+
using="(SELECT * FROM something) source_table",
|
|
787
|
+
on="my_table.id = source_table.id",
|
|
788
|
+
dialect="oracle",
|
|
789
|
+
)
|
|
790
|
+
self.assertEqual(
|
|
791
|
+
merge_stmt.sql("oracle"),
|
|
792
|
+
"MERGE INTO my_table USING (SELECT * FROM something) source_table ON my_table.id = source_table.id WHEN MATCHED THEN UPDATE SET my_table.col1 = source_table.col1 WHEN NOT MATCHED THEN INSERT (my_table.id, my_table.col1) VALUES (source_table.id, source_table.col1)",
|
|
793
|
+
)
|
|
@@ -84,6 +84,9 @@ class TestPostgres(Validator):
|
|
|
84
84
|
self.validate_identity("SELECT INTERVAL '2.5 MONTH'")
|
|
85
85
|
self.validate_identity("SELECT INTERVAL '-10.75 MINUTE'")
|
|
86
86
|
self.validate_identity("SELECT INTERVAL '0.123456789 SECOND'")
|
|
87
|
+
self.validate_identity(
|
|
88
|
+
"SELECT SUM(x) OVER (PARTITION BY y ORDER BY interval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - SUM(x) OVER (PARTITION BY y ORDER BY interval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS total"
|
|
89
|
+
)
|
|
87
90
|
self.validate_identity(
|
|
88
91
|
"SELECT * FROM test_data, LATERAL JSONB_ARRAY_ELEMENTS(data) WITH ORDINALITY AS elem(value, ordinality)"
|
|
89
92
|
)
|
|
@@ -68,6 +68,10 @@ class TestSnowflake(Validator):
|
|
|
68
68
|
self.validate_identity("SELECT ARRAY_UNIQUE_AGG(x)")
|
|
69
69
|
self.validate_identity("SELECT AI_AGG(review, 'Summarize the reviews')")
|
|
70
70
|
self.validate_identity("SELECT AI_SUMMARIZE_AGG(review)")
|
|
71
|
+
self.validate_identity("SELECT AI_CLASSIFY('text', ['travel', 'cooking'])")
|
|
72
|
+
self.validate_identity(
|
|
73
|
+
"SELECT AI_CLASSIFY('text', ['travel', 'cooking'], OBJECT_CONSTRUCT('output_mode', 'multi'))"
|
|
74
|
+
)
|
|
71
75
|
self.validate_identity("SELECT OBJECT_CONSTRUCT()")
|
|
72
76
|
self.validate_identity("SELECT DAYOFMONTH(CURRENT_TIMESTAMP())")
|
|
73
77
|
self.validate_identity("SELECT DAYOFYEAR(CURRENT_TIMESTAMP())")
|
|
@@ -1551,6 +1551,14 @@ VARCHAR;
|
|
|
1551
1551
|
AI_SUMMARIZE_AGG(null);
|
|
1552
1552
|
VARCHAR;
|
|
1553
1553
|
|
|
1554
|
+
# dialect: snowflake
|
|
1555
|
+
AI_CLASSIFY('text', ['travel', 'cooking']);
|
|
1556
|
+
VARCHAR;
|
|
1557
|
+
|
|
1558
|
+
# dialect: snowflake
|
|
1559
|
+
AI_CLASSIFY('text', ['travel', 'cooking'], {'output_mode': 'multi'});
|
|
1560
|
+
VARCHAR;
|
|
1561
|
+
|
|
1554
1562
|
# dialect: snowflake
|
|
1555
1563
|
CHARINDEX('world', 'hello world');
|
|
1556
1564
|
INT;
|
|
@@ -1999,6 +2007,18 @@ BOOLEAN;
|
|
|
1999
2007
|
tbl.str_col NOT LIKE '%e%';
|
|
2000
2008
|
BOOLEAN;
|
|
2001
2009
|
|
|
2010
|
+
# dialect: snowflake
|
|
2011
|
+
tbl.str_col LIKE ALL ('H%', '%o');
|
|
2012
|
+
BOOLEAN;
|
|
2013
|
+
|
|
2014
|
+
# dialect: snowflake
|
|
2015
|
+
tbl.str_col LIKE ANY ('H%', '%o');
|
|
2016
|
+
BOOLEAN;
|
|
2017
|
+
|
|
2018
|
+
# dialect: snowflake
|
|
2019
|
+
tbl.str_col ILIKE ANY ('h%', '%x');
|
|
2020
|
+
BOOLEAN;
|
|
2021
|
+
|
|
2002
2022
|
--------------------------------------
|
|
2003
2023
|
-- T-SQL
|
|
2004
2024
|
--------------------------------------
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz
RENAMED
|
File without changes
|
|
File without changes
|
{sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|