sqlglot 27.15.3__tar.gz → 27.16.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. {sqlglot-27.15.3 → sqlglot-27.16.1}/CHANGELOG.md +29 -0
  2. {sqlglot-27.15.3 → sqlglot-27.16.1}/PKG-INFO +1 -1
  3. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/_version.py +3 -3
  4. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/snowflake.py +1 -0
  5. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/expressions.py +8 -0
  6. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/parser.py +1 -1
  7. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/PKG-INFO +1 -1
  8. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_oracle.py +14 -0
  9. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_postgres.py +3 -0
  10. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_snowflake.py +4 -0
  11. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/annotate_functions.sql +20 -0
  12. {sqlglot-27.15.3 → sqlglot-27.16.1}/.gitignore +0 -0
  13. {sqlglot-27.15.3 → sqlglot-27.16.1}/.gitpod.yml +0 -0
  14. {sqlglot-27.15.3 → sqlglot-27.16.1}/.pre-commit-config.yaml +0 -0
  15. {sqlglot-27.15.3 → sqlglot-27.16.1}/CONTRIBUTING.md +0 -0
  16. {sqlglot-27.15.3 → sqlglot-27.16.1}/LICENSE +0 -0
  17. {sqlglot-27.15.3 → sqlglot-27.16.1}/MANIFEST.in +0 -0
  18. {sqlglot-27.15.3 → sqlglot-27.16.1}/Makefile +0 -0
  19. {sqlglot-27.15.3 → sqlglot-27.16.1}/README.md +0 -0
  20. {sqlglot-27.15.3 → sqlglot-27.16.1}/pyproject.toml +0 -0
  21. {sqlglot-27.15.3 → sqlglot-27.16.1}/setup.cfg +0 -0
  22. {sqlglot-27.15.3 → sqlglot-27.16.1}/setup.py +0 -0
  23. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/__init__.py +0 -0
  24. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/__main__.py +0 -0
  25. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/_typing.py +0 -0
  26. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/__init__.py +0 -0
  27. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/athena.py +0 -0
  28. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/bigquery.py +0 -0
  29. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/clickhouse.py +0 -0
  30. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/databricks.py +0 -0
  31. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/dialect.py +0 -0
  32. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/doris.py +0 -0
  33. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/dremio.py +0 -0
  34. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/drill.py +0 -0
  35. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/druid.py +0 -0
  36. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/duckdb.py +0 -0
  37. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/dune.py +0 -0
  38. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/exasol.py +0 -0
  39. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/fabric.py +0 -0
  40. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/hive.py +0 -0
  41. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/materialize.py +0 -0
  42. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/mysql.py +0 -0
  43. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/oracle.py +0 -0
  44. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/postgres.py +0 -0
  45. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/presto.py +0 -0
  46. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/prql.py +0 -0
  47. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/redshift.py +0 -0
  48. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/risingwave.py +0 -0
  49. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/singlestore.py +0 -0
  50. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/spark.py +0 -0
  51. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/spark2.py +0 -0
  52. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/sqlite.py +0 -0
  53. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/starrocks.py +0 -0
  54. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/tableau.py +0 -0
  55. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/teradata.py +0 -0
  56. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/trino.py +0 -0
  57. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/dialects/tsql.py +0 -0
  58. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/diff.py +0 -0
  59. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/errors.py +0 -0
  60. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/__init__.py +0 -0
  61. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/context.py +0 -0
  62. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/env.py +0 -0
  63. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/python.py +0 -0
  64. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/executor/table.py +0 -0
  65. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/generator.py +0 -0
  66. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/helper.py +0 -0
  67. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/jsonpath.py +0 -0
  68. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/lineage.py +0 -0
  69. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/__init__.py +0 -0
  70. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/annotate_types.py +0 -0
  71. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/canonicalize.py +0 -0
  72. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/eliminate_ctes.py +0 -0
  73. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/eliminate_joins.py +0 -0
  74. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
  75. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/isolate_table_selects.py +0 -0
  76. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/merge_subqueries.py +0 -0
  77. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/normalize.py +0 -0
  78. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/normalize_identifiers.py +0 -0
  79. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/optimize_joins.py +0 -0
  80. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/optimizer.py +0 -0
  81. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/pushdown_predicates.py +0 -0
  82. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/pushdown_projections.py +0 -0
  83. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/qualify.py +0 -0
  84. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/qualify_columns.py +0 -0
  85. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/qualify_tables.py +0 -0
  86. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/scope.py +0 -0
  87. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/simplify.py +0 -0
  88. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/optimizer/unnest_subqueries.py +0 -0
  89. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/planner.py +0 -0
  90. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/py.typed +0 -0
  91. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/schema.py +0 -0
  92. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/serde.py +0 -0
  93. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/time.py +0 -0
  94. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/tokens.py +0 -0
  95. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/transforms.py +0 -0
  96. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot/trie.py +0 -0
  97. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/SOURCES.txt +0 -0
  98. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/dependency_links.txt +0 -0
  99. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/requires.txt +0 -0
  100. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.egg-info/top_level.txt +0 -0
  101. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglot.png +0 -0
  102. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/Cargo.lock +0 -0
  103. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/Cargo.toml +0 -0
  104. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/dialect_settings.json +0 -0
  105. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/long.rs +0 -0
  106. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/token_type_settings.json +0 -0
  107. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
  108. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/benches/tokenizer_settings.json +0 -0
  109. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/pyproject.toml +0 -0
  110. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/lib.rs +0 -0
  111. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/settings.rs +0 -0
  112. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/token.rs +0 -0
  113. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/tokenizer.rs +0 -0
  114. {sqlglot-27.15.3 → sqlglot-27.16.1}/sqlglotrs/src/trie.rs +0 -0
  115. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/__init__.py +0 -0
  116. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/__init__.py +0 -0
  117. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_athena.py +0 -0
  118. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_bigquery.py +0 -0
  119. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_clickhouse.py +0 -0
  120. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_databricks.py +0 -0
  121. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_dialect.py +0 -0
  122. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_doris.py +0 -0
  123. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_dremio.py +0 -0
  124. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_drill.py +0 -0
  125. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_druid.py +0 -0
  126. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_duckdb.py +0 -0
  127. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_dune.py +0 -0
  128. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_exasol.py +0 -0
  129. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_fabric.py +0 -0
  130. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_hive.py +0 -0
  131. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_materialize.py +0 -0
  132. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_mysql.py +0 -0
  133. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_pipe_syntax.py +0 -0
  134. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_presto.py +0 -0
  135. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_prql.py +0 -0
  136. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_redshift.py +0 -0
  137. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_risingwave.py +0 -0
  138. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_singlestore.py +0 -0
  139. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_spark.py +0 -0
  140. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_sqlite.py +0 -0
  141. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_starrocks.py +0 -0
  142. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_tableau.py +0 -0
  143. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_teradata.py +0 -0
  144. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_trino.py +0 -0
  145. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/dialects/test_tsql.py +0 -0
  146. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/identity.sql +0 -0
  147. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/jsonpath/LICENSE +0 -0
  148. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/jsonpath/cts.json +0 -0
  149. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/annotate_types.sql +0 -0
  150. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/canonicalize.sql +0 -0
  151. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
  152. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
  153. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
  154. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
  155. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
  156. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/normalize.sql +0 -0
  157. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
  158. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
  159. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/optimizer.sql +0 -0
  160. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
  161. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
  162. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
  163. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
  164. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
  165. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
  166. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
  167. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
  168. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
  169. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/simplify.sql +0 -0
  170. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
  171. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
  172. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
  173. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
  174. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
  175. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
  176. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
  177. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
  178. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
  179. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
  180. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
  181. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
  182. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
  183. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
  184. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
  185. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
  186. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
  187. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
  188. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
  189. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
  190. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
  191. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
  192. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
  193. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
  194. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
  195. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
  196. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
  197. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
  198. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
  199. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
  200. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
  201. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
  202. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
  203. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
  204. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
  205. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/partial.sql +0 -0
  206. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/fixtures/pretty.sql +0 -0
  207. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/gen_fixtures.py +0 -0
  208. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/helpers.py +0 -0
  209. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_build.py +0 -0
  210. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_dialect_imports.py +0 -0
  211. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_diff.py +0 -0
  212. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_docs.py +0 -0
  213. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_executor.py +0 -0
  214. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_expressions.py +0 -0
  215. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_generator.py +0 -0
  216. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_helper.py +0 -0
  217. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_jsonpath.py +0 -0
  218. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_lineage.py +0 -0
  219. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_optimizer.py +0 -0
  220. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_parser.py +0 -0
  221. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_schema.py +0 -0
  222. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_serde.py +0 -0
  223. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_time.py +0 -0
  224. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_tokens.py +0 -0
  225. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_transforms.py +0 -0
  226. {sqlglot-27.15.3 → sqlglot-27.16.1}/tests/test_transpile.py +0 -0
@@ -1,6 +1,33 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## [v27.16.0] - 2025-09-18
5
+ ### :boom: BREAKING CHANGES
6
+ - due to [`5a973e9`](https://github.com/tobymao/sqlglot/commit/5a973e9a88fa7f522a9bf91dc60fb0f6effef53d) - annotate types for Snowflake AI_CLASSIFY function *(PR [#5909](https://github.com/tobymao/sqlglot/pull/5909) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
7
+
8
+ annotate types for Snowflake AI_CLASSIFY function (#5909)
9
+
10
+ - due to [`2d0d908`](https://github.com/tobymao/sqlglot/commit/2d0d908b5bbc32ff3bc92eb1ae9fc6e5ac3409bc) - produce TableAlias instead of Alias for USING in merge builder *(PR [#5911](https://github.com/tobymao/sqlglot/pull/5911) by [@georgesittas](https://github.com/georgesittas))*:
11
+
12
+ produce TableAlias instead of Alias for USING in merge builder (#5911)
13
+
14
+
15
+ ### :sparkles: New Features
16
+ - [`5a973e9`](https://github.com/tobymao/sqlglot/commit/5a973e9a88fa7f522a9bf91dc60fb0f6effef53d) - **optimizer**: annotate types for Snowflake AI_CLASSIFY function *(PR [#5909](https://github.com/tobymao/sqlglot/pull/5909) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
17
+
18
+ ### :bug: Bug Fixes
19
+ - [`2d0d908`](https://github.com/tobymao/sqlglot/commit/2d0d908b5bbc32ff3bc92eb1ae9fc6e5ac3409bc) - produce TableAlias instead of Alias for USING in merge builder *(PR [#5911](https://github.com/tobymao/sqlglot/pull/5911) by [@georgesittas](https://github.com/georgesittas))*
20
+ - :arrow_lower_right: *fixes issue [#5910](https://github.com/tobymao/sqlglot/issues/5910) opened by [@deepyaman](https://github.com/deepyaman)*
21
+
22
+ ### :wrench: Chores
23
+ - [`e8974e7`](https://github.com/tobymao/sqlglot/commit/e8974e70d9956ce7a5cb119ba465660f5f172a17) - **optimizer**: Add tests for snowflake likeall, likeany and ilikeany functions *(PR [#5908](https://github.com/tobymao/sqlglot/pull/5908) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
24
+
25
+
26
+ ## [v27.15.3] - 2025-09-17
27
+ ### :bug: Bug Fixes
28
+ - [`bd3e965`](https://github.com/tobymao/sqlglot/commit/bd3e9655aa72ffef8a9e0221205fa2c3915ef58b) - allow `lock` to be used as an identifier *(commit by [@georgesittas](https://github.com/georgesittas))*
29
+
30
+
4
31
  ## [v27.15.2] - 2025-09-17
5
32
  ### :sparkles: New Features
6
33
  - [`d5cf114`](https://github.com/tobymao/sqlglot/commit/d5cf1149932850a91cb5f1ebecda2652616729ef) - **duckdb**: support INSTALL *(PR [#5904](https://github.com/tobymao/sqlglot/pull/5904) by [@geooo109](https://github.com/geooo109))*
@@ -7346,3 +7373,5 @@ Changelog
7346
7373
  [v27.15.0]: https://github.com/tobymao/sqlglot/compare/v27.14.0...v27.15.0
7347
7374
  [v27.15.1]: https://github.com/tobymao/sqlglot/compare/v27.15.0...v27.15.1
7348
7375
  [v27.15.2]: https://github.com/tobymao/sqlglot/compare/v27.15.1...v27.15.2
7376
+ [v27.15.3]: https://github.com/tobymao/sqlglot/compare/v27.15.2...v27.15.3
7377
+ [v27.16.0]: https://github.com/tobymao/sqlglot/compare/v27.15.3...v27.16.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.15.3
3
+ Version: 27.16.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.15.3'
32
- __version_tuple__ = version_tuple = (27, 15, 3)
31
+ __version__ = version = '27.16.1'
32
+ __version_tuple__ = version_tuple = (27, 16, 1)
33
33
 
34
- __commit_id__ = commit_id = 'gbd3e9655a'
34
+ __commit_id__ = commit_id = 'g0e256b3f8'
@@ -528,6 +528,7 @@ class Snowflake(Dialect):
528
528
  *Dialect.TYPE_TO_EXPRESSIONS[exp.DataType.Type.VARCHAR],
529
529
  exp.MD5,
530
530
  exp.AIAgg,
531
+ exp.AIClassify,
531
532
  exp.AISummarizeAgg,
532
533
  exp.RegexpExtract,
533
534
  exp.RegexpReplace,
@@ -5780,6 +5780,11 @@ class AISummarizeAgg(AggFunc):
5780
5780
  _sql_names = ["AI_SUMMARIZE_AGG"]
5781
5781
 
5782
5782
 
5783
+ class AIClassify(Func):
5784
+ arg_types = {"this": True, "categories": True, "config": False}
5785
+ _sql_names = ["AI_CLASSIFY"]
5786
+
5787
+
5783
5788
  class ArrayAll(Func):
5784
5789
  arg_types = {"this": True, "expression": True}
5785
5790
 
@@ -8312,6 +8317,9 @@ def merge(
8312
8317
  if returning:
8313
8318
  merge = merge.returning(returning, dialect=dialect, copy=False, **opts)
8314
8319
 
8320
+ if isinstance(using_clause := merge.args.get("using"), Alias):
8321
+ using_clause.replace(alias_(using_clause.this, using_clause.args["alias"], table=True))
8322
+
8315
8323
  return merge
8316
8324
 
8317
8325
 
@@ -5100,7 +5100,7 @@ class Parser(metaclass=_Parser):
5100
5100
  isinstance(this, exp.Column)
5101
5101
  and not this.table
5102
5102
  and not this.this.quoted
5103
- and this.name.upper() == "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.15.3
3
+ Version: 27.16.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
@@ -777,3 +777,17 @@ CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4"""
777
777
  self.validate_identity("UTC_TIME(6)").assert_is(exp.UtcTime)
778
778
  self.validate_identity("UTC_TIMESTAMP()").assert_is(exp.UtcTimestamp)
779
779
  self.validate_identity("UTC_TIMESTAMP(6)").assert_is(exp.UtcTimestamp)
780
+
781
+ def test_merge_builder_alias(self):
782
+ merge_stmt = exp.merge(
783
+ "WHEN MATCHED THEN UPDATE SET my_table.col1 = source_table.col1",
784
+ "WHEN NOT MATCHED THEN INSERT (my_table.id, my_table.col1) VALUES (source_table.id, source_table.col1)",
785
+ into="my_table",
786
+ using="(SELECT * FROM something) source_table",
787
+ on="my_table.id = source_table.id",
788
+ dialect="oracle",
789
+ )
790
+ self.assertEqual(
791
+ merge_stmt.sql("oracle"),
792
+ "MERGE INTO my_table USING (SELECT * FROM something) source_table ON my_table.id = source_table.id WHEN MATCHED THEN UPDATE SET my_table.col1 = source_table.col1 WHEN NOT MATCHED THEN INSERT (my_table.id, my_table.col1) VALUES (source_table.id, source_table.col1)",
793
+ )
@@ -84,6 +84,9 @@ class TestPostgres(Validator):
84
84
  self.validate_identity("SELECT INTERVAL '2.5 MONTH'")
85
85
  self.validate_identity("SELECT INTERVAL '-10.75 MINUTE'")
86
86
  self.validate_identity("SELECT INTERVAL '0.123456789 SECOND'")
87
+ self.validate_identity(
88
+ "SELECT SUM(x) OVER (PARTITION BY y ORDER BY interval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) - SUM(x) OVER (PARTITION BY y ORDER BY interval ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS total"
89
+ )
87
90
  self.validate_identity(
88
91
  "SELECT * FROM test_data, LATERAL JSONB_ARRAY_ELEMENTS(data) WITH ORDINALITY AS elem(value, ordinality)"
89
92
  )
@@ -68,6 +68,10 @@ class TestSnowflake(Validator):
68
68
  self.validate_identity("SELECT ARRAY_UNIQUE_AGG(x)")
69
69
  self.validate_identity("SELECT AI_AGG(review, 'Summarize the reviews')")
70
70
  self.validate_identity("SELECT AI_SUMMARIZE_AGG(review)")
71
+ self.validate_identity("SELECT AI_CLASSIFY('text', ['travel', 'cooking'])")
72
+ self.validate_identity(
73
+ "SELECT AI_CLASSIFY('text', ['travel', 'cooking'], OBJECT_CONSTRUCT('output_mode', 'multi'))"
74
+ )
71
75
  self.validate_identity("SELECT OBJECT_CONSTRUCT()")
72
76
  self.validate_identity("SELECT DAYOFMONTH(CURRENT_TIMESTAMP())")
73
77
  self.validate_identity("SELECT DAYOFYEAR(CURRENT_TIMESTAMP())")
@@ -1551,6 +1551,14 @@ VARCHAR;
1551
1551
  AI_SUMMARIZE_AGG(null);
1552
1552
  VARCHAR;
1553
1553
 
1554
+ # dialect: snowflake
1555
+ AI_CLASSIFY('text', ['travel', 'cooking']);
1556
+ VARCHAR;
1557
+
1558
+ # dialect: snowflake
1559
+ AI_CLASSIFY('text', ['travel', 'cooking'], {'output_mode': 'multi'});
1560
+ VARCHAR;
1561
+
1554
1562
  # dialect: snowflake
1555
1563
  CHARINDEX('world', 'hello world');
1556
1564
  INT;
@@ -1999,6 +2007,18 @@ BOOLEAN;
1999
2007
  tbl.str_col NOT LIKE '%e%';
2000
2008
  BOOLEAN;
2001
2009
 
2010
+ # dialect: snowflake
2011
+ tbl.str_col LIKE ALL ('H%', '%o');
2012
+ BOOLEAN;
2013
+
2014
+ # dialect: snowflake
2015
+ tbl.str_col LIKE ANY ('H%', '%o');
2016
+ BOOLEAN;
2017
+
2018
+ # dialect: snowflake
2019
+ tbl.str_col ILIKE ANY ('h%', '%x');
2020
+ BOOLEAN;
2021
+
2002
2022
  --------------------------------------
2003
2023
  -- T-SQL
2004
2024
  --------------------------------------
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes