sqlglot 26.25.1__tar.gz → 26.25.3__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-26.25.1 → sqlglot-26.25.3}/CHANGELOG.md +12 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/PKG-INFO +1 -1
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/_version.py +2 -2
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/postgres.py +7 -5
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/parser.py +3 -1
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot.egg-info/PKG-INFO +1 -1
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_postgres.py +15 -13
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_parser.py +7 -1
- {sqlglot-26.25.1 → sqlglot-26.25.3}/.gitignore +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/.gitpod.yml +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/.pre-commit-config.yaml +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/CONTRIBUTING.md +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/LICENSE +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/MANIFEST.in +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/Makefile +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/README.md +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/pyproject.toml +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/setup.cfg +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/setup.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/__init__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/__main__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/_typing.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/__init__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/athena.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/bigquery.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/clickhouse.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/databricks.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/dialect.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/doris.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/drill.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/druid.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/duckdb.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/dune.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/hive.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/materialize.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/mysql.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/oracle.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/presto.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/prql.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/redshift.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/risingwave.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/snowflake.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/spark.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/spark2.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/sqlite.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/starrocks.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/tableau.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/teradata.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/trino.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/dialects/tsql.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/diff.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/errors.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/executor/__init__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/executor/context.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/executor/env.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/executor/python.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/executor/table.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/expressions.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/generator.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/helper.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/jsonpath.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/lineage.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/__init__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/annotate_types.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/canonicalize.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/eliminate_ctes.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/eliminate_joins.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/isolate_table_selects.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/merge_subqueries.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/normalize.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/normalize_identifiers.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/optimize_joins.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/optimizer.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/pushdown_predicates.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/pushdown_projections.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/qualify.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/qualify_columns.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/qualify_tables.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/scope.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/simplify.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/optimizer/unnest_subqueries.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/planner.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/py.typed +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/schema.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/serde.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/time.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/tokens.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/transforms.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot/trie.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot.egg-info/SOURCES.txt +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot.egg-info/dependency_links.txt +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot.egg-info/requires.txt +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot.egg-info/top_level.txt +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglot.png +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/Cargo.lock +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/Cargo.toml +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/benches/dialect_settings.json +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/benches/long.rs +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/benches/token_type_settings.json +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/benches/tokenizer_settings.json +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/pyproject.toml +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/src/lib.rs +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/src/settings.rs +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/src/token.rs +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/src/tokenizer.rs +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/sqlglotrs/src/trie.rs +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/__init__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/__init__.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_athena.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_bigquery.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_clickhouse.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_databricks.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_dialect.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_doris.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_drill.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_druid.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_duckdb.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_dune.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_hive.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_materialize.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_mysql.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_oracle.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_presto.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_prql.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_redshift.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_risingwave.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_snowflake.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_spark.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_sqlite.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_starrocks.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_tableau.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_teradata.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_trino.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/dialects/test_tsql.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/identity.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/jsonpath/LICENSE +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/jsonpath/cts.json +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/annotate_functions.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/annotate_types.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/canonicalize.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/normalize.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/optimizer.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/simplify.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/partial.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/fixtures/pretty.sql +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/gen_fixtures.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/helpers.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_build.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_diff.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_docs.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_executor.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_expressions.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_generator.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_helper.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_jsonpath.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_lineage.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_optimizer.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_schema.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_serde.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_time.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_tokens.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_transforms.py +0 -0
- {sqlglot-26.25.1 → sqlglot-26.25.3}/tests/test_transpile.py +0 -0
@@ -1,6 +1,16 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
## [v26.25.2] - 2025-06-04
|
5
|
+
### :sparkles: New Features
|
6
|
+
- [`8b5129f`](https://github.com/tobymao/sqlglot/commit/8b5129f288880032f0bf9d649984d82314039af1) - **postgres**: improve pretty-formatting of ARRAY[...] *(commit by [@georgesittas](https://github.com/georgesittas))*
|
7
|
+
|
8
|
+
|
9
|
+
## [v26.25.1] - 2025-06-04
|
10
|
+
### :wrench: Chores
|
11
|
+
- [`440590b`](https://github.com/tobymao/sqlglot/commit/440590bf92ab1281f50b96a1400cbca695d40f0c) - bump sqlglotrs to 0.6.1 *(commit by [@georgesittas](https://github.com/georgesittas))*
|
12
|
+
|
13
|
+
|
4
14
|
## [v26.25.0] - 2025-06-03
|
5
15
|
### :boom: BREAKING CHANGES
|
6
16
|
- due to [`72ce404`](https://github.com/tobymao/sqlglot/commit/72ce40405625239a0d6763d502e5af8b12abfe9b) - Refactor ALTER TABLE ADD parsing *(PR [#5144](https://github.com/tobymao/sqlglot/pull/5144) by [@VaggelisD](https://github.com/VaggelisD))*:
|
@@ -4776,3 +4786,5 @@ Changelog
|
|
4776
4786
|
[v26.23.0]: https://github.com/tobymao/sqlglot/compare/v26.22.1...v26.23.0
|
4777
4787
|
[v26.24.0]: https://github.com/tobymao/sqlglot/compare/v26.23.0...v26.24.0
|
4778
4788
|
[v26.25.0]: https://github.com/tobymao/sqlglot/compare/v26.24.0...v26.25.0
|
4789
|
+
[v26.25.1]: https://github.com/tobymao/sqlglot/compare/v26.25.0...v26.25.1
|
4790
|
+
[v26.25.2]: https://github.com/tobymao/sqlglot/compare/v26.25.1...v26.25.2
|
@@ -13,6 +13,7 @@ from sqlglot.dialects.dialect import (
|
|
13
13
|
datestrtodate_sql,
|
14
14
|
build_formatted_time,
|
15
15
|
filter_array_using_unnest,
|
16
|
+
inline_array_sql,
|
16
17
|
json_extract_segments,
|
17
18
|
json_path_key_only_name,
|
18
19
|
max_or_greatest,
|
@@ -728,11 +729,12 @@ class Postgres(Dialect):
|
|
728
729
|
|
729
730
|
def array_sql(self, expression: exp.Array) -> str:
|
730
731
|
exprs = expression.expressions
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
732
|
+
func_name = self.normalize_func("ARRAY")
|
733
|
+
|
734
|
+
if isinstance(seq_get(exprs, 0), exp.Select):
|
735
|
+
return f"{func_name}({self.sql(exprs[0])})"
|
736
|
+
|
737
|
+
return f"{func_name}{inline_array_sql(self, expression)}"
|
736
738
|
|
737
739
|
def computedcolumnconstraint_sql(self, expression: exp.ComputedColumnConstraint) -> str:
|
738
740
|
return f"GENERATED ALWAYS AS ({self.sql(expression, 'this')}) STORED"
|
@@ -8213,6 +8213,8 @@ class Parser(metaclass=_Parser):
|
|
8213
8213
|
)
|
8214
8214
|
|
8215
8215
|
def _parse_star_ops(self) -> t.Optional[exp.Expression]:
|
8216
|
+
star_token = self._prev
|
8217
|
+
|
8216
8218
|
if self._match_text_seq("COLUMNS", "(", advance=False):
|
8217
8219
|
this = self._parse_function()
|
8218
8220
|
if isinstance(this, exp.Columns):
|
@@ -8226,7 +8228,7 @@ class Parser(metaclass=_Parser):
|
|
8226
8228
|
"replace": self._parse_star_op("REPLACE"),
|
8227
8229
|
"rename": self._parse_star_op("RENAME"),
|
8228
8230
|
},
|
8229
|
-
)
|
8231
|
+
).update_positions(star_token)
|
8230
8232
|
|
8231
8233
|
def _parse_grant_privilege(self) -> t.Optional[exp.GrantPrivilege]:
|
8232
8234
|
privilege_parts = []
|
@@ -8,19 +8,6 @@ class TestPostgres(Validator):
|
|
8
8
|
dialect = "postgres"
|
9
9
|
|
10
10
|
def test_postgres(self):
|
11
|
-
self.validate_all(
|
12
|
-
"x ? y",
|
13
|
-
write={
|
14
|
-
"": "JSONB_CONTAINS(x, y)",
|
15
|
-
"postgres": "x ? y",
|
16
|
-
},
|
17
|
-
)
|
18
|
-
|
19
|
-
self.validate_identity("SHA384(x)")
|
20
|
-
self.validate_identity("1.x", "1. AS x")
|
21
|
-
self.validate_identity("|/ x", "SQRT(x)")
|
22
|
-
self.validate_identity("||/ x", "CBRT(x)")
|
23
|
-
|
24
11
|
expr = self.parse_one("SELECT * FROM r CROSS JOIN LATERAL UNNEST(ARRAY[1]) AS s(location)")
|
25
12
|
unnest = expr.args["joins"][0].this.this
|
26
13
|
unnest.assert_is(exp.Unnest)
|
@@ -31,6 +18,14 @@ class TestPostgres(Validator):
|
|
31
18
|
self.assertIsInstance(expr, exp.Alter)
|
32
19
|
self.assertEqual(expr.sql(dialect="postgres"), alter_table_only)
|
33
20
|
|
21
|
+
sql = "ARRAY[x" + ",x" * 27 + "]"
|
22
|
+
expected_sql = "ARRAY[\n x" + (",\n x" * 27) + "\n]"
|
23
|
+
self.validate_identity(sql, expected_sql, pretty=True)
|
24
|
+
|
25
|
+
self.validate_identity("SHA384(x)")
|
26
|
+
self.validate_identity("1.x", "1. AS x")
|
27
|
+
self.validate_identity("|/ x", "SQRT(x)")
|
28
|
+
self.validate_identity("||/ x", "CBRT(x)")
|
34
29
|
self.validate_identity("SELECT EXTRACT(QUARTER FROM CAST('2025-04-26' AS DATE))")
|
35
30
|
self.validate_identity("SELECT DATE_TRUNC('QUARTER', CAST('2025-04-26' AS DATE))")
|
36
31
|
self.validate_identity("STRING_TO_ARRAY('xx~^~yy~^~zz', '~^~', 'yy')")
|
@@ -379,6 +374,13 @@ FROM json_data, field_ids""",
|
|
379
374
|
pretty=True,
|
380
375
|
)
|
381
376
|
|
377
|
+
self.validate_all(
|
378
|
+
"x ? y",
|
379
|
+
write={
|
380
|
+
"": "JSONB_CONTAINS(x, y)",
|
381
|
+
"postgres": "x ? y",
|
382
|
+
},
|
383
|
+
)
|
382
384
|
self.validate_all(
|
383
385
|
"SELECT CURRENT_TIMESTAMP + INTERVAL '-3 MONTH'",
|
384
386
|
read={
|
@@ -957,7 +957,7 @@ class TestParser(unittest.TestCase):
|
|
957
957
|
ast = parse_one("YEAR(a) /* sqlglot.anon */")
|
958
958
|
self.assertIsInstance(ast, exp.Year)
|
959
959
|
|
960
|
-
def
|
960
|
+
def test_token_position_meta(self):
|
961
961
|
ast = parse_one(
|
962
962
|
"SELECT a, b FROM test_schema.test_table_a UNION ALL SELECT c, d FROM test_catalog.test_schema.test_table_b"
|
963
963
|
)
|
@@ -988,6 +988,12 @@ class TestParser(unittest.TestCase):
|
|
988
988
|
ast = parse_one("SELECT FOO()")
|
989
989
|
self.assertEqual(ast.find(exp.Anonymous).meta, {"line": 1, "col": 10, "start": 7, "end": 9})
|
990
990
|
|
991
|
+
ast = parse_one("SELECT * FROM t")
|
992
|
+
self.assertEqual(ast.find(exp.Star).meta, {"line": 1, "col": 8, "start": 7, "end": 7})
|
993
|
+
|
994
|
+
ast = parse_one("SELECT t.* FROM t")
|
995
|
+
self.assertEqual(ast.find(exp.Star).meta, {"line": 1, "col": 10, "start": 9, "end": 9})
|
996
|
+
|
991
997
|
def test_quoted_identifier_meta(self):
|
992
998
|
sql = 'SELECT "a" FROM "test_schema"."test_table_a"'
|
993
999
|
ast = parse_one(sql)
|
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-26.25.1 → sqlglot-26.25.3}/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-26.25.1 → sqlglot-26.25.3}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz
RENAMED
File without changes
|
File without changes
|
{sqlglot-26.25.1 → sqlglot-26.25.3}/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
|