sqlglot 27.16.0__tar.gz → 27.16.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.
Files changed (226) hide show
  1. {sqlglot-27.16.0 → sqlglot-27.16.2}/CHANGELOG.md +29 -0
  2. {sqlglot-27.16.0 → sqlglot-27.16.2}/PKG-INFO +1 -1
  3. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/_version.py +3 -3
  4. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/annotate_types.py +9 -0
  5. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/parser.py +1 -1
  6. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot.egg-info/PKG-INFO +1 -1
  7. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_postgres.py +3 -0
  8. {sqlglot-27.16.0 → sqlglot-27.16.2}/.gitignore +0 -0
  9. {sqlglot-27.16.0 → sqlglot-27.16.2}/.gitpod.yml +0 -0
  10. {sqlglot-27.16.0 → sqlglot-27.16.2}/.pre-commit-config.yaml +0 -0
  11. {sqlglot-27.16.0 → sqlglot-27.16.2}/CONTRIBUTING.md +0 -0
  12. {sqlglot-27.16.0 → sqlglot-27.16.2}/LICENSE +0 -0
  13. {sqlglot-27.16.0 → sqlglot-27.16.2}/MANIFEST.in +0 -0
  14. {sqlglot-27.16.0 → sqlglot-27.16.2}/Makefile +0 -0
  15. {sqlglot-27.16.0 → sqlglot-27.16.2}/README.md +0 -0
  16. {sqlglot-27.16.0 → sqlglot-27.16.2}/pyproject.toml +0 -0
  17. {sqlglot-27.16.0 → sqlglot-27.16.2}/setup.cfg +0 -0
  18. {sqlglot-27.16.0 → sqlglot-27.16.2}/setup.py +0 -0
  19. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/__init__.py +0 -0
  20. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/__main__.py +0 -0
  21. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/_typing.py +0 -0
  22. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/__init__.py +0 -0
  23. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/athena.py +0 -0
  24. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/bigquery.py +0 -0
  25. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/clickhouse.py +0 -0
  26. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/databricks.py +0 -0
  27. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/dialect.py +0 -0
  28. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/doris.py +0 -0
  29. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/dremio.py +0 -0
  30. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/drill.py +0 -0
  31. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/druid.py +0 -0
  32. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/duckdb.py +0 -0
  33. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/dune.py +0 -0
  34. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/exasol.py +0 -0
  35. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/fabric.py +0 -0
  36. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/hive.py +0 -0
  37. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/materialize.py +0 -0
  38. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/mysql.py +0 -0
  39. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/oracle.py +0 -0
  40. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/postgres.py +0 -0
  41. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/presto.py +0 -0
  42. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/prql.py +0 -0
  43. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/redshift.py +0 -0
  44. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/risingwave.py +0 -0
  45. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/singlestore.py +0 -0
  46. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/snowflake.py +0 -0
  47. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/spark.py +0 -0
  48. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/spark2.py +0 -0
  49. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/sqlite.py +0 -0
  50. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/starrocks.py +0 -0
  51. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/tableau.py +0 -0
  52. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/teradata.py +0 -0
  53. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/trino.py +0 -0
  54. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/dialects/tsql.py +0 -0
  55. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/diff.py +0 -0
  56. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/errors.py +0 -0
  57. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/executor/__init__.py +0 -0
  58. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/executor/context.py +0 -0
  59. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/executor/env.py +0 -0
  60. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/executor/python.py +0 -0
  61. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/executor/table.py +0 -0
  62. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/expressions.py +0 -0
  63. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/generator.py +0 -0
  64. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/helper.py +0 -0
  65. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/jsonpath.py +0 -0
  66. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/lineage.py +0 -0
  67. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/__init__.py +0 -0
  68. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/canonicalize.py +0 -0
  69. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/eliminate_ctes.py +0 -0
  70. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/eliminate_joins.py +0 -0
  71. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
  72. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/isolate_table_selects.py +0 -0
  73. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/merge_subqueries.py +0 -0
  74. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/normalize.py +0 -0
  75. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/normalize_identifiers.py +0 -0
  76. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/optimize_joins.py +0 -0
  77. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/optimizer.py +0 -0
  78. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/pushdown_predicates.py +0 -0
  79. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/pushdown_projections.py +0 -0
  80. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/qualify.py +0 -0
  81. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/qualify_columns.py +0 -0
  82. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/qualify_tables.py +0 -0
  83. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/scope.py +0 -0
  84. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/simplify.py +0 -0
  85. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/optimizer/unnest_subqueries.py +0 -0
  86. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/planner.py +0 -0
  87. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/py.typed +0 -0
  88. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/schema.py +0 -0
  89. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/serde.py +0 -0
  90. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/time.py +0 -0
  91. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/tokens.py +0 -0
  92. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/transforms.py +0 -0
  93. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot/trie.py +0 -0
  94. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot.egg-info/SOURCES.txt +0 -0
  95. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot.egg-info/dependency_links.txt +0 -0
  96. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot.egg-info/requires.txt +0 -0
  97. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot.egg-info/top_level.txt +0 -0
  98. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglot.png +0 -0
  99. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/Cargo.lock +0 -0
  100. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/Cargo.toml +0 -0
  101. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/benches/dialect_settings.json +0 -0
  102. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/benches/long.rs +0 -0
  103. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/benches/token_type_settings.json +0 -0
  104. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
  105. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/benches/tokenizer_settings.json +0 -0
  106. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/pyproject.toml +0 -0
  107. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/src/lib.rs +0 -0
  108. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/src/settings.rs +0 -0
  109. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/src/token.rs +0 -0
  110. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/src/tokenizer.rs +0 -0
  111. {sqlglot-27.16.0 → sqlglot-27.16.2}/sqlglotrs/src/trie.rs +0 -0
  112. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/__init__.py +0 -0
  113. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/__init__.py +0 -0
  114. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_athena.py +0 -0
  115. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_bigquery.py +0 -0
  116. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_clickhouse.py +0 -0
  117. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_databricks.py +0 -0
  118. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_dialect.py +0 -0
  119. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_doris.py +0 -0
  120. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_dremio.py +0 -0
  121. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_drill.py +0 -0
  122. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_druid.py +0 -0
  123. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_duckdb.py +0 -0
  124. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_dune.py +0 -0
  125. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_exasol.py +0 -0
  126. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_fabric.py +0 -0
  127. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_hive.py +0 -0
  128. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_materialize.py +0 -0
  129. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_mysql.py +0 -0
  130. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_oracle.py +0 -0
  131. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_pipe_syntax.py +0 -0
  132. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_presto.py +0 -0
  133. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_prql.py +0 -0
  134. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_redshift.py +0 -0
  135. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_risingwave.py +0 -0
  136. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_singlestore.py +0 -0
  137. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_snowflake.py +0 -0
  138. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_spark.py +0 -0
  139. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_sqlite.py +0 -0
  140. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_starrocks.py +0 -0
  141. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_tableau.py +0 -0
  142. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_teradata.py +0 -0
  143. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_trino.py +0 -0
  144. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/dialects/test_tsql.py +0 -0
  145. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/identity.sql +0 -0
  146. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/jsonpath/LICENSE +0 -0
  147. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/jsonpath/cts.json +0 -0
  148. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/annotate_functions.sql +0 -0
  149. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/annotate_types.sql +0 -0
  150. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/canonicalize.sql +0 -0
  151. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
  152. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
  153. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
  154. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
  155. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
  156. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/normalize.sql +0 -0
  157. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
  158. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
  159. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/optimizer.sql +0 -0
  160. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
  161. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
  162. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
  163. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
  164. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
  165. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
  166. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
  167. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
  168. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
  169. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/simplify.sql +0 -0
  170. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
  171. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
  172. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
  173. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
  174. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
  175. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
  176. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
  177. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
  178. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
  179. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
  180. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
  181. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
  182. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
  183. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
  184. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
  185. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
  186. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
  187. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
  188. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
  189. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
  190. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
  191. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
  192. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
  193. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
  194. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
  195. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
  196. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
  197. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
  198. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
  199. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
  200. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
  201. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
  202. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
  203. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
  204. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
  205. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/partial.sql +0 -0
  206. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/fixtures/pretty.sql +0 -0
  207. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/gen_fixtures.py +0 -0
  208. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/helpers.py +0 -0
  209. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_build.py +0 -0
  210. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_dialect_imports.py +0 -0
  211. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_diff.py +0 -0
  212. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_docs.py +0 -0
  213. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_executor.py +0 -0
  214. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_expressions.py +0 -0
  215. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_generator.py +0 -0
  216. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_helper.py +0 -0
  217. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_jsonpath.py +0 -0
  218. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_lineage.py +0 -0
  219. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_optimizer.py +0 -0
  220. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_parser.py +0 -0
  221. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_schema.py +0 -0
  222. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_serde.py +0 -0
  223. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_time.py +0 -0
  224. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_tokens.py +0 -0
  225. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_transforms.py +0 -0
  226. {sqlglot-27.16.0 → sqlglot-27.16.2}/tests/test_transpile.py +0 -0
@@ -1,6 +1,33 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## [v27.16.1] - 2025-09-18
5
+ ### :bug: Bug Fixes
6
+ - [`0e256b3`](https://github.com/tobymao/sqlglot/commit/0e256b3f864bc2d026817bd08e89ee89f44ad256) - edge case with parsing `interval` as identifier *(commit by [@georgesittas](https://github.com/georgesittas))*
7
+
8
+
9
+ ## [v27.16.0] - 2025-09-18
10
+ ### :boom: BREAKING CHANGES
11
+ - due to [`5a973e9`](https://github.com/tobymao/sqlglot/commit/5a973e9a88fa7f522a9bf91dc60fb0f6effef53d) - annotate types for Snowflake AI_CLASSIFY function *(PR [#5909](https://github.com/tobymao/sqlglot/pull/5909) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
12
+
13
+ annotate types for Snowflake AI_CLASSIFY function (#5909)
14
+
15
+ - due to [`2d0d908`](https://github.com/tobymao/sqlglot/commit/2d0d908b5bbc32ff3bc92eb1ae9fc6e5ac3409bc) - produce TableAlias instead of Alias for USING in merge builder *(PR [#5911](https://github.com/tobymao/sqlglot/pull/5911) by [@georgesittas](https://github.com/georgesittas))*:
16
+
17
+ produce TableAlias instead of Alias for USING in merge builder (#5911)
18
+
19
+
20
+ ### :sparkles: New Features
21
+ - [`5a973e9`](https://github.com/tobymao/sqlglot/commit/5a973e9a88fa7f522a9bf91dc60fb0f6effef53d) - **optimizer**: annotate types for Snowflake AI_CLASSIFY function *(PR [#5909](https://github.com/tobymao/sqlglot/pull/5909) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
22
+
23
+ ### :bug: Bug Fixes
24
+ - [`2d0d908`](https://github.com/tobymao/sqlglot/commit/2d0d908b5bbc32ff3bc92eb1ae9fc6e5ac3409bc) - produce TableAlias instead of Alias for USING in merge builder *(PR [#5911](https://github.com/tobymao/sqlglot/pull/5911) by [@georgesittas](https://github.com/georgesittas))*
25
+ - :arrow_lower_right: *fixes issue [#5910](https://github.com/tobymao/sqlglot/issues/5910) opened by [@deepyaman](https://github.com/deepyaman)*
26
+
27
+ ### :wrench: Chores
28
+ - [`e8974e7`](https://github.com/tobymao/sqlglot/commit/e8974e70d9956ce7a5cb119ba465660f5f172a17) - **optimizer**: Add tests for snowflake likeall, likeany and ilikeany functions *(PR [#5908](https://github.com/tobymao/sqlglot/pull/5908) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
29
+
30
+
4
31
  ## [v27.15.3] - 2025-09-17
5
32
  ### :bug: Bug Fixes
6
33
  - [`bd3e965`](https://github.com/tobymao/sqlglot/commit/bd3e9655aa72ffef8a9e0221205fa2c3915ef58b) - allow `lock` to be used as an identifier *(commit by [@georgesittas](https://github.com/georgesittas))*
@@ -7352,3 +7379,5 @@ Changelog
7352
7379
  [v27.15.1]: https://github.com/tobymao/sqlglot/compare/v27.15.0...v27.15.1
7353
7380
  [v27.15.2]: https://github.com/tobymao/sqlglot/compare/v27.15.1...v27.15.2
7354
7381
  [v27.15.3]: https://github.com/tobymao/sqlglot/compare/v27.15.2...v27.15.3
7382
+ [v27.16.0]: https://github.com/tobymao/sqlglot/compare/v27.15.3...v27.16.0
7383
+ [v27.16.1]: https://github.com/tobymao/sqlglot/compare/v27.16.0...v27.16.1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.16.0
3
+ Version: 27.16.2
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.16.0'
32
- __version_tuple__ = version_tuple = (27, 16, 0)
31
+ __version__ = version = '27.16.2'
32
+ __version_tuple__ = version_tuple = (27, 16, 2)
33
33
 
34
- __commit_id__ = commit_id = 'g2d0d908b5'
34
+ __commit_id__ = commit_id = 'g837890c7e'
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import functools
4
+ import logging
4
5
  import typing as t
5
6
 
6
7
  from sqlglot import exp
@@ -26,6 +27,8 @@ if t.TYPE_CHECKING:
26
27
 
27
28
  from sqlglot.dialects.dialect import DialectType, AnnotatorsType
28
29
 
30
+ logger = logging.getLogger("sqlglot")
31
+
29
32
 
30
33
  def annotate_types(
31
34
  expression: E,
@@ -424,6 +427,12 @@ class TypeAnnotator(metaclass=_TypeAnnotator):
424
427
  self._annotate_args(expression)
425
428
 
426
429
  left, right = expression.left, expression.right
430
+ if not left or not right:
431
+ expression_sql = expression.sql(self.schema.dialect)
432
+ logger.warning(f"Failed to annotate badly formed binary expression: {expression_sql}")
433
+ self._set_type(expression, None)
434
+ return expression
435
+
427
436
  left_type, right_type = left.type.this, right.type.this # type: ignore
428
437
 
429
438
  if isinstance(expression, (exp.Connector, exp.Predicate)):
@@ -5100,7 +5100,7 @@ class Parser(metaclass=_Parser):
5100
5100
  isinstance(this, exp.Column)
5101
5101
  and not this.table
5102
5102
  and not this.this.quoted
5103
- and this.name.upper() == "IS"
5103
+ and this.name.upper() in ("IS", "ROWS")
5104
5104
  ):
5105
5105
  self._retreat(index)
5106
5106
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.16.0
3
+ Version: 27.16.2
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
@@ -84,6 +84,9 @@ class TestPostgres(Validator):
84
84
  self.validate_identity("SELECT INTERVAL '2.5 MONTH'")
85
85
  self.validate_identity("SELECT INTERVAL '-10.75 MINUTE'")
86
86
  self.validate_identity("SELECT INTERVAL '0.123456789 SECOND'")
87
+ self.validate_identity(
88
+ "SELECT SUM(x) OVER (PARTITION BY y ORDER BY interval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - SUM(x) OVER (PARTITION BY y ORDER BY interval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS total"
89
+ )
87
90
  self.validate_identity(
88
91
  "SELECT * FROM test_data, LATERAL JSONB_ARRAY_ELEMENTS(data) WITH ORDINALITY AS elem(value, ordinality)"
89
92
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes