polyglot-sql 0.3.5__tar.gz → 0.3.7__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 (170) hide show
  1. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/Cargo.lock +5 -5
  2. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/Cargo.toml +1 -1
  3. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/PKG-INFO +1 -1
  4. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/Cargo.toml +1 -1
  5. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/builder.rs +4 -0
  6. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/bigquery.rs +2 -0
  7. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/clickhouse.rs +10 -0
  8. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/databricks.rs +33 -0
  9. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/duckdb.rs +25 -4
  10. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/mod.rs +266 -100
  11. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/mysql.rs +1 -0
  12. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/redshift.rs +1 -0
  13. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/snowflake.rs +13 -0
  14. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/spark.rs +53 -5
  15. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/tsql.rs +6 -0
  16. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/expressions.rs +22 -0
  17. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/generator.rs +486 -139
  18. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/canonicalize.rs +4 -0
  19. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/isolate_table_selects.rs +2 -0
  20. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/pushdown_projections.rs +4 -0
  21. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/qualify_columns.rs +10 -0
  22. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/subquery.rs +6 -0
  23. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/parser.rs +985 -171
  24. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/tokens.rs +39 -0
  25. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/transforms.rs +66 -0
  26. polyglot_sql-0.3.7/crates/polyglot-sql/tests/clickhouse_regression.rs +159 -0
  27. polyglot_sql-0.3.7/crates/polyglot-sql/tests/custom_clickhouse_coverage.rs +168 -0
  28. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/deep_nesting_regression.rs +2 -0
  29. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/fabric_regression.rs +43 -0
  30. polyglot_sql-0.3.5/crates/polyglot-sql/tests/clickhouse_regression.rs +0 -29
  31. polyglot_sql-0.3.5/crates/polyglot-sql/tests/custom_clickhouse_coverage.rs +0 -95
  32. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/README.md +0 -0
  33. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/README.md +0 -0
  34. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/benches/in_list.rs +0 -0
  35. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/benches/parsing.rs +0 -0
  36. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/benches/rust_parsing.rs +0 -0
  37. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/benches/transpile.rs +0 -0
  38. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/examples/basic_usage.rs +0 -0
  39. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/examples/bench_json.rs +0 -0
  40. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/ast_transforms.rs +0 -0
  41. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/athena.rs +0 -0
  42. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/cockroachdb.rs +0 -0
  43. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/datafusion.rs +0 -0
  44. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/doris.rs +0 -0
  45. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/dremio.rs +0 -0
  46. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/drill.rs +0 -0
  47. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/druid.rs +0 -0
  48. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/dune.rs +0 -0
  49. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/exasol.rs +0 -0
  50. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/fabric.rs +0 -0
  51. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/generic.rs +0 -0
  52. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/hive.rs +0 -0
  53. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/materialize.rs +0 -0
  54. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/oracle.rs +0 -0
  55. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/postgres.rs +0 -0
  56. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/presto.rs +0 -0
  57. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/risingwave.rs +0 -0
  58. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/singlestore.rs +0 -0
  59. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/solr.rs +0 -0
  60. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/sqlite.rs +0 -0
  61. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/starrocks.rs +0 -0
  62. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/tableau.rs +0 -0
  63. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/teradata.rs +0 -0
  64. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/tidb.rs +0 -0
  65. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/dialects/trino.rs +0 -0
  66. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/diff.rs +0 -0
  67. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/error.rs +0 -0
  68. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/function_catalog.rs +0 -0
  69. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/function_registry.rs +0 -0
  70. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/helper.rs +0 -0
  71. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/lib.rs +0 -0
  72. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/lineage.rs +0 -0
  73. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/annotate_types.rs +0 -0
  74. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/eliminate_ctes.rs +0 -0
  75. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/eliminate_joins.rs +0 -0
  76. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/mod.rs +0 -0
  77. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/normalize.rs +0 -0
  78. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/normalize_identifiers.rs +0 -0
  79. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/optimize_joins.rs +0 -0
  80. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/optimizer.rs +0 -0
  81. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/pushdown_predicates.rs +0 -0
  82. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/qualify_tables.rs +0 -0
  83. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/optimizer/simplify.rs +0 -0
  84. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/planner.rs +0 -0
  85. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/resolver.rs +0 -0
  86. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/schema.rs +0 -0
  87. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/scope.rs +0 -0
  88. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/time.rs +0 -0
  89. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/traversal.rs +0 -0
  90. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/trie.rs +0 -0
  91. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/validation/tests.rs +0 -0
  92. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/src/validation.rs +0 -0
  93. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/analyze_failures.rs +0 -0
  94. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/common/known_failures.rs +0 -0
  95. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/common/mod.rs +0 -0
  96. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/common/test_data.rs +0 -0
  97. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/common/test_runner.rs +0 -0
  98. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_clickhouse_parser.rs +0 -0
  99. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_dialect.rs +0 -0
  100. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_dialect_tests.rs +0 -0
  101. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/ddl.json +0 -0
  102. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/dml.json +0 -0
  103. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/functions.json +0 -0
  104. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/identity.json +0 -0
  105. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/operators.json +0 -0
  106. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/select.json +0 -0
  107. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/transpilation.json +0 -0
  108. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/custom_fixtures/datafusion/types.json +0 -0
  109. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/dialect_matrix.rs +0 -0
  110. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/error_handling.rs +0 -0
  111. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/identity_roundtrip.rs +0 -0
  112. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/postgres_sqlite_regression.rs +0 -0
  113. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/snowflake_regression_test.rs +0 -0
  114. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_compat.rs +0 -0
  115. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_dialect_identity.rs +0 -0
  116. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_identity.rs +0 -0
  117. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_identity_detailed.rs +0 -0
  118. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_parser.rs +0 -0
  119. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_pretty.rs +0 -0
  120. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_transpilation.rs +0 -0
  121. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/sqlglot_transpile.rs +0 -0
  122. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/tpch_transpile_stack.rs +0 -0
  123. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/transform_regression.rs +0 -0
  124. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql/tests/tsql_regression.rs +0 -0
  125. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/Cargo.toml +0 -0
  126. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/README.md +0 -0
  127. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/src/clickhouse.rs +0 -0
  128. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/src/duckdb.rs +0 -0
  129. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/src/lib.rs +0 -0
  130. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/tools/clickhouse/extract_functions.py +0 -0
  131. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-function-catalogs/tools/duckdb/extract_functions.py +0 -0
  132. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/Cargo.toml +0 -0
  133. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/README.md +0 -0
  134. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/docs/api.md +0 -0
  135. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/docs/index.md +0 -0
  136. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/mkdocs.yml +0 -0
  137. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/annotate_types.rs +0 -0
  138. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/dialects.rs +0 -0
  139. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/diff.rs +0 -0
  140. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/errors.rs +0 -0
  141. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/expr.rs +0 -0
  142. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/expr_types.rs +0 -0
  143. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/format.rs +0 -0
  144. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/generate.rs +0 -0
  145. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/helpers.rs +0 -0
  146. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/lib.rs +0 -0
  147. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/lineage.rs +0 -0
  148. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/optimize.rs +0 -0
  149. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/parse.rs +0 -0
  150. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/tokenize.rs +0 -0
  151. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/transpile.rs +0 -0
  152. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/types.rs +0 -0
  153. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/src/validate.rs +0 -0
  154. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/conftest.py +0 -0
  155. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_compat.py +0 -0
  156. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_dialects.py +0 -0
  157. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_diff.py +0 -0
  158. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_expression.py +0 -0
  159. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_format.py +0 -0
  160. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_generate.py +0 -0
  161. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_lineage.py +0 -0
  162. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_optimize.py +0 -0
  163. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_parse.py +0 -0
  164. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_transpile.py +0 -0
  165. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/tests/test_validate.py +0 -0
  166. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/crates/polyglot-sql-python/uv.lock +0 -0
  167. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/pyproject.toml +0 -0
  168. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/python/polyglot_sql/__init__.py +0 -0
  169. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/python/polyglot_sql/__init__.pyi +0 -0
  170. {polyglot_sql-0.3.5 → polyglot_sql-0.3.7}/python/polyglot_sql/py.typed +0 -0
@@ -605,7 +605,7 @@ dependencies = [
605
605
 
606
606
  [[package]]
607
607
  name = "polyglot-sql"
608
- version = "0.3.5"
608
+ version = "0.3.7"
609
609
  dependencies = [
610
610
  "criterion",
611
611
  "once_cell",
@@ -621,7 +621,7 @@ dependencies = [
621
621
 
622
622
  [[package]]
623
623
  name = "polyglot-sql-ffi"
624
- version = "0.3.5"
624
+ version = "0.3.7"
625
625
  dependencies = [
626
626
  "cbindgen",
627
627
  "polyglot-sql",
@@ -631,11 +631,11 @@ dependencies = [
631
631
 
632
632
  [[package]]
633
633
  name = "polyglot-sql-function-catalogs"
634
- version = "0.3.5"
634
+ version = "0.3.7"
635
635
 
636
636
  [[package]]
637
637
  name = "polyglot-sql-python"
638
- version = "0.3.5"
638
+ version = "0.3.7"
639
639
  dependencies = [
640
640
  "polyglot-sql",
641
641
  "pyo3",
@@ -646,7 +646,7 @@ dependencies = [
646
646
 
647
647
  [[package]]
648
648
  name = "polyglot-sql-wasm"
649
- version = "0.3.5"
649
+ version = "0.3.7"
650
650
  dependencies = [
651
651
  "console_error_panic_hook",
652
652
  "js-sys",
@@ -6,7 +6,7 @@ exclude = [
6
6
  ]
7
7
 
8
8
  [workspace.package]
9
- version = "0.3.5"
9
+ version = "0.3.7"
10
10
  edition = "2021"
11
11
  license = "MIT"
12
12
  authors = ["polyglot contributors"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyglot-sql
3
- Version: 0.3.5
3
+ Version: 0.3.7
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -83,7 +83,7 @@ thiserror = { workspace = true }
83
83
  unicode-segmentation = { workspace = true }
84
84
  stacker = { version = "0.1", optional = true }
85
85
  ts-rs = { version = "12.0", features = ["serde-compat"], optional = true }
86
- polyglot-sql-function-catalogs = { path = "../polyglot-sql-function-catalogs", version = "0.3.5", optional = true, default-features = false }
86
+ polyglot-sql-function-catalogs = { path = "../polyglot-sql-function-catalogs", version = "0.3.7", optional = true, default-features = false }
87
87
 
88
88
  [dev-dependencies]
89
89
  pretty_assertions = "1.4"
@@ -294,6 +294,8 @@ pub fn alias(expr: Expr, name: &str) -> Expr {
294
294
  this: expr.0,
295
295
  alias: builder_identifier(name),
296
296
  column_aliases: Vec::new(),
297
+ alias_explicit_as: false,
298
+ alias_keyword: None,
297
299
  pre_alias_comments: Vec::new(),
298
300
  trailing_comments: Vec::new(),
299
301
  inferred_type: None,
@@ -1955,6 +1957,8 @@ pub fn subquery_expr(expr: Expression, alias_name: &str) -> Expr {
1955
1957
  this: expr,
1956
1958
  alias: Some(builder_identifier(alias_name)),
1957
1959
  column_aliases: Vec::new(),
1960
+ alias_explicit_as: false,
1961
+ alias_keyword: None,
1958
1962
  order_by: None,
1959
1963
  limit: None,
1960
1964
  offset: None,
@@ -683,6 +683,8 @@ impl DialectImpl for BigQueryDialect {
683
683
  this: unnest,
684
684
  alias: Identifier::new("_col"),
685
685
  column_aliases: Vec::new(),
686
+ alias_explicit_as: false,
687
+ alias_keyword: None,
686
688
  pre_alias_comments: Vec::new(),
687
689
  trailing_comments: Vec::new(),
688
690
  inferred_type: None,
@@ -42,6 +42,10 @@ impl DialectImpl for ClickHouseDialect {
42
42
  config.hex_string_is_integer_type = true;
43
43
  // ClickHouse allows underscores as digit separators in numeric literals
44
44
  config.numbers_can_be_underscore_separated = true;
45
+ // SQLGlot tokenizes malformed SHOW LIKE probes such as `'a\' or 1=1`.
46
+ config.recover_terminal_backslash_quote = true;
47
+ // The ClickHouse corpus includes partial string probes extracted from shell tests.
48
+ config.recover_unterminated_string = true;
45
49
  config
46
50
  }
47
51
 
@@ -249,6 +253,12 @@ impl DialectImpl for ClickHouseDialect {
249
253
  // IF(cond, true, false) -> CASE WHEN cond THEN true ELSE false END
250
254
  Expression::IfFunc(f) => {
251
255
  let f = *f;
256
+ let has_aliased_arg = matches!(f.condition, Expression::Alias(_))
257
+ || matches!(f.true_value, Expression::Alias(_))
258
+ || matches!(f.false_value.as_ref(), Some(Expression::Alias(_)));
259
+ if has_aliased_arg {
260
+ return Ok(Expression::IfFunc(Box::new(f)));
261
+ }
252
262
  Ok(Expression::Case(Box::new(Case {
253
263
  operand: None,
254
264
  whens: vec![(f.condition, f.true_value)],
@@ -213,6 +213,39 @@ impl DatabricksDialect {
213
213
  f.args,
214
214
  )))),
215
215
 
216
+ // NAMED_STRUCT('a', 1) -> STRUCT(1 AS a) for SQLGlot Databricks outputs
217
+ "NAMED_STRUCT" if f.args.len() % 2 == 0 => {
218
+ let original_args = f.args.clone();
219
+ let mut struct_args = Vec::new();
220
+ for pair in f.args.chunks(2) {
221
+ if let Expression::Literal(lit) = &pair[0] {
222
+ if let Literal::String(field_name) = lit.as_ref() {
223
+ struct_args.push(Expression::Alias(Box::new(
224
+ crate::expressions::Alias {
225
+ this: pair[1].clone(),
226
+ alias: crate::expressions::Identifier::new(field_name),
227
+ column_aliases: Vec::new(),
228
+ alias_explicit_as: false,
229
+ alias_keyword: None,
230
+ pre_alias_comments: Vec::new(),
231
+ trailing_comments: Vec::new(),
232
+ inferred_type: None,
233
+ },
234
+ )));
235
+ continue;
236
+ }
237
+ }
238
+ return Ok(Expression::Function(Box::new(Function::new(
239
+ "NAMED_STRUCT".to_string(),
240
+ original_args,
241
+ ))));
242
+ }
243
+ Ok(Expression::Function(Box::new(Function::new(
244
+ "STRUCT".to_string(),
245
+ struct_args,
246
+ ))))
247
+ }
248
+
216
249
  // GETDATE -> CURRENT_TIMESTAMP
217
250
  "GETDATE" => Ok(Expression::CurrentTimestamp(
218
251
  crate::expressions::CurrentTimestamp {
@@ -1212,6 +1212,8 @@ impl DialectImpl for DuckDBDialect {
1212
1212
  this: value,
1213
1213
  alias,
1214
1214
  column_aliases: Vec::new(),
1215
+ alias_explicit_as: false,
1216
+ alias_keyword: None,
1215
1217
  pre_alias_comments: Vec::new(),
1216
1218
  trailing_comments: Vec::new(),
1217
1219
  inferred_type: None,
@@ -1418,6 +1420,8 @@ impl DuckDBDialect {
1418
1420
  this: stmt,
1419
1421
  alias: None,
1420
1422
  column_aliases: Vec::new(),
1423
+ alias_explicit_as: false,
1424
+ alias_keyword: None,
1421
1425
  order_by: None,
1422
1426
  limit: None,
1423
1427
  offset: None,
@@ -3466,10 +3470,27 @@ impl DuckDBDialect {
3466
3470
  vec![arg, Expression::number(2)],
3467
3471
  ))))
3468
3472
  }
3469
- "UUID_STRING" => Ok(Expression::Function(Box::new(Function::new(
3470
- "UUID".to_string(),
3471
- vec![],
3472
- )))),
3473
+ "LIST"
3474
+ if f.args.len() == 1 && !matches!(f.args.first(), Some(Expression::Select(_))) =>
3475
+ {
3476
+ Ok(Expression::Function(Box::new(Function::new(
3477
+ "ARRAY_AGG".to_string(),
3478
+ f.args,
3479
+ ))))
3480
+ }
3481
+ "UUID_STRING" => {
3482
+ if f.args.is_empty() {
3483
+ Ok(Expression::Function(Box::new(Function::new(
3484
+ "UUID".to_string(),
3485
+ vec![],
3486
+ ))))
3487
+ } else {
3488
+ Ok(Expression::Function(Box::new(Function::new(
3489
+ "UUID_STRING".to_string(),
3490
+ f.args,
3491
+ ))))
3492
+ }
3493
+ }
3473
3494
  "ENDSWITH" => Ok(Expression::Function(Box::new(Function::new(
3474
3495
  "ENDS_WITH".to_string(),
3475
3496
  f.args,