sqlglot 27.15.0__tar.gz → 27.15.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.0 → sqlglot-27.15.1}/CHANGELOG.md +66 -0
  2. {sqlglot-27.15.0 → sqlglot-27.15.1}/PKG-INFO +1 -1
  3. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/_version.py +3 -3
  4. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/parser.py +17 -6
  5. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot.egg-info/PKG-INFO +1 -1
  6. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_postgres.py +4 -0
  7. {sqlglot-27.15.0 → sqlglot-27.15.1}/.gitignore +0 -0
  8. {sqlglot-27.15.0 → sqlglot-27.15.1}/.gitpod.yml +0 -0
  9. {sqlglot-27.15.0 → sqlglot-27.15.1}/.pre-commit-config.yaml +0 -0
  10. {sqlglot-27.15.0 → sqlglot-27.15.1}/CONTRIBUTING.md +0 -0
  11. {sqlglot-27.15.0 → sqlglot-27.15.1}/LICENSE +0 -0
  12. {sqlglot-27.15.0 → sqlglot-27.15.1}/MANIFEST.in +0 -0
  13. {sqlglot-27.15.0 → sqlglot-27.15.1}/Makefile +0 -0
  14. {sqlglot-27.15.0 → sqlglot-27.15.1}/README.md +0 -0
  15. {sqlglot-27.15.0 → sqlglot-27.15.1}/pyproject.toml +0 -0
  16. {sqlglot-27.15.0 → sqlglot-27.15.1}/setup.cfg +0 -0
  17. {sqlglot-27.15.0 → sqlglot-27.15.1}/setup.py +0 -0
  18. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/__init__.py +0 -0
  19. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/__main__.py +0 -0
  20. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/_typing.py +0 -0
  21. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/__init__.py +0 -0
  22. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/athena.py +0 -0
  23. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/bigquery.py +0 -0
  24. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/clickhouse.py +0 -0
  25. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/databricks.py +0 -0
  26. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/dialect.py +0 -0
  27. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/doris.py +0 -0
  28. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/dremio.py +0 -0
  29. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/drill.py +0 -0
  30. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/druid.py +0 -0
  31. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/duckdb.py +0 -0
  32. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/dune.py +0 -0
  33. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/exasol.py +0 -0
  34. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/fabric.py +0 -0
  35. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/hive.py +0 -0
  36. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/materialize.py +0 -0
  37. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/mysql.py +0 -0
  38. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/oracle.py +0 -0
  39. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/postgres.py +0 -0
  40. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/presto.py +0 -0
  41. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/prql.py +0 -0
  42. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/redshift.py +0 -0
  43. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/risingwave.py +0 -0
  44. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/singlestore.py +0 -0
  45. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/snowflake.py +0 -0
  46. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/spark.py +0 -0
  47. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/spark2.py +0 -0
  48. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/sqlite.py +0 -0
  49. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/starrocks.py +0 -0
  50. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/tableau.py +0 -0
  51. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/teradata.py +0 -0
  52. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/trino.py +0 -0
  53. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/dialects/tsql.py +0 -0
  54. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/diff.py +0 -0
  55. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/errors.py +0 -0
  56. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/executor/__init__.py +0 -0
  57. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/executor/context.py +0 -0
  58. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/executor/env.py +0 -0
  59. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/executor/python.py +0 -0
  60. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/executor/table.py +0 -0
  61. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/expressions.py +0 -0
  62. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/generator.py +0 -0
  63. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/helper.py +0 -0
  64. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/jsonpath.py +0 -0
  65. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/lineage.py +0 -0
  66. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/__init__.py +0 -0
  67. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/annotate_types.py +0 -0
  68. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/canonicalize.py +0 -0
  69. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/eliminate_ctes.py +0 -0
  70. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/eliminate_joins.py +0 -0
  71. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/eliminate_subqueries.py +0 -0
  72. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/isolate_table_selects.py +0 -0
  73. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/merge_subqueries.py +0 -0
  74. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/normalize.py +0 -0
  75. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/normalize_identifiers.py +0 -0
  76. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/optimize_joins.py +0 -0
  77. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/optimizer.py +0 -0
  78. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/pushdown_predicates.py +0 -0
  79. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/pushdown_projections.py +0 -0
  80. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/qualify.py +0 -0
  81. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/qualify_columns.py +0 -0
  82. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/qualify_tables.py +0 -0
  83. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/scope.py +0 -0
  84. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/simplify.py +0 -0
  85. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/optimizer/unnest_subqueries.py +0 -0
  86. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/planner.py +0 -0
  87. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/py.typed +0 -0
  88. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/schema.py +0 -0
  89. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/serde.py +0 -0
  90. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/time.py +0 -0
  91. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/tokens.py +0 -0
  92. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/transforms.py +0 -0
  93. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot/trie.py +0 -0
  94. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot.egg-info/SOURCES.txt +0 -0
  95. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot.egg-info/dependency_links.txt +0 -0
  96. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot.egg-info/requires.txt +0 -0
  97. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot.egg-info/top_level.txt +0 -0
  98. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglot.png +0 -0
  99. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/Cargo.lock +0 -0
  100. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/Cargo.toml +0 -0
  101. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/benches/dialect_settings.json +0 -0
  102. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/benches/long.rs +0 -0
  103. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/benches/token_type_settings.json +0 -0
  104. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/benches/tokenizer_dialect_settings.json +0 -0
  105. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/benches/tokenizer_settings.json +0 -0
  106. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/pyproject.toml +0 -0
  107. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/src/lib.rs +0 -0
  108. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/src/settings.rs +0 -0
  109. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/src/token.rs +0 -0
  110. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/src/tokenizer.rs +0 -0
  111. {sqlglot-27.15.0 → sqlglot-27.15.1}/sqlglotrs/src/trie.rs +0 -0
  112. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/__init__.py +0 -0
  113. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/__init__.py +0 -0
  114. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_athena.py +0 -0
  115. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_bigquery.py +0 -0
  116. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_clickhouse.py +0 -0
  117. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_databricks.py +0 -0
  118. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_dialect.py +0 -0
  119. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_doris.py +0 -0
  120. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_dremio.py +0 -0
  121. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_drill.py +0 -0
  122. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_druid.py +0 -0
  123. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_duckdb.py +0 -0
  124. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_dune.py +0 -0
  125. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_exasol.py +0 -0
  126. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_fabric.py +0 -0
  127. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_hive.py +0 -0
  128. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_materialize.py +0 -0
  129. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_mysql.py +0 -0
  130. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_oracle.py +0 -0
  131. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_pipe_syntax.py +0 -0
  132. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_presto.py +0 -0
  133. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_prql.py +0 -0
  134. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_redshift.py +0 -0
  135. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_risingwave.py +0 -0
  136. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_singlestore.py +0 -0
  137. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_snowflake.py +0 -0
  138. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_spark.py +0 -0
  139. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_sqlite.py +0 -0
  140. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_starrocks.py +0 -0
  141. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_tableau.py +0 -0
  142. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_teradata.py +0 -0
  143. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_trino.py +0 -0
  144. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/dialects/test_tsql.py +0 -0
  145. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/identity.sql +0 -0
  146. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/jsonpath/LICENSE +0 -0
  147. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/jsonpath/cts.json +0 -0
  148. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/annotate_functions.sql +0 -0
  149. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/annotate_types.sql +0 -0
  150. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/canonicalize.sql +0 -0
  151. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/eliminate_ctes.sql +0 -0
  152. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/eliminate_joins.sql +0 -0
  153. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/eliminate_subqueries.sql +0 -0
  154. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/isolate_table_selects.sql +0 -0
  155. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/merge_subqueries.sql +0 -0
  156. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/normalize.sql +0 -0
  157. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/normalize_identifiers.sql +0 -0
  158. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/optimize_joins.sql +0 -0
  159. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/optimizer.sql +0 -0
  160. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/pushdown_cte_alias_columns.sql +0 -0
  161. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/pushdown_predicates.sql +0 -0
  162. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/pushdown_projections.sql +0 -0
  163. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/qualify_columns.sql +0 -0
  164. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/qualify_columns__invalid.sql +0 -0
  165. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/qualify_columns__with_invisible.sql +0 -0
  166. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/qualify_columns_ddl.sql +0 -0
  167. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/qualify_tables.sql +0 -0
  168. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/quote_identifiers.sql +0 -0
  169. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/simplify.sql +0 -0
  170. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/call_center.csv.gz +0 -0
  171. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/catalog_page.csv.gz +0 -0
  172. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/catalog_returns.csv.gz +0 -0
  173. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/catalog_sales.csv.gz +0 -0
  174. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/customer.csv.gz +0 -0
  175. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/customer_address.csv.gz +0 -0
  176. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/customer_demographics.csv.gz +0 -0
  177. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/date_dim.csv.gz +0 -0
  178. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/household_demographics.csv.gz +0 -0
  179. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/income_band.csv.gz +0 -0
  180. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/inventory.csv.gz +0 -0
  181. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/item.csv.gz +0 -0
  182. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/promotion.csv.gz +0 -0
  183. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/reason.csv.gz +0 -0
  184. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/ship_mode.csv.gz +0 -0
  185. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/store.csv.gz +0 -0
  186. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/store_returns.csv.gz +0 -0
  187. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/store_sales.csv.gz +0 -0
  188. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/time_dim.csv.gz +0 -0
  189. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql +0 -0
  190. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/warehouse.csv.gz +0 -0
  191. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/web_page.csv.gz +0 -0
  192. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/web_returns.csv.gz +0 -0
  193. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/web_sales.csv.gz +0 -0
  194. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-ds/web_site.csv.gz +0 -0
  195. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/customer.csv.gz +0 -0
  196. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/lineitem.csv.gz +0 -0
  197. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/nation.csv.gz +0 -0
  198. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/orders.csv.gz +0 -0
  199. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/part.csv.gz +0 -0
  200. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/partsupp.csv.gz +0 -0
  201. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/region.csv.gz +0 -0
  202. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/supplier.csv.gz +0 -0
  203. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/tpc-h/tpc-h.sql +0 -0
  204. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/optimizer/unnest_subqueries.sql +0 -0
  205. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/partial.sql +0 -0
  206. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/fixtures/pretty.sql +0 -0
  207. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/gen_fixtures.py +0 -0
  208. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/helpers.py +0 -0
  209. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_build.py +0 -0
  210. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_dialect_imports.py +0 -0
  211. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_diff.py +0 -0
  212. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_docs.py +0 -0
  213. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_executor.py +0 -0
  214. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_expressions.py +0 -0
  215. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_generator.py +0 -0
  216. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_helper.py +0 -0
  217. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_jsonpath.py +0 -0
  218. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_lineage.py +0 -0
  219. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_optimizer.py +0 -0
  220. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_parser.py +0 -0
  221. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_schema.py +0 -0
  222. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_serde.py +0 -0
  223. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_time.py +0 -0
  224. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_tokens.py +0 -0
  225. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_transforms.py +0 -0
  226. {sqlglot-27.15.0 → sqlglot-27.15.1}/tests/test_transpile.py +0 -0
@@ -1,6 +1,71 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## [v27.15.0] - 2025-09-17
5
+ ### :boom: BREAKING CHANGES
6
+ - due to [`96ae7a3`](https://github.com/tobymao/sqlglot/commit/96ae7a3bcbf9de1932150baa0bd704d4ce05c9f7) - Annotate and add tests for snowflake REPEAT and SPLIT functions *(PR [#5875](https://github.com/tobymao/sqlglot/pull/5875) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
7
+
8
+ Annotate and add tests for snowflake REPEAT and SPLIT functions (#5875)
9
+
10
+ - due to [`f2d3bf7`](https://github.com/tobymao/sqlglot/commit/f2d3bf74e804e5a5e2ac6ca94210ba04df07e7f3) - annotate types for Snowflake UUID_STRING function *(PR [#5881](https://github.com/tobymao/sqlglot/pull/5881) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
11
+
12
+ annotate types for Snowflake UUID_STRING function (#5881)
13
+
14
+ - due to [`ec80ff3`](https://github.com/tobymao/sqlglot/commit/ec80ff34957c3e3f80c44175383b06cf72988a68) - make dump a list instead of a nested dict to avoid all recursion errors *(PR [#5885](https://github.com/tobymao/sqlglot/pull/5885) by [@tobymao](https://github.com/tobymao))*:
15
+
16
+ make dump a list instead of a nested dict to avoid all recursion errors (#5885)
17
+
18
+ - due to [`2fdaccd`](https://github.com/tobymao/sqlglot/commit/2fdaccd1a9045bda3d529025a4706c397b8a836f) - annotate types for Snowflake SHA1, SHA2 functions *(PR [#5884](https://github.com/tobymao/sqlglot/pull/5884) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
19
+
20
+ annotate types for Snowflake SHA1, SHA2 functions (#5884)
21
+
22
+ - due to [`faba309`](https://github.com/tobymao/sqlglot/commit/faba30905390e5efaf0ba9a05aab9ac2724b1b85) - annotate types for Snowflake AI_AGG function *(PR [#5894](https://github.com/tobymao/sqlglot/pull/5894) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
23
+
24
+ annotate types for Snowflake AI_AGG function (#5894)
25
+
26
+ - due to [`304bec5`](https://github.com/tobymao/sqlglot/commit/304bec5f7342501ad28ea4cd0a4b9aa092f2192f) - Annotate snowflake MD5 functions *(PR [#5883](https://github.com/tobymao/sqlglot/pull/5883) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*:
27
+
28
+ Annotate snowflake MD5 functions (#5883)
29
+
30
+ - due to [`c0180ec`](https://github.com/tobymao/sqlglot/commit/c0180ec163a43836fed754efcb6f26ad37cdae50) - annotate types for Snowflake AI_SUMMARIZE_AGG function *(PR [#5902](https://github.com/tobymao/sqlglot/pull/5902) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*:
31
+
32
+ annotate types for Snowflake AI_SUMMARIZE_AGG function (#5902)
33
+
34
+ - due to [`f5409df`](https://github.com/tobymao/sqlglot/commit/f5409df64ed6069880669878db687e4b98c3e280) - use column name in struct type annotation *(PR [#5903](https://github.com/tobymao/sqlglot/pull/5903) by [@georgesittas](https://github.com/georgesittas))*:
35
+
36
+ use column name in struct type annotation (#5903)
37
+
38
+
39
+ ### :sparkles: New Features
40
+ - [`cd818ba`](https://github.com/tobymao/sqlglot/commit/cd818bad51e93ec349b97675e4c1f5bd7c4c1522) - **singlestore**: Fixed generation/parsing of computed collumns *(PR [#5878](https://github.com/tobymao/sqlglot/pull/5878) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
41
+ - [`5d1f241`](https://github.com/tobymao/sqlglot/commit/5d1f241209197419111e9eda37fb6f2a5ec2bc4b) - **tsql**: support JSON_ARRAYAGG *(PR [#5879](https://github.com/tobymao/sqlglot/pull/5879) by [@geooo109](https://github.com/geooo109))*
42
+ - [`96ae7a3`](https://github.com/tobymao/sqlglot/commit/96ae7a3bcbf9de1932150baa0bd704d4ce05c9f7) - **optimizer**: Annotate and add tests for snowflake REPEAT and SPLIT functions *(PR [#5875](https://github.com/tobymao/sqlglot/pull/5875) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
43
+ - [`0fe6a25`](https://github.com/tobymao/sqlglot/commit/0fe6a25e366dcbc5a4a0878b285d147a6aa00412) - **postgres**: support JSON_AGG *(PR [#5880](https://github.com/tobymao/sqlglot/pull/5880) by [@geooo109](https://github.com/geooo109))*
44
+ - [`854eeeb`](https://github.com/tobymao/sqlglot/commit/854eeeb5b25954cc26b91135d58eb8370271f1de) - **optimizer**: annotate types for Snowflake REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR functions *(PR [#5876](https://github.com/tobymao/sqlglot/pull/5876) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
45
+ - [`f2d3bf7`](https://github.com/tobymao/sqlglot/commit/f2d3bf74e804e5a5e2ac6ca94210ba04df07e7f3) - **optimizer**: annotate types for Snowflake UUID_STRING function *(PR [#5881](https://github.com/tobymao/sqlglot/pull/5881) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
46
+ - [`5b9463a`](https://github.com/tobymao/sqlglot/commit/5b9463ad11a49c821585985c35394ebb30e827dd) - **mysql**: add support for binary `MOD` operator fixes [#5887](https://github.com/tobymao/sqlglot/pull/5887) *(commit by [@georgesittas](https://github.com/georgesittas))*
47
+ - [`d24eabc`](https://github.com/tobymao/sqlglot/commit/d24eabcbe30dc0f7c2dbae346e429efef58b5680) - **bigquery**: Add support for ML.GENERATE_TEXT_EMBEDDING(...) *(PR [#5891](https://github.com/tobymao/sqlglot/pull/5891) by [@VaggelisD](https://github.com/VaggelisD))*
48
+ - [`950a3fa`](https://github.com/tobymao/sqlglot/commit/950a3fa6d6307f7713f40117655da2f9710ebfa9) - **mysql**: SOUNDS LIKE, SUBSTR *(PR [#5886](https://github.com/tobymao/sqlglot/pull/5886) by [@vuvova](https://github.com/vuvova))*
49
+ - [`688afc5`](https://github.com/tobymao/sqlglot/commit/688afc55ab08588636eba92893c603ca68e43e6e) - **singlestore**: Fixed generation of exp.National *(PR [#5890](https://github.com/tobymao/sqlglot/pull/5890) by [@AdalbertMemSQL](https://github.com/AdalbertMemSQL))*
50
+ - [`c77147e`](https://github.com/tobymao/sqlglot/commit/c77147ebaafa6942f80af75dd6c2d7a62a7e6fe2) - **parser**: Extend support for `IS UNKOWN` across all dialects *(PR [#5888](https://github.com/tobymao/sqlglot/pull/5888) by [@VaggelisD](https://github.com/VaggelisD))*
51
+ - [`ec80ff3`](https://github.com/tobymao/sqlglot/commit/ec80ff34957c3e3f80c44175383b06cf72988a68) - make dump a list instead of a nested dict to avoid all recursion errors *(PR [#5885](https://github.com/tobymao/sqlglot/pull/5885) by [@tobymao](https://github.com/tobymao))*
52
+ - [`2fdaccd`](https://github.com/tobymao/sqlglot/commit/2fdaccd1a9045bda3d529025a4706c397b8a836f) - **optimizer**: annotate types for Snowflake SHA1, SHA2 functions *(PR [#5884](https://github.com/tobymao/sqlglot/pull/5884) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
53
+ - [`faba309`](https://github.com/tobymao/sqlglot/commit/faba30905390e5efaf0ba9a05aab9ac2724b1b85) - **optimizer**: annotate types for Snowflake AI_AGG function *(PR [#5894](https://github.com/tobymao/sqlglot/pull/5894) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
54
+ - [`dd27844`](https://github.com/tobymao/sqlglot/commit/dd2784435c7bdd2ceaaaaa359fcd112ad1f8190c) - **snowflake**: transpile `BYTE_LENGTH` *(PR [#5899](https://github.com/tobymao/sqlglot/pull/5899) by [@ozadari](https://github.com/ozadari))*
55
+ - [`304bec5`](https://github.com/tobymao/sqlglot/commit/304bec5f7342501ad28ea4cd0a4b9aa092f2192f) - **optimizer**: Annotate snowflake MD5 functions *(PR [#5883](https://github.com/tobymao/sqlglot/pull/5883) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
56
+ - [`ec3006d`](https://github.com/tobymao/sqlglot/commit/ec3006d815951fdc1a80d6722ce6f1176417d595) - **optimizer**: Add tests for snowflake NOT ILIKE and NOT LIKE *(PR [#5901](https://github.com/tobymao/sqlglot/pull/5901) by [@fivetran-amrutabhimsenayachit](https://github.com/fivetran-amrutabhimsenayachit))*
57
+ - [`c0180ec`](https://github.com/tobymao/sqlglot/commit/c0180ec163a43836fed754efcb6f26ad37cdae50) - **optimizer**: annotate types for Snowflake AI_SUMMARIZE_AGG function *(PR [#5902](https://github.com/tobymao/sqlglot/pull/5902) by [@fivetran-BradfordPaskewitz](https://github.com/fivetran-BradfordPaskewitz))*
58
+
59
+ ### :bug: Bug Fixes
60
+ - [`1d9e357`](https://github.com/tobymao/sqlglot/commit/1d9e357fb7549635ca25c6c42299880d7864e074) - **optimizer**: expand columns on the LHS of recursive CTEs *(PR [#5872](https://github.com/tobymao/sqlglot/pull/5872) by [@geooo109](https://github.com/geooo109))*
61
+ - :arrow_lower_right: *fixes issue [#5814](https://github.com/tobymao/sqlglot/issues/5814) opened by [@suresh-summation](https://github.com/suresh-summation)*
62
+ - [`7fcc52a`](https://github.com/tobymao/sqlglot/commit/7fcc52a22241c480c22b3e6f843e7a210c75a0ec) - **parser**: Require an explicit alias in EXCLUDE/RENAME/REPLACE star ops *(PR [#5892](https://github.com/tobymao/sqlglot/pull/5892) by [@VaggelisD](https://github.com/VaggelisD))*
63
+ - [`5fdcc65`](https://github.com/tobymao/sqlglot/commit/5fdcc651277ba4e86e11d0c5952a56e40299a998) - **snowflake**: parse OCTET_LENGTH *(PR [#5900](https://github.com/tobymao/sqlglot/pull/5900) by [@geooo109](https://github.com/geooo109))*
64
+ - [`f5409df`](https://github.com/tobymao/sqlglot/commit/f5409df64ed6069880669878db687e4b98c3e280) - **optimizer**: use column name in struct type annotation *(PR [#5903](https://github.com/tobymao/sqlglot/pull/5903) by [@georgesittas](https://github.com/georgesittas))*
65
+ - [`74886d8`](https://github.com/tobymao/sqlglot/commit/74886d82f70c9317af51c77b322e67a6aa260a5e) - **snowflake**: transpile BQ UNNEST with alias *(PR [#5897](https://github.com/tobymao/sqlglot/pull/5897) by [@geooo109](https://github.com/geooo109))*
66
+ - :arrow_lower_right: *fixes issue [#5895](https://github.com/tobymao/sqlglot/issues/5895) opened by [@YuvalOmerRep](https://github.com/YuvalOmerRep)*
67
+
68
+
4
69
  ## [v27.14.0] - 2025-09-11
5
70
  ### :boom: BREAKING CHANGES
6
71
  - due to [`9c8a600`](https://github.com/tobymao/sqlglot/commit/9c8a6001f41816035f391d046eb9692d6f13cefc) - correct parsing of TO_VARCHAR *(PR [#5840](https://github.com/tobymao/sqlglot/pull/5840) by [@geooo109](https://github.com/geooo109))*:
@@ -7263,3 +7328,4 @@ Changelog
7263
7328
  [v27.13.1]: https://github.com/tobymao/sqlglot/compare/v27.13.0...v27.13.1
7264
7329
  [v27.13.2]: https://github.com/tobymao/sqlglot/compare/v27.13.1...v27.13.2
7265
7330
  [v27.14.0]: https://github.com/tobymao/sqlglot/compare/v27.13.2...v27.14.0
7331
+ [v27.15.0]: https://github.com/tobymao/sqlglot/compare/v27.14.0...v27.15.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.15.0
3
+ Version: 27.15.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.0'
32
- __version_tuple__ = version_tuple = (27, 15, 0)
31
+ __version__ = version = '27.15.1'
32
+ __version_tuple__ = version_tuple = (27, 15, 1)
33
33
 
34
- __commit_id__ = commit_id = 'g74886d82f'
34
+ __commit_id__ = commit_id = 'g1ee026d22'
@@ -6975,16 +6975,27 @@ class Parser(metaclass=_Parser):
6975
6975
 
6976
6976
  def _parse_substring(self) -> exp.Substring:
6977
6977
  # Postgres supports the form: substring(string [from int] [for int])
6978
+ # (despite being undocumented, the reverse order also works)
6978
6979
  # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6
6979
6980
 
6980
6981
  args = t.cast(t.List[t.Optional[exp.Expression]], self._parse_csv(self._parse_bitwise))
6981
6982
 
6982
- if self._match(TokenType.FROM):
6983
- args.append(self._parse_bitwise())
6984
- if self._match(TokenType.FOR):
6985
- if len(args) == 1:
6986
- args.append(exp.Literal.number(1))
6987
- args.append(self._parse_bitwise())
6983
+ start, length = None, None
6984
+
6985
+ while self._curr:
6986
+ if self._match(TokenType.FROM):
6987
+ start = self._parse_bitwise()
6988
+ elif self._match(TokenType.FOR):
6989
+ if not start:
6990
+ start = exp.Literal.number(1)
6991
+ length = self._parse_bitwise()
6992
+ else:
6993
+ break
6994
+
6995
+ if start:
6996
+ args.append(start)
6997
+ if length:
6998
+ args.append(length)
6988
6999
 
6989
7000
  return self.validate_expression(exp.Substring.from_arg_list(args), args)
6990
7001
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.15.0
3
+ Version: 27.15.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
@@ -158,6 +158,10 @@ class TestPostgres(Validator):
158
158
  "pg_catalog.PG_TABLE_IS_VISIBLE(c.oid) "
159
159
  "ORDER BY 2, 3"
160
160
  )
161
+ self.validate_identity(
162
+ "SELECT SUBSTRING('Thomas' FOR 3 FROM 2)",
163
+ "SELECT SUBSTRING('Thomas' FROM 2 FOR 3)",
164
+ )
161
165
  self.validate_identity(
162
166
  "SELECT ARRAY[1, 2, 3] <@ ARRAY[1, 2]",
163
167
  "SELECT ARRAY[1, 2] @> ARRAY[1, 2, 3]",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes