polyglot-sql 0.4.0__tar.gz → 0.4.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 (174) hide show
  1. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/Cargo.lock +5 -5
  2. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/Cargo.toml +1 -1
  3. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/PKG-INFO +1 -1
  4. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/Cargo.toml +2 -2
  5. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/expressions.rs +2 -2
  6. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/generator.rs +10 -1
  7. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/openlineage.rs +14 -1
  8. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/subquery.rs +19 -3
  9. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/parser.rs +20 -6
  10. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/identity_roundtrip.rs +1 -0
  11. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_compat.rs +16 -0
  12. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/README.md +0 -0
  13. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/README.md +0 -0
  14. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/benches/in_list.rs +0 -0
  15. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/benches/parsing.rs +0 -0
  16. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/benches/rust_parsing.rs +0 -0
  17. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/benches/transpile.rs +0 -0
  18. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/examples/basic_usage.rs +0 -0
  19. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/examples/bench_json.rs +0 -0
  20. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/ast_transforms.rs +0 -0
  21. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/builder.rs +0 -0
  22. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/athena.rs +0 -0
  23. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/bigquery.rs +0 -0
  24. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/clickhouse.rs +0 -0
  25. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/cockroachdb.rs +0 -0
  26. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/databricks.rs +0 -0
  27. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/datafusion.rs +0 -0
  28. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/doris.rs +0 -0
  29. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/dremio.rs +0 -0
  30. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/drill.rs +0 -0
  31. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/druid.rs +0 -0
  32. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/duckdb.rs +0 -0
  33. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/dune.rs +0 -0
  34. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/exasol.rs +0 -0
  35. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/fabric.rs +0 -0
  36. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/generic.rs +0 -0
  37. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/hive.rs +0 -0
  38. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/materialize.rs +0 -0
  39. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/mod.rs +0 -0
  40. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/mysql.rs +0 -0
  41. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/oracle.rs +0 -0
  42. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/postgres.rs +0 -0
  43. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/presto.rs +0 -0
  44. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/redshift.rs +0 -0
  45. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/risingwave.rs +0 -0
  46. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/singlestore.rs +0 -0
  47. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/snowflake.rs +0 -0
  48. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/solr.rs +0 -0
  49. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/spark.rs +0 -0
  50. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/sqlite.rs +0 -0
  51. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/starrocks.rs +0 -0
  52. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/tableau.rs +0 -0
  53. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/teradata.rs +0 -0
  54. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/tidb.rs +0 -0
  55. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/trino.rs +0 -0
  56. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/dialects/tsql.rs +0 -0
  57. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/diff.rs +0 -0
  58. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/error.rs +0 -0
  59. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/function_catalog.rs +0 -0
  60. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/function_registry.rs +0 -0
  61. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/helper.rs +0 -0
  62. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/lib.rs +0 -0
  63. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/lineage.rs +0 -0
  64. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/annotate_types.rs +0 -0
  65. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/canonicalize.rs +0 -0
  66. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/eliminate_ctes.rs +0 -0
  67. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/eliminate_joins.rs +0 -0
  68. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/isolate_table_selects.rs +0 -0
  69. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/mod.rs +0 -0
  70. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/normalize.rs +0 -0
  71. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/normalize_identifiers.rs +0 -0
  72. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/optimize_joins.rs +0 -0
  73. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/optimizer.rs +0 -0
  74. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/pushdown_predicates.rs +0 -0
  75. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/pushdown_projections.rs +0 -0
  76. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/qualify_columns.rs +0 -0
  77. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/qualify_tables.rs +0 -0
  78. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/optimizer/simplify.rs +0 -0
  79. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/planner.rs +0 -0
  80. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/resolver.rs +0 -0
  81. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/schema.rs +0 -0
  82. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/scope.rs +0 -0
  83. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/time.rs +0 -0
  84. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/tokens.rs +0 -0
  85. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/transforms.rs +0 -0
  86. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/traversal.rs +0 -0
  87. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/trie.rs +0 -0
  88. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/validation/tests.rs +0 -0
  89. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/src/validation.rs +0 -0
  90. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/analyze_failures.rs +0 -0
  91. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/clickhouse_regression.rs +0 -0
  92. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/common/known_failures.rs +0 -0
  93. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/common/mod.rs +0 -0
  94. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/common/test_data.rs +0 -0
  95. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/common/test_runner.rs +0 -0
  96. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_clickhouse_coverage.rs +0 -0
  97. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_clickhouse_parser.rs +0 -0
  98. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_dialect.rs +0 -0
  99. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_dialect_tests.rs +0 -0
  100. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/ddl.json +0 -0
  101. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/dml.json +0 -0
  102. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/functions.json +0 -0
  103. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/identity.json +0 -0
  104. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/operators.json +0 -0
  105. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/select.json +0 -0
  106. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/transpilation.json +0 -0
  107. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/types.json +0 -0
  108. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/deep_nesting_regression.rs +0 -0
  109. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/dialect_matrix.rs +0 -0
  110. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/error_handling.rs +0 -0
  111. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/fabric_regression.rs +0 -0
  112. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/fabric_tpch_regression.rs +0 -0
  113. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/issue201_regression_test.rs +0 -0
  114. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/postgres_sqlite_regression.rs +0 -0
  115. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/snowflake_regression_test.rs +0 -0
  116. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_dialect_identity.rs +0 -0
  117. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_identity.rs +0 -0
  118. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_identity_detailed.rs +0 -0
  119. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_parser.rs +0 -0
  120. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_pretty.rs +0 -0
  121. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_transpilation.rs +0 -0
  122. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/sqlglot_transpile.rs +0 -0
  123. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/tpch_transpile_stack.rs +0 -0
  124. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/transform_regression.rs +0 -0
  125. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql/tests/tsql_regression.rs +0 -0
  126. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/Cargo.toml +0 -0
  127. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/README.md +0 -0
  128. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/src/clickhouse.rs +0 -0
  129. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/src/duckdb.rs +0 -0
  130. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/src/lib.rs +0 -0
  131. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/tools/clickhouse/extract_functions.py +0 -0
  132. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-function-catalogs/tools/duckdb/extract_functions.py +0 -0
  133. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/Cargo.toml +0 -0
  134. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/README.md +0 -0
  135. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/docs/api.md +0 -0
  136. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/docs/index.md +0 -0
  137. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/mkdocs.yml +0 -0
  138. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/annotate_types.rs +0 -0
  139. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/dialects.rs +0 -0
  140. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/diff.rs +0 -0
  141. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/errors.rs +0 -0
  142. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/expr.rs +0 -0
  143. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/expr_types.rs +0 -0
  144. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/format.rs +0 -0
  145. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/generate.rs +0 -0
  146. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/helpers.rs +0 -0
  147. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/lib.rs +0 -0
  148. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/lineage.rs +0 -0
  149. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/openlineage.rs +0 -0
  150. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/optimize.rs +0 -0
  151. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/parse.rs +0 -0
  152. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/tokenize.rs +0 -0
  153. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/transforms.rs +0 -0
  154. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/transpile.rs +0 -0
  155. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/types.rs +0 -0
  156. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/src/validate.rs +0 -0
  157. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/conftest.py +0 -0
  158. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_compat.py +0 -0
  159. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_dialects.py +0 -0
  160. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_diff.py +0 -0
  161. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_expression.py +0 -0
  162. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_format.py +0 -0
  163. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_generate.py +0 -0
  164. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_lineage.py +0 -0
  165. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_optimize.py +0 -0
  166. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_parse.py +0 -0
  167. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_transforms.py +0 -0
  168. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_transpile.py +0 -0
  169. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/tests/test_validate.py +0 -0
  170. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/crates/polyglot-sql-python/uv.lock +0 -0
  171. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/pyproject.toml +0 -0
  172. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/python/polyglot_sql/__init__.py +0 -0
  173. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/python/polyglot_sql/__init__.pyi +0 -0
  174. {polyglot_sql-0.4.0 → polyglot_sql-0.4.1}/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.4.0"
608
+ version = "0.4.1"
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.4.0"
624
+ version = "0.4.1"
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.4.0"
634
+ version = "0.4.1"
635
635
 
636
636
  [[package]]
637
637
  name = "polyglot-sql-python"
638
- version = "0.4.0"
638
+ version = "0.4.1"
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.4.0"
649
+ version = "0.4.1"
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.4.0"
9
+ version = "0.4.1"
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.4.0
3
+ Version: 0.4.1
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -28,7 +28,7 @@ generate = []
28
28
  transpile = ["generate"]
29
29
  builder = ["generate"]
30
30
  ast-tools = []
31
- semantic = ["generate", "ast-tools"]
31
+ semantic = ["ast-tools"]
32
32
  openlineage = ["semantic"]
33
33
  diff = ["generate"]
34
34
  planner = []
@@ -106,7 +106,7 @@ thiserror = { workspace = true }
106
106
  unicode-segmentation = { workspace = true }
107
107
  stacker = { version = "0.1", optional = true }
108
108
  ts-rs = { version = "12.0", features = ["serde-compat"], optional = true }
109
- polyglot-sql-function-catalogs = { path = "../polyglot-sql-function-catalogs", version = "0.4.0", optional = true, default-features = false }
109
+ polyglot-sql-function-catalogs = { path = "../polyglot-sql-function-catalogs", version = "0.4.1", optional = true, default-features = false }
110
110
 
111
111
  [dev-dependencies]
112
112
  pretty_assertions = "1.4"
@@ -8346,7 +8346,7 @@ pub struct IndexColumn {
8346
8346
  #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8347
8347
  #[cfg_attr(feature = "bindings", derive(TS))]
8348
8348
  pub struct DropIndex {
8349
- pub name: Identifier,
8349
+ pub name: TableRef,
8350
8350
  pub table: Option<TableRef>,
8351
8351
  pub if_exists: bool,
8352
8352
  /// PostgreSQL CONCURRENTLY modifier
@@ -8357,7 +8357,7 @@ pub struct DropIndex {
8357
8357
  impl DropIndex {
8358
8358
  pub fn new(name: impl Into<String>) -> Self {
8359
8359
  Self {
8360
- name: Identifier::new(name),
8360
+ name: TableRef::new(name),
8361
8361
  table: None,
8362
8362
  if_exists: false,
8363
8363
  concurrently: false,
@@ -11108,7 +11108,7 @@ impl Generator {
11108
11108
  }
11109
11109
 
11110
11110
  self.write_space();
11111
- self.generate_identifier(&di.name)?;
11111
+ self.generate_table(&di.name)?;
11112
11112
 
11113
11113
  if let Some(ref table) = di.table {
11114
11114
  self.write_space();
@@ -38852,6 +38852,15 @@ mod tests {
38852
38852
  fn test_drop_index() {
38853
38853
  let result = roundtrip("DROP INDEX idx_name");
38854
38854
  assert_eq!(result, "DROP INDEX idx_name");
38855
+
38856
+ let result = roundtrip(r#"DROP INDEX IF EXISTS "idx_tokenKey__pb_users_auth_""#);
38857
+ assert_eq!(
38858
+ result,
38859
+ r#"DROP INDEX IF EXISTS "idx_tokenKey__pb_users_auth_""#
38860
+ );
38861
+
38862
+ let result = roundtrip(r#"DROP INDEX "public"."IdxMixed""#);
38863
+ assert_eq!(result, r#"DROP INDEX "public"."IdxMixed""#);
38855
38864
  }
38856
38865
 
38857
38866
  #[test]
@@ -550,11 +550,24 @@ fn input_fields_for_output(
550
550
  let description = output_field
551
551
  .expression
552
552
  .as_ref()
553
- .map(|expr| expr.sql_for(options.dialect));
553
+ .and_then(|expr| transformation_description(expr, options.dialect));
554
554
 
555
555
  terminal_fields_to_openlineage(terminals, subtype, description, options, warnings)
556
556
  }
557
557
 
558
+ fn transformation_description(expr: &Expression, dialect: DialectType) -> Option<String> {
559
+ #[cfg(feature = "generate")]
560
+ {
561
+ Some(expr.sql_for(dialect))
562
+ }
563
+
564
+ #[cfg(not(feature = "generate"))]
565
+ {
566
+ let _ = (expr, dialect);
567
+ None
568
+ }
569
+ }
570
+
558
571
  fn terminal_fields_to_openlineage(
559
572
  terminals: Vec<TerminalField>,
560
573
  subtype: &str,
@@ -1176,7 +1176,7 @@ fn extract_subquery_to_cte(
1176
1176
  ) -> Expression {
1177
1177
  match source {
1178
1178
  Expression::Subquery(sub) => {
1179
- let inner_sql = crate::generator::Generator::sql(&sub.this).unwrap_or_default();
1179
+ let subquery_key = subquery_identity_key(&sub.this);
1180
1180
  let alias_name = sub
1181
1181
  .alias
1182
1182
  .as_ref()
@@ -1184,7 +1184,7 @@ fn extract_subquery_to_cte(
1184
1184
  .unwrap_or_default();
1185
1185
 
1186
1186
  // Check for duplicate subquery (reuse existing CTE)
1187
- if let Some(existing_name) = seen_sql.get(&inner_sql) {
1187
+ if let Some(existing_name) = seen_sql.get(&subquery_key) {
1188
1188
  let mut tref = TableRef::new(existing_name.as_str());
1189
1189
  if !alias_name.is_empty() {
1190
1190
  tref.alias = Some(Identifier::new(&alias_name));
@@ -1199,7 +1199,7 @@ fn extract_subquery_to_cte(
1199
1199
  find_new_name(taken, "_cte")
1200
1200
  };
1201
1201
  taken.insert(cte_name.clone());
1202
- seen_sql.insert(inner_sql, cte_name.clone());
1202
+ seen_sql.insert(subquery_key, cte_name.clone());
1203
1203
 
1204
1204
  // Create CTE
1205
1205
  new_ctes.push(Cte {
@@ -1223,6 +1223,22 @@ fn extract_subquery_to_cte(
1223
1223
  }
1224
1224
  }
1225
1225
 
1226
+ fn subquery_identity_key(expr: &Expression) -> String {
1227
+ #[cfg(feature = "generate")]
1228
+ {
1229
+ crate::generator::Generator::sql(expr).unwrap_or_else(|_| structural_subquery_key(expr))
1230
+ }
1231
+
1232
+ #[cfg(not(feature = "generate"))]
1233
+ {
1234
+ structural_subquery_key(expr)
1235
+ }
1236
+ }
1237
+
1238
+ fn structural_subquery_key(expr: &Expression) -> String {
1239
+ serde_json::to_string(expr).unwrap_or_else(|_| format!("{expr:?}"))
1240
+ }
1241
+
1226
1242
  /// Unnest correlated subqueries where possible.
1227
1243
  ///
1228
1244
  /// This transforms correlated subqueries into JOINs for better performance.
@@ -18529,12 +18529,9 @@ impl Parser {
18529
18529
 
18530
18530
  let if_exists = self.match_keywords(&[TokenType::If, TokenType::Exists]);
18531
18531
 
18532
- // Parse potentially qualified index name (a.b.c)
18533
- let mut name_parts = vec![self.expect_identifier()?];
18534
- while self.match_token(TokenType::Dot) {
18535
- name_parts.push(self.expect_identifier()?);
18536
- }
18537
- let name = Identifier::new(name_parts.join("."));
18532
+ // Parse potentially qualified index name (a.b.c), preserving quoted
18533
+ // state independently for every part.
18534
+ let name = self.parse_table_ref()?;
18538
18535
 
18539
18536
  // Optional ON table
18540
18537
  let table = if self.match_token(TokenType::On) {
@@ -60646,10 +60643,27 @@ OPTIONS (
60646
60643
 
60647
60644
  if let Expression::DropIndex(di) = &result[0] {
60648
60645
  assert!(di.if_exists);
60646
+ assert_eq!(di.name.name.name, "idx_email");
60647
+ assert!(!di.name.name.quoted);
60649
60648
  assert!(di.table.is_some());
60650
60649
  }
60651
60650
  }
60652
60651
 
60652
+ #[test]
60653
+ fn test_parse_drop_index_preserves_qualified_quoted_name() {
60654
+ let result = Parser::parse_sql(r#"DROP INDEX IF EXISTS "public"."IdxEmail""#).unwrap();
60655
+
60656
+ if let Expression::DropIndex(di) = &result[0] {
60657
+ let schema = di.name.schema.as_ref().expect("schema");
60658
+ assert_eq!(schema.name, "public");
60659
+ assert!(schema.quoted);
60660
+ assert_eq!(di.name.name.name, "IdxEmail");
60661
+ assert!(di.name.name.quoted);
60662
+ } else {
60663
+ panic!("Expected DropIndex");
60664
+ }
60665
+ }
60666
+
60653
60667
  #[test]
60654
60668
  fn test_parse_create_view() {
60655
60669
  let result =
@@ -777,6 +777,7 @@ mod ddl_drop_tests {
777
777
  #[test]
778
778
  fn test_drop_index() {
779
779
  assert_roundtrip("DROP INDEX a.b.c");
780
+ assert_roundtrip(r#"DROP INDEX "a"."B""#);
780
781
  }
781
782
 
782
783
  #[test]
@@ -330,6 +330,22 @@ mod ddl_tests {
330
330
  roundtrip("DROP INDEX IF EXISTS idx"),
331
331
  "DROP INDEX IF EXISTS idx"
332
332
  );
333
+ assert_eq!(
334
+ transpile(
335
+ r#"DROP INDEX IF EXISTS "idx_tokenKey__pb_users_auth_""#,
336
+ DialectType::PostgreSQL,
337
+ DialectType::PostgreSQL
338
+ ),
339
+ r#"DROP INDEX IF EXISTS "idx_tokenKey__pb_users_auth_""#
340
+ );
341
+ assert_eq!(
342
+ transpile(
343
+ "DROP INDEX IF EXISTS `idx_tokenKey__pb_users_auth_`",
344
+ DialectType::SQLite,
345
+ DialectType::PostgreSQL
346
+ ),
347
+ r#"DROP INDEX IF EXISTS "idx_tokenKey__pb_users_auth_""#
348
+ );
333
349
  }
334
350
 
335
351
  #[test]
File without changes