sqlglot 27.13.0__tar.gz → 27.13.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.
Files changed (226) hide show
  1. {sqlglot-27.13.0 → sqlglot-27.13.1}/CHANGELOG.md +53 -0
  2. {sqlglot-27.13.0 → sqlglot-27.13.1}/PKG-INFO +1 -1
  3. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/_version.py +3 -3
  4. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/generator.py +2 -1
  5. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/parser.py +11 -6
  6. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/tokens.py +0 -2
  7. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot.egg-info/PKG-INFO +1 -1
  8. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_postgres.py +4 -0
  9. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_snowflake.py +3 -1
  10. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/identity.sql +2 -0
  11. {sqlglot-27.13.0 → sqlglot-27.13.1}/.gitignore +0 -0
  12. {sqlglot-27.13.0 → sqlglot-27.13.1}/.gitpod.yml +0 -0
  13. {sqlglot-27.13.0 → sqlglot-27.13.1}/.pre-commit-config.yaml +0 -0
  14. {sqlglot-27.13.0 → sqlglot-27.13.1}/CONTRIBUTING.md +0 -0
  15. {sqlglot-27.13.0 → sqlglot-27.13.1}/LICENSE +0 -0
  16. {sqlglot-27.13.0 → sqlglot-27.13.1}/MANIFEST.in +0 -0
  17. {sqlglot-27.13.0 → sqlglot-27.13.1}/Makefile +0 -0
  18. {sqlglot-27.13.0 → sqlglot-27.13.1}/README.md +0 -0
  19. {sqlglot-27.13.0 → sqlglot-27.13.1}/pyproject.toml +0 -0
  20. {sqlglot-27.13.0 → sqlglot-27.13.1}/setup.cfg +0 -0
  21. {sqlglot-27.13.0 → sqlglot-27.13.1}/setup.py +0 -0
  22. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/__init__.py +0 -0
  23. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/__main__.py +0 -0
  24. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/_typing.py +0 -0
  25. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/__init__.py +0 -0
  26. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/athena.py +0 -0
  27. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/bigquery.py +0 -0
  28. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/clickhouse.py +0 -0
  29. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/databricks.py +0 -0
  30. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/dialect.py +0 -0
  31. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/doris.py +0 -0
  32. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/dremio.py +0 -0
  33. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/drill.py +0 -0
  34. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/druid.py +0 -0
  35. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/duckdb.py +0 -0
  36. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/dune.py +0 -0
  37. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/exasol.py +0 -0
  38. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/fabric.py +0 -0
  39. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/hive.py +0 -0
  40. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/materialize.py +0 -0
  41. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/mysql.py +0 -0
  42. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/oracle.py +0 -0
  43. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/postgres.py +0 -0
  44. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/presto.py +0 -0
  45. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/prql.py +0 -0
  46. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/redshift.py +0 -0
  47. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/risingwave.py +0 -0
  48. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/singlestore.py +0 -0
  49. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/snowflake.py +0 -0
  50. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/spark.py +0 -0
  51. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/spark2.py +0 -0
  52. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/sqlite.py +0 -0
  53. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/starrocks.py +0 -0
  54. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/tableau.py +0 -0
  55. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/teradata.py +0 -0
  56. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/trino.py +0 -0
  57. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/dialects/tsql.py +0 -0
  58. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/diff.py +0 -0
  59. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/errors.py +0 -0
  60. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/executor/__init__.py +0 -0
  61. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/executor/context.py +0 -0
  62. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/executor/env.py +0 -0
  63. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/executor/python.py +0 -0
  64. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/executor/table.py +0 -0
  65. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/expressions.py +0 -0
  66. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/helper.py +0 -0
  67. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/jsonpath.py +0 -0
  68. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/lineage.py +0 -0
  69. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/__init__.py +0 -0
  70. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/annotate_types.py +0 -0
  71. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/canonicalize.py +0 -0
  72. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/eliminate_ctes.py +0 -0
  73. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/eliminate_joins.py +0 -0
  74. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
  75. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/isolate_table_selects.py +0 -0
  76. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/merge_subqueries.py +0 -0
  77. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/normalize.py +0 -0
  78. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/normalize_identifiers.py +0 -0
  79. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/optimize_joins.py +0 -0
  80. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/optimizer.py +0 -0
  81. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/pushdown_predicates.py +0 -0
  82. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/pushdown_projections.py +0 -0
  83. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/qualify.py +0 -0
  84. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/qualify_columns.py +0 -0
  85. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/qualify_tables.py +0 -0
  86. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/scope.py +0 -0
  87. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/simplify.py +0 -0
  88. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/optimizer/unnest_subqueries.py +0 -0
  89. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/planner.py +0 -0
  90. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/py.typed +0 -0
  91. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/schema.py +0 -0
  92. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/serde.py +0 -0
  93. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/time.py +0 -0
  94. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/transforms.py +0 -0
  95. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot/trie.py +0 -0
  96. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot.egg-info/SOURCES.txt +0 -0
  97. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot.egg-info/dependency_links.txt +0 -0
  98. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot.egg-info/requires.txt +0 -0
  99. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot.egg-info/top_level.txt +0 -0
  100. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglot.png +0 -0
  101. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/Cargo.lock +0 -0
  102. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/Cargo.toml +0 -0
  103. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/benches/dialect_settings.json +0 -0
  104. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/benches/long.rs +0 -0
  105. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/benches/token_type_settings.json +0 -0
  106. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
  107. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/benches/tokenizer_settings.json +0 -0
  108. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/pyproject.toml +0 -0
  109. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/src/lib.rs +0 -0
  110. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/src/settings.rs +0 -0
  111. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/src/token.rs +0 -0
  112. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/src/tokenizer.rs +0 -0
  113. {sqlglot-27.13.0 → sqlglot-27.13.1}/sqlglotrs/src/trie.rs +0 -0
  114. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/__init__.py +0 -0
  115. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/__init__.py +0 -0
  116. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_athena.py +0 -0
  117. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_bigquery.py +0 -0
  118. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_clickhouse.py +0 -0
  119. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_databricks.py +0 -0
  120. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_dialect.py +0 -0
  121. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_doris.py +0 -0
  122. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_dremio.py +0 -0
  123. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_drill.py +0 -0
  124. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_druid.py +0 -0
  125. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_duckdb.py +0 -0
  126. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_dune.py +0 -0
  127. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_exasol.py +0 -0
  128. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_fabric.py +0 -0
  129. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_hive.py +0 -0
  130. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_materialize.py +0 -0
  131. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_mysql.py +0 -0
  132. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_oracle.py +0 -0
  133. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_pipe_syntax.py +0 -0
  134. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_presto.py +0 -0
  135. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_prql.py +0 -0
  136. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_redshift.py +0 -0
  137. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_risingwave.py +0 -0
  138. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_singlestore.py +0 -0
  139. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_spark.py +0 -0
  140. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_sqlite.py +0 -0
  141. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_starrocks.py +0 -0
  142. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_tableau.py +0 -0
  143. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_teradata.py +0 -0
  144. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_trino.py +0 -0
  145. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/dialects/test_tsql.py +0 -0
  146. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/jsonpath/LICENSE +0 -0
  147. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/jsonpath/cts.json +0 -0
  148. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/annotate_functions.sql +0 -0
  149. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/annotate_types.sql +0 -0
  150. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/canonicalize.sql +0 -0
  151. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
  152. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
  153. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
  154. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
  155. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
  156. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/normalize.sql +0 -0
  157. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
  158. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
  159. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/optimizer.sql +0 -0
  160. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
  161. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
  162. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
  163. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
  164. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
  165. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
  166. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
  167. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
  168. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
  169. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/simplify.sql +0 -0
  170. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
  171. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
  172. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
  173. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
  174. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
  175. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
  176. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
  177. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
  178. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
  179. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
  180. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
  181. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
  182. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
  183. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
  184. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
  185. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
  186. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
  187. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
  188. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
  189. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
  190. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
  191. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
  192. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
  193. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
  194. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
  195. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
  196. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
  197. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
  198. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
  199. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
  200. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
  201. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
  202. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
  203. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
  204. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
  205. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/partial.sql +0 -0
  206. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/fixtures/pretty.sql +0 -0
  207. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/gen_fixtures.py +0 -0
  208. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/helpers.py +0 -0
  209. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_build.py +0 -0
  210. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_dialect_imports.py +0 -0
  211. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_diff.py +0 -0
  212. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_docs.py +0 -0
  213. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_executor.py +0 -0
  214. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_expressions.py +0 -0
  215. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_generator.py +0 -0
  216. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_helper.py +0 -0
  217. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_jsonpath.py +0 -0
  218. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_lineage.py +0 -0
  219. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_optimizer.py +0 -0
  220. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_parser.py +0 -0
  221. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_schema.py +0 -0
  222. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_serde.py +0 -0
  223. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_time.py +0 -0
  224. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_tokens.py +0 -0
  225. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_transforms.py +0 -0
  226. {sqlglot-27.13.0 → sqlglot-27.13.1}/tests/test_transpile.py +0 -0
@@ -1,6 +1,58 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## [v27.13.0] - 2025-09-08
5
+ ### :boom: BREAKING CHANGES
6
+ - due to [`3726b33`](https://github.com/tobymao/sqlglot/commit/3726b33bb6b4ab286617f510e96e1fbd27c429f3) - support nulls_first arg for array_sort *(PR [#5802](https://github.com/tobymao/sqlglot/pull/5802) by [@treysp](https://github.com/treysp))*:
7
+
8
+ support nulls_first arg for array_sort (#5802)
9
+
10
+ - due to [`cf1d1e3`](https://github.com/tobymao/sqlglot/commit/cf1d1e3e0ef9e6cd1b1c6128c63ddf06c30f1339) - annotate type for snowflake's REVERSE function *(PR [#5803](https://github.com/tobymao/sqlglot/pull/5803) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
11
+
12
+ annotate type for snowflake's REVERSE function (#5803)
13
+
14
+ - due to [`ad0b407`](https://github.com/tobymao/sqlglot/commit/ad0b407098e1611d4fc0e1f0916511337b9aefdb) - Mark 'BEGIN' as TokenType.BEGIN for transactions *(PR [#5826](https://github.com/tobymao/sqlglot/pull/5826) by [@VaggelisD](https://github.com/VaggelisD))*:
15
+
16
+ Mark 'BEGIN' as TokenType.BEGIN for transactions (#5826)
17
+
18
+ - due to [`0198282`](https://github.com/tobymao/sqlglot/commit/0198282a82bbf3e81476e164718d63fd1210acdc) - : Update tests for concat string function *(PR [#5809](https://github.com/tobymao/sqlglot/pull/5809) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
19
+
20
+ : Update tests for concat string function (#5809)
21
+
22
+ - due to [`db2c430`](https://github.com/tobymao/sqlglot/commit/db2c4303237a1244070c359245c398a724df6de2) - annoate the "contains" function *(PR [#5829](https://github.com/tobymao/sqlglot/pull/5829) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
23
+
24
+ annoate the "contains" function (#5829)
25
+
26
+
27
+ ### :sparkles: New Features
28
+ - [`cf1d1e3`](https://github.com/tobymao/sqlglot/commit/cf1d1e3e0ef9e6cd1b1c6128c63ddf06c30f1339) - **optimizer**: annotate type for snowflake's REVERSE function *(PR [#5803](https://github.com/tobymao/sqlglot/pull/5803) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
29
+ - [`1d07c52`](https://github.com/tobymao/sqlglot/commit/1d07c52badb2e392e6895cbb275d2224789366c9) - **SingleStore**: Implemented generation of CURRENT_DATETIME *(PR [#5816](https://github.com/tobymao/sqlglot/pull/5816) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
30
+ - [`cad4fd0`](https://github.com/tobymao/sqlglot/commit/cad4fd0c5b0ec90e693fa6883af0ab287b921019) - **singlestore**: Added handling of exp.JSONObject *(PR [#5817](https://github.com/tobymao/sqlglot/pull/5817) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
31
+ - [`e3cb076`](https://github.com/tobymao/sqlglot/commit/e3cb0766bd5c3ccb31ea52cfc76201f548798dc1) - **singlestore**: Implemented generation of exp.StandardHash *(PR [#5823](https://github.com/tobymao/sqlglot/pull/5823) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
32
+ - [`0198282`](https://github.com/tobymao/sqlglot/commit/0198282a82bbf3e81476e164718d63fd1210acdc) - **optimizer**: : Update tests for concat string function *(PR [#5809](https://github.com/tobymao/sqlglot/pull/5809) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
33
+ - [`4e8a436`](https://github.com/tobymao/sqlglot/commit/4e8a436c16f487a72bd1ac2432bcb1c46599d901) - **singlestore**: Added generation of exp.JSONExists *(PR [#5820](https://github.com/tobymao/sqlglot/pull/5820) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
34
+ - [`82bea49`](https://github.com/tobymao/sqlglot/commit/82bea49978ae459492b5127a2a52049826e2fd06) - **singlestore**: Refactored parsing of JSON_BUILD_OBJECT *(PR [#5828](https://github.com/tobymao/sqlglot/pull/5828) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
35
+ - [`f7d38c3`](https://github.com/tobymao/sqlglot/commit/f7d38c3a10c505346f04e39a2712d60b4c96370f) - **singlestore**: Implemented generation of exp.Stuff *(PR [#5825](https://github.com/tobymao/sqlglot/pull/5825) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
36
+ - [`030a5b5`](https://github.com/tobymao/sqlglot/commit/030a5b5ea03ecee869b07cfd27f4ea044732822e) - **singlestore**: Added generation of exp.JSONBExists *(PR [#5821](https://github.com/tobymao/sqlglot/pull/5821) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
37
+ - [`e58fef1`](https://github.com/tobymao/sqlglot/commit/e58fef1d6dc654a3b36461bcbea21c99cdc96477) - **singlestore**: Implemented parsing and generation of exp.MatchAgainst *(PR [#5822](https://github.com/tobymao/sqlglot/pull/5822) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
38
+ - [`e94f530`](https://github.com/tobymao/sqlglot/commit/e94f530af0e0cdad995b4c8dc5ed86953490d37f) - **singlestore**: Added handling of exp.JSONArray *(PR [#5818](https://github.com/tobymao/sqlglot/pull/5818) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
39
+ - [`1c42ef4`](https://github.com/tobymao/sqlglot/commit/1c42ef4374aeab8a1ee9848892d7f8c4511c7f04) - **singlestore**: Fixed parsing/generation of exp.JSONArrayAgg *(PR [#5819](https://github.com/tobymao/sqlglot/pull/5819) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
40
+ - [`67219f0`](https://github.com/tobymao/sqlglot/commit/67219f0606231514f430e146e2fdb99e796f718b) - **singlestore**: Added support of UTC_TIMESTAMP and CURRENT_TIMESTAMP *(PR [#5808](https://github.com/tobymao/sqlglot/pull/5808) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
41
+ - [`db2c430`](https://github.com/tobymao/sqlglot/commit/db2c4303237a1244070c359245c398a724df6de2) - **optimizer**: annoate the "contains" function *(PR [#5829](https://github.com/tobymao/sqlglot/pull/5829) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
42
+
43
+ ### :bug: Bug Fixes
44
+ - [`3726b33`](https://github.com/tobymao/sqlglot/commit/3726b33bb6b4ab286617f510e96e1fbd27c429f3) - **snowflake**: support nulls_first arg for array_sort *(PR [#5802](https://github.com/tobymao/sqlglot/pull/5802) by [@treysp](https://github.com/treysp))*
45
+ - [`3408de0`](https://github.com/tobymao/sqlglot/commit/3408de09e50d2510c1a6f511dc2dec357059044f) - parsing quoted built-in data types *(PR [#5810](https://github.com/tobymao/sqlglot/pull/5810) by [@treysp](https://github.com/treysp))*
46
+ - [`ad0b407`](https://github.com/tobymao/sqlglot/commit/ad0b407098e1611d4fc0e1f0916511337b9aefdb) - **postgres**: Mark 'BEGIN' as TokenType.BEGIN for transactions *(PR [#5826](https://github.com/tobymao/sqlglot/pull/5826) by [@VaggelisD](https://github.com/VaggelisD))*
47
+ - :arrow_lower_right: *fixes issue [#5815](https://github.com/tobymao/sqlglot/issues/5815) opened by [@karakanb](https://github.com/karakanb)*
48
+ - [`e1a1b5b`](https://github.com/tobymao/sqlglot/commit/e1a1b5befefb0ca30ac1310cecb82a44f6089034) - **snowflake**: transpile BigQuery's `&` to `BITAND` *(PR [#5827](https://github.com/tobymao/sqlglot/pull/5827) by [@YuvalOmerRep](https://github.com/YuvalOmerRep))*
49
+ - [`32d0278`](https://github.com/tobymao/sqlglot/commit/32d027827eaa7aa0cd9faf2ac1f84739f914050f) - parse and generation of BITWISE AGG funcs across dialects *(PR [#5831](https://github.com/tobymao/sqlglot/pull/5831) by [@geooo109](https://github.com/geooo109))*
50
+ - [`5f39a83`](https://github.com/tobymao/sqlglot/commit/5f39a83f1ff957aca57eb4745f83c296436acaac) - **bigquery**: properly generate `LIMIT` for `STRING_AGG` *(PR [#5830](https://github.com/tobymao/sqlglot/pull/5830) by [@georgesittas](https://github.com/georgesittas))*
51
+
52
+ ### :wrench: Chores
53
+ - [`164fec1`](https://github.com/tobymao/sqlglot/commit/164fec1b36e3c7df41e2e5a5ad6b226fc5f76305) - **optimizer**: test type annotation for snowflake CHARINDEX function *(PR [#5805](https://github.com/tobymao/sqlglot/pull/5805) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
54
+
55
+
4
56
  ## [v27.12.0] - 2025-09-04
5
57
  ### :boom: BREAKING CHANGES
6
58
  - due to [`1c551d5`](https://github.com/tobymao/sqlglot/commit/1c551d5ed3315e314013c1f063deabd9d8613e5d) - parse and annotate type for bq TO_JSON *(PR [#5768](https://github.com/tobymao/sqlglot/pull/5768) by [@geooo109](https://github.com/geooo109))*:
@@ -7110,3 +7162,4 @@ Changelog
7110
7162
  [v27.10.0]: https://github.com/tobymao/sqlglot/compare/v27.9.0...v27.10.0
7111
7163
  [v27.11.0]: https://github.com/tobymao/sqlglot/compare/v27.10.0...v27.11.0
7112
7164
  [v27.12.0]: https://github.com/tobymao/sqlglot/compare/v27.11.0...v27.12.0
7165
+ [v27.13.0]: https://github.com/tobymao/sqlglot/compare/v27.12.0...v27.13.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.13.0
3
+ Version: 27.13.1
4
4
  Summary: An easily customizable SQL parser and transpiler
5
5
  Author-email: Toby Mao <toby.mao@gmail.com>
6
6
  License-Expression: MIT
@@ -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.13.0'
32
- __version_tuple__ = version_tuple = (27, 13, 0)
31
+ __version__ = version = '27.13.1'
32
+ __version_tuple__ = version_tuple = (27, 13, 1)
33
33
 
34
- __commit_id__ = commit_id = 'g5f39a83f1'
34
+ __commit_id__ = commit_id = 'gc00f73bac'
@@ -5243,7 +5243,8 @@ class Generator(metaclass=_Generator):
5243
5243
  metrics = self.seg(f"METRICS {metrics}") if metrics else ""
5244
5244
  where = self.sql(expression, "where")
5245
5245
  where = self.seg(f"WHERE {where}") if where else ""
5246
- return f"SEMANTIC_VIEW({self.indent(this + metrics + dimensions + where)}{self.seg(')', sep='')}"
5246
+ body = self.indent(this + metrics + dimensions + where, skip_first=True)
5247
+ return f"SEMANTIC_VIEW({body}{self.seg(')', sep='')}"
5247
5248
 
5248
5249
  def getextract_sql(self, expression: exp.GetExtract) -> str:
5249
5250
  this = expression.this
@@ -5397,7 +5397,7 @@ class Parser(metaclass=_Parser):
5397
5397
  if type_token == TokenType.VECTOR and len(expressions) == 2:
5398
5398
  expressions[0] = exp.DataType.build(expressions[0].name, dialect=self.dialect)
5399
5399
 
5400
- if not expressions or not self._match(TokenType.R_PAREN):
5400
+ if not self._match(TokenType.R_PAREN):
5401
5401
  self._retreat(index)
5402
5402
  return None
5403
5403
 
@@ -6464,6 +6464,11 @@ class Parser(metaclass=_Parser):
6464
6464
  return this
6465
6465
 
6466
6466
  def _parse_case(self) -> t.Optional[exp.Expression]:
6467
+ if self._match(TokenType.DOT, advance=False):
6468
+ # Avoid raising on valid expressions like case.*, supported by, e.g., spark & snowflake
6469
+ self._retreat(self._index - 1)
6470
+ return None
6471
+
6467
6472
  ifs = []
6468
6473
  default = None
6469
6474
 
@@ -7079,8 +7084,8 @@ class Parser(metaclass=_Parser):
7079
7084
  if kind:
7080
7085
  self._match(TokenType.BETWEEN)
7081
7086
  start = self._parse_window_spec()
7082
- self._match(TokenType.AND)
7083
- end = self._parse_window_spec()
7087
+
7088
+ end = self._parse_window_spec() if self._match(TokenType.AND) else {}
7084
7089
  exclude = (
7085
7090
  self._parse_var_from_options(self.WINDOW_EXCLUDE_OPTIONS)
7086
7091
  if self._match_text_seq("EXCLUDE")
@@ -7092,8 +7097,8 @@ class Parser(metaclass=_Parser):
7092
7097
  kind=kind,
7093
7098
  start=start["value"],
7094
7099
  start_side=start["side"],
7095
- end=end["value"],
7096
- end_side=end["side"],
7100
+ end=end.get("value"),
7101
+ end_side=end.get("side"),
7097
7102
  exclude=exclude,
7098
7103
  )
7099
7104
  else:
@@ -7131,7 +7136,7 @@ class Parser(metaclass=_Parser):
7131
7136
  "value": (
7132
7137
  (self._match_text_seq("UNBOUNDED") and "UNBOUNDED")
7133
7138
  or (self._match_text_seq("CURRENT", "ROW") and "CURRENT ROW")
7134
- or self._parse_bitwise()
7139
+ or self._parse_type()
7135
7140
  ),
7136
7141
  "side": self._match_texts(self.WINDOW_SIDES) and self._prev.text,
7137
7142
  }
@@ -234,7 +234,6 @@ class TokenType(AutoName):
234
234
  # keywords
235
235
  ALIAS = auto()
236
236
  ALTER = auto()
237
- ALWAYS = auto()
238
237
  ALL = auto()
239
238
  ANTI = auto()
240
239
  ANY = auto()
@@ -713,7 +712,6 @@ class Tokenizer(metaclass=_Tokenizer):
713
712
  "~~*": TokenType.ILIKE,
714
713
  "~*": TokenType.IRLIKE,
715
714
  "ALL": TokenType.ALL,
716
- "ALWAYS": TokenType.ALWAYS,
717
715
  "AND": TokenType.AND,
718
716
  "ANTI": TokenType.ANTI,
719
717
  "ANY": TokenType.ANY,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.13.0
3
+ Version: 27.13.1
4
4
  Summary: An easily customizable SQL parser and transpiler
5
5
  Author-email: Toby Mao <toby.mao@gmail.com>
6
6
  License-Expression: MIT
@@ -8,6 +8,10 @@ class TestPostgres(Validator):
8
8
  dialect = "postgres"
9
9
 
10
10
  def test_postgres(self):
11
+ self.validate_identity(
12
+ "select count() OVER(partition by a order by a range offset preceding exclude current row)",
13
+ "SELECT COUNT() OVER (PARTITION BY a ORDER BY a range BETWEEN offset preceding AND CURRENT ROW EXCLUDE CURRENT ROW)",
14
+ )
11
15
  expr = self.parse_one("SELECT * FROM r CROSS JOIN LATERAL UNNEST(ARRAY[1]) AS s(location)")
12
16
  unnest = expr.args["joins"][0].this.this
13
17
  unnest.assert_is(exp.Unnest)
@@ -11,6 +11,8 @@ class TestSnowflake(Validator):
11
11
  dialect = "snowflake"
12
12
 
13
13
  def test_snowflake(self):
14
+ self.validate_identity("x::nvarchar()", "CAST(x AS VARCHAR)")
15
+
14
16
  ast = self.parse_one("DATEADD(DAY, n, d)")
15
17
  ast.set("unit", exp.Literal.string("MONTH"))
16
18
  self.assertEqual(ast.sql("snowflake"), "DATEADD(MONTH, n, d)")
@@ -3030,7 +3032,7 @@ SINGLE = TRUE""",
3030
3032
  "SELECT * FROM SEMANTIC_VIEW(foo METRICS a.b, a.c DIMENSIONS a.b, a.c WHERE a.b > '1995-01-01')",
3031
3033
  """SELECT
3032
3034
  *
3033
- FROM SEMANTIC_VIEW(
3035
+ FROM SEMANTIC_VIEW(
3034
3036
  foo
3035
3037
  METRICS a.b, a.c
3036
3038
  DIMENSIONS a.b, a.c
@@ -284,6 +284,7 @@ SELECT * FROM test FETCH FIRST ROWS ONLY
284
284
  SELECT * FROM test FETCH FIRST 1 ROWS ONLY
285
285
  SELECT * FROM test ORDER BY id DESC FETCH FIRST 10 ROWS WITH TIES
286
286
  SELECT * FROM test ORDER BY id DESC FETCH FIRST 10 PERCENT ROWS WITH TIES
287
+ SELECT * FROM test ORDER BY always DESC
287
288
  SELECT * FROM test FETCH NEXT 1 ROWS ONLY
288
289
  SELECT (1 > 2) AS x FROM test
289
290
  SELECT NOT (1 > 2) FROM test
@@ -929,3 +930,4 @@ SELECT SINH(x)
929
930
  SELECT COSINE_DISTANCE(v1, v2)
930
931
  SELECT EUCLIDEAN_DISTANCE(v1, v2)
931
932
  FOO(values.c)
933
+ case.*
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes