sqlglot 26.25.0__tar.gz → 26.25.2__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.0 → sqlglot-26.25.2}/CHANGELOG.md +65 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/PKG-INFO +2 -2
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/_version.py +2 -2
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/postgres.py +7 -5
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot.egg-info/PKG-INFO +2 -2
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot.egg-info/requires.txt +1 -1
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/Cargo.lock +1 -1
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/Cargo.toml +1 -1
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_postgres.py +15 -13
- {sqlglot-26.25.0 → sqlglot-26.25.2}/.gitignore +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/.gitpod.yml +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/.pre-commit-config.yaml +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/CONTRIBUTING.md +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/LICENSE +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/MANIFEST.in +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/Makefile +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/README.md +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/pyproject.toml +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/setup.cfg +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/setup.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/__init__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/__main__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/_typing.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/__init__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/athena.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/bigquery.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/clickhouse.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/databricks.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/dialect.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/doris.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/drill.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/druid.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/duckdb.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/dune.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/hive.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/materialize.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/mysql.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/oracle.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/presto.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/prql.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/redshift.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/risingwave.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/snowflake.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/spark.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/spark2.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/sqlite.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/starrocks.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/tableau.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/teradata.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/trino.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/dialects/tsql.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/diff.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/errors.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/executor/__init__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/executor/context.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/executor/env.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/executor/python.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/executor/table.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/expressions.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/generator.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/helper.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/jsonpath.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/lineage.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/__init__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/annotate_types.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/canonicalize.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/eliminate_ctes.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/eliminate_joins.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/isolate_table_selects.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/merge_subqueries.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/normalize.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/normalize_identifiers.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/optimize_joins.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/optimizer.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/pushdown_predicates.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/pushdown_projections.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/qualify.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/qualify_columns.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/qualify_tables.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/scope.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/simplify.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/optimizer/unnest_subqueries.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/parser.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/planner.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/py.typed +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/schema.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/serde.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/time.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/tokens.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/transforms.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot/trie.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot.egg-info/SOURCES.txt +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot.egg-info/dependency_links.txt +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot.egg-info/top_level.txt +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglot.png +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/benches/dialect_settings.json +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/benches/long.rs +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/benches/token_type_settings.json +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/benches/tokenizer_settings.json +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/pyproject.toml +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/src/lib.rs +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/src/settings.rs +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/src/token.rs +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/src/tokenizer.rs +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/sqlglotrs/src/trie.rs +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/__init__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/__init__.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_athena.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_bigquery.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_clickhouse.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_databricks.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_dialect.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_doris.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_drill.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_druid.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_duckdb.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_dune.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_hive.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_materialize.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_mysql.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_oracle.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_presto.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_prql.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_redshift.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_risingwave.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_snowflake.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_spark.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_sqlite.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_starrocks.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_tableau.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_teradata.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_trino.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/dialects/test_tsql.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/identity.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/jsonpath/LICENSE +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/jsonpath/cts.json +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/annotate_functions.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/annotate_types.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/canonicalize.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/normalize.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/optimizer.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/simplify.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/partial.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/fixtures/pretty.sql +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/gen_fixtures.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/helpers.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_build.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_diff.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_docs.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_executor.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_expressions.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_generator.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_helper.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_jsonpath.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_lineage.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_optimizer.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_parser.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_schema.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_serde.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_time.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_tokens.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_transforms.py +0 -0
- {sqlglot-26.25.0 → sqlglot-26.25.2}/tests/test_transpile.py +0 -0
@@ -1,6 +1,69 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
## [v26.25.1] - 2025-06-04
|
5
|
+
### :wrench: Chores
|
6
|
+
- [`440590b`](https://github.com/tobymao/sqlglot/commit/440590bf92ab1281f50b96a1400cbca695d40f0c) - bump sqlglotrs to 0.6.1 *(commit by [@georgesittas](https://github.com/georgesittas))*
|
7
|
+
|
8
|
+
|
9
|
+
## [v26.25.0] - 2025-06-03
|
10
|
+
### :boom: BREAKING CHANGES
|
11
|
+
- 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))*:
|
12
|
+
|
13
|
+
Refactor ALTER TABLE ADD parsing (#5144)
|
14
|
+
|
15
|
+
- due to [`e73ddb7`](https://github.com/tobymao/sqlglot/commit/e73ddb733b7f120ae74054e6d4dc7d458f59ac50) - preserve TIMESTAMP on roundtrip *(PR [#5145](https://github.com/tobymao/sqlglot/pull/5145) by [@georgesittas](https://github.com/georgesittas))*:
|
16
|
+
|
17
|
+
preserve TIMESTAMP on roundtrip (#5145)
|
18
|
+
|
19
|
+
- due to [`f6124c6`](https://github.com/tobymao/sqlglot/commit/f6124c6343f67563fc19f617891ecfc145a642db) - return token vector in `tokenize` even on failure *(PR [#5155](https://github.com/tobymao/sqlglot/pull/5155) by [@georgesittas](https://github.com/georgesittas))*:
|
20
|
+
|
21
|
+
return token vector in `tokenize` even on failure (#5155)
|
22
|
+
|
23
|
+
- due to [`64c37f1`](https://github.com/tobymao/sqlglot/commit/64c37f147366fe87ae187996ecb3c9a5afa7c264) - bump sqlglotrs to 0.6.0 *(commit by [@georgesittas](https://github.com/georgesittas))*:
|
24
|
+
|
25
|
+
bump sqlglotrs to 0.6.0
|
26
|
+
|
27
|
+
|
28
|
+
### :sparkles: New Features
|
29
|
+
- [`93b402a`](https://github.com/tobymao/sqlglot/commit/93b402abc74e642ed312db585b33315674a450cd) - **parser**: support SELECT, FROM, WHERE with pipe syntax *(PR [#5128](https://github.com/tobymao/sqlglot/pull/5128) by [@geooo109](https://github.com/geooo109))*
|
30
|
+
- [`1a8e78b`](https://github.com/tobymao/sqlglot/commit/1a8e78bd84e006023d5d3ea561504587dfbb55a9) - **parser**: ORDER BY with pipe syntax *(PR [#5153](https://github.com/tobymao/sqlglot/pull/5153) by [@geooo109](https://github.com/geooo109))*
|
31
|
+
- [`966ad95`](https://github.com/tobymao/sqlglot/commit/966ad95432d5f8e29ade36d8271a5c489c207324) - **tsql**: add convert style 126 *(PR [#5157](https://github.com/tobymao/sqlglot/pull/5157) by [@pa1ch](https://github.com/pa1ch))*
|
32
|
+
- [`b7ac6ff`](https://github.com/tobymao/sqlglot/commit/b7ac6ff4680ff619be4b0ddb01f61f916ed09d58) - **parser**: LIMIT/OFFSET pipe syntax *(PR [#5159](https://github.com/tobymao/sqlglot/pull/5159) by [@geooo109](https://github.com/geooo109))*
|
33
|
+
- [`cfc158d`](https://github.com/tobymao/sqlglot/commit/cfc158d753d4f43d12c3b502633d29e43dcc5569) - **snowflake**: transpile STRTOK_TO_ARRAY to duckdb *(PR [#5165](https://github.com/tobymao/sqlglot/pull/5165) by [@geooo109](https://github.com/geooo109))*
|
34
|
+
- :arrow_lower_right: *addresses issue [#5160](https://github.com/tobymao/sqlglot/issues/5160) opened by [@kyle-cheung](https://github.com/kyle-cheung)*
|
35
|
+
- [`ff0f30b`](https://github.com/tobymao/sqlglot/commit/ff0f30bcf7d0d74b26a703eaa632e1be15b3c001) - support ARRAY_REMOVE *(PR [#5163](https://github.com/tobymao/sqlglot/pull/5163) by [@geooo109](https://github.com/geooo109))*
|
36
|
+
- [`9cac01f`](https://github.com/tobymao/sqlglot/commit/9cac01f6b4a5c93b55f5b68f21cb104932880a0e) - **tsql**: support FOR XML syntax *(PR [#5167](https://github.com/tobymao/sqlglot/pull/5167) by [@geooo109](https://github.com/geooo109))*
|
37
|
+
- :arrow_lower_right: *addresses issue [#5161](https://github.com/tobymao/sqlglot/issues/5161) opened by [@codykonior](https://github.com/codykonior)*
|
38
|
+
|
39
|
+
### :bug: Bug Fixes
|
40
|
+
- [`f3aeb37`](https://github.com/tobymao/sqlglot/commit/f3aeb374351a0b1b3c75945718d8ea42f8926b62) - **tsql**: properly parse and generate ALTER SET *(PR [#5143](https://github.com/tobymao/sqlglot/pull/5143) by [@georgesittas](https://github.com/georgesittas))*
|
41
|
+
- :arrow_lower_right: *fixes issue [#5135](https://github.com/tobymao/sqlglot/issues/5135) opened by [@codykonior](https://github.com/codykonior)*
|
42
|
+
- [`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))*
|
43
|
+
- :arrow_lower_right: *fixes issue [#5129](https://github.com/tobymao/sqlglot/issues/5129) opened by [@Mevrael](https://github.com/Mevrael)*
|
44
|
+
- [`e73ddb7`](https://github.com/tobymao/sqlglot/commit/e73ddb733b7f120ae74054e6d4dc7d458f59ac50) - **mysql**: preserve TIMESTAMP on roundtrip *(PR [#5145](https://github.com/tobymao/sqlglot/pull/5145) by [@georgesittas](https://github.com/georgesittas))*
|
45
|
+
- :arrow_lower_right: *fixes issue [#5127](https://github.com/tobymao/sqlglot/issues/5127) opened by [@AhlamHani](https://github.com/AhlamHani)*
|
46
|
+
- [`4f8c73d`](https://github.com/tobymao/sqlglot/commit/4f8c73d60eecebc601c60ee8c7819458435e34b8) - **hive**: STRUCT column names and data type should be separated by ':' in hive *(PR [#5147](https://github.com/tobymao/sqlglot/pull/5147) by [@tsamaras](https://github.com/tsamaras))*
|
47
|
+
- [`e2a488f`](https://github.com/tobymao/sqlglot/commit/e2a488f48f3e036566462463bbc58cc6a1c7492e) - Error on columns mismatch in pushdown_projections ignores dialect *(PR [#5151](https://github.com/tobymao/sqlglot/pull/5151) by [@snovik75](https://github.com/snovik75))*
|
48
|
+
- [`1a35365`](https://github.com/tobymao/sqlglot/commit/1a35365a3bb1ef56e8da0023271cbe3108e0ccb1) - avoid generating nested comments when not supported *(PR [#5158](https://github.com/tobymao/sqlglot/pull/5158) by [@georgesittas](https://github.com/georgesittas))*
|
49
|
+
- :arrow_lower_right: *fixes issue [#5132](https://github.com/tobymao/sqlglot/issues/5132) opened by [@patricksurry](https://github.com/patricksurry)*
|
50
|
+
- [`f6124c6`](https://github.com/tobymao/sqlglot/commit/f6124c6343f67563fc19f617891ecfc145a642db) - **rust-tokenizer**: return token vector in `tokenize` even on failure *(PR [#5155](https://github.com/tobymao/sqlglot/pull/5155) by [@georgesittas](https://github.com/georgesittas))*
|
51
|
+
- :arrow_lower_right: *fixes issue [#5148](https://github.com/tobymao/sqlglot/issues/5148) opened by [@kamoser](https://github.com/kamoser)*
|
52
|
+
- [`760a606`](https://github.com/tobymao/sqlglot/commit/760a6062d5f259488e471af9c1d33e200066e9dc) - **postgres**: support decimal values in INTERVAL expressions fixes [#5168](https://github.com/tobymao/sqlglot/pull/5168) *(commit by [@georgesittas](https://github.com/georgesittas))*
|
53
|
+
|
54
|
+
### :recycle: Refactors
|
55
|
+
- [`86c6b90`](https://github.com/tobymao/sqlglot/commit/86c6b90d21b204b4376639affa142e8cee509065) - **tsql**: XML_OPTIONS *(commit by [@geooo109](https://github.com/geooo109))*
|
56
|
+
|
57
|
+
### :wrench: Chores
|
58
|
+
- [`5752a87`](https://github.com/tobymao/sqlglot/commit/5752a87406b736317e4dc5cce9ae05cbc5c19547) - udpate benchmarking framework *(PR [#5146](https://github.com/tobymao/sqlglot/pull/5146) by [@benfdking](https://github.com/benfdking))*
|
59
|
+
- [`0ae297a`](https://github.com/tobymao/sqlglot/commit/0ae297a01262cf323e225fe578bdeab2230c6fd5) - compare performance on main vs pr branch *(PR [#5149](https://github.com/tobymao/sqlglot/pull/5149) by [@georgesittas](https://github.com/georgesittas))*
|
60
|
+
- [`180963b`](https://github.com/tobymao/sqlglot/commit/180963b8cf25d9ff83d2347859b7f46398af5000) - handle pipe syntax unsupported operators more gracefully *(commit by [@georgesittas](https://github.com/georgesittas))*
|
61
|
+
- [`6c8d61a`](https://github.com/tobymao/sqlglot/commit/6c8d61ae1ef5b645835ccd683063845dd801e8d2) - include optimization benchmarks *(PR [#5152](https://github.com/tobymao/sqlglot/pull/5152) by [@georgesittas](https://github.com/georgesittas))*
|
62
|
+
- [`bc5c66c`](https://github.com/tobymao/sqlglot/commit/bc5c66c9210a472147d98a94c34b4bb582ade8b1) - Run benchmark job if /benchmark comment *(PR [#5164](https://github.com/tobymao/sqlglot/pull/5164) by [@VaggelisD](https://github.com/VaggelisD))*
|
63
|
+
- [`742b2b7`](https://github.com/tobymao/sqlglot/commit/742b2b770b88a2e901d2f84af00db821da441e4c) - Fix benchmark CI to include issue number *(PR [#5166](https://github.com/tobymao/sqlglot/pull/5166) by [@VaggelisD](https://github.com/VaggelisD))*
|
64
|
+
- [`64c37f1`](https://github.com/tobymao/sqlglot/commit/64c37f147366fe87ae187996ecb3c9a5afa7c264) - bump sqlglotrs to 0.6.0 *(commit by [@georgesittas](https://github.com/georgesittas))*
|
65
|
+
|
66
|
+
|
4
67
|
## [v26.24.0] - 2025-05-30
|
5
68
|
### :boom: BREAKING CHANGES
|
6
69
|
- due to [`c484ca3`](https://github.com/tobymao/sqlglot/commit/c484ca39bad750a96b62e2edae85612cac66ba30) - recognize ARRAY_CONCAT_AGG as an aggregate function *(PR [#5141](https://github.com/tobymao/sqlglot/pull/5141) by [@georgesittas](https://github.com/georgesittas))*:
|
@@ -4717,3 +4780,5 @@ Changelog
|
|
4717
4780
|
[v26.22.1]: https://github.com/tobymao/sqlglot/compare/v26.22.0...v26.22.1
|
4718
4781
|
[v26.23.0]: https://github.com/tobymao/sqlglot/compare/v26.22.1...v26.23.0
|
4719
4782
|
[v26.24.0]: https://github.com/tobymao/sqlglot/compare/v26.23.0...v26.24.0
|
4783
|
+
[v26.25.0]: https://github.com/tobymao/sqlglot/compare/v26.24.0...v26.25.0
|
4784
|
+
[v26.25.1]: https://github.com/tobymao/sqlglot/compare/v26.25.0...v26.25.1
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: sqlglot
|
3
|
-
Version: 26.25.
|
3
|
+
Version: 26.25.2
|
4
4
|
Summary: An easily customizable SQL parser and transpiler
|
5
5
|
Author-email: Toby Mao <toby.mao@gmail.com>
|
6
6
|
License: MIT License
|
@@ -55,7 +55,7 @@ Requires-Dist: typing_extensions; extra == "dev"
|
|
55
55
|
Requires-Dist: maturin<2.0,>=1.4; extra == "dev"
|
56
56
|
Requires-Dist: pyperf; extra == "dev"
|
57
57
|
Provides-Extra: rs
|
58
|
-
Requires-Dist: sqlglotrs==0.6.
|
58
|
+
Requires-Dist: sqlglotrs==0.6.1; extra == "rs"
|
59
59
|
Dynamic: license-file
|
60
60
|
Dynamic: provides-extra
|
61
61
|
|
@@ -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"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: sqlglot
|
3
|
-
Version: 26.25.
|
3
|
+
Version: 26.25.2
|
4
4
|
Summary: An easily customizable SQL parser and transpiler
|
5
5
|
Author-email: Toby Mao <toby.mao@gmail.com>
|
6
6
|
License: MIT License
|
@@ -55,7 +55,7 @@ Requires-Dist: typing_extensions; extra == "dev"
|
|
55
55
|
Requires-Dist: maturin<2.0,>=1.4; extra == "dev"
|
56
56
|
Requires-Dist: pyperf; extra == "dev"
|
57
57
|
Provides-Extra: rs
|
58
|
-
Requires-Dist: sqlglotrs==0.6.
|
58
|
+
Requires-Dist: sqlglotrs==0.6.1; extra == "rs"
|
59
59
|
Dynamic: license-file
|
60
60
|
Dynamic: provides-extra
|
61
61
|
|
@@ -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={
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.0 → sqlglot-26.25.2}/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.0 → sqlglot-26.25.2}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz
RENAMED
File without changes
|
File without changes
|
{sqlglot-26.25.0 → sqlglot-26.25.2}/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
|