polyglot-sql 0.13.0__tar.gz → 0.13.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 (227) hide show
  1. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/Cargo.lock +6 -6
  2. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/Cargo.toml +1 -1
  3. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/PKG-INFO +1 -1
  4. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/Cargo.toml +2 -2
  5. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/README.md +4 -4
  6. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/allocation_hotspots.rs +51 -0
  7. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/transpile.rs +45 -1
  8. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/statements.rs +2 -24
  9. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/oracle.rs +2 -0
  10. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/tsql.rs +2 -2
  11. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/expressions.rs +35 -3
  12. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/generator.rs +543 -225
  13. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/qualify_columns.rs +17 -0
  14. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/parser.rs +154 -92
  15. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/transforms.rs +4 -8
  16. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/dialect_matrix.rs +456 -0
  17. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/README.md +1 -1
  18. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/README.md +0 -0
  19. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/ast_traversal.rs +0 -0
  20. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/common/mod.rs +0 -0
  21. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/in_list.rs +0 -0
  22. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/lineage.rs +0 -0
  23. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/parsing.rs +0 -0
  24. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/performance_hotspots.rs +0 -0
  25. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/benches/rust_parsing.rs +0 -0
  26. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/examples/basic_usage.rs +0 -0
  27. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/examples/bench_json.rs +0 -0
  28. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/ast_children.rs +0 -0
  29. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/ast_json.rs +0 -0
  30. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/ast_mutation.rs +0 -0
  31. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/ast_transforms.rs +0 -0
  32. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/binding.rs +0 -0
  33. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/builder/mod.rs +0 -0
  34. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/builder/plan.rs +0 -0
  35. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/athena.rs +0 -0
  36. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/bigquery.rs +0 -0
  37. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/clickhouse.rs +0 -0
  38. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/cockroachdb.rs +0 -0
  39. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/databricks.rs +0 -0
  40. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/datafusion.rs +0 -0
  41. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/doris.rs +0 -0
  42. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/dremio.rs +0 -0
  43. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/drill.rs +0 -0
  44. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/druid.rs +0 -0
  45. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/duckdb.rs +0 -0
  46. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/dune.rs +0 -0
  47. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/exasol.rs +0 -0
  48. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/fabric.rs +0 -0
  49. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/generic.rs +0 -0
  50. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/hana.rs +0 -0
  51. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/hive.rs +0 -0
  52. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/materialize.rs +0 -0
  53. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/mod.rs +0 -0
  54. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/mysql.rs +0 -0
  55. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/aggregates.rs +0 -0
  56. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/collections.rs +0 -0
  57. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/hana.rs +0 -0
  58. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/json.rs +0 -0
  59. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/mod.rs +0 -0
  60. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/operators.rs +0 -0
  61. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/postgres_interval.rs +0 -0
  62. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/scalar.rs +0 -0
  63. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/temporal.rs +0 -0
  64. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/types.rs +0 -0
  65. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/normalization/vertica.rs +0 -0
  66. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/postgres.rs +0 -0
  67. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/presto.rs +0 -0
  68. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/redshift.rs +0 -0
  69. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/risingwave.rs +0 -0
  70. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/singlestore.rs +0 -0
  71. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/snowflake.rs +0 -0
  72. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/solr.rs +0 -0
  73. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/spark.rs +0 -0
  74. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/sqlite.rs +0 -0
  75. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/starrocks.rs +0 -0
  76. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/tableau.rs +0 -0
  77. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/teradata.rs +0 -0
  78. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/tidb.rs +0 -0
  79. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/trino.rs +0 -0
  80. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/dialects/vertica.rs +0 -0
  81. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/diff.rs +0 -0
  82. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/error.rs +0 -0
  83. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/format_tokens.rs +0 -0
  84. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/function_catalog.rs +0 -0
  85. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/function_registry.rs +0 -0
  86. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/guard.rs +0 -0
  87. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/helper.rs +0 -0
  88. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/lib.rs +0 -0
  89. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/lineage.rs +0 -0
  90. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/openlineage.rs +0 -0
  91. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/annotate_types.rs +0 -0
  92. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/canonicalize.rs +0 -0
  93. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/eliminate_ctes.rs +0 -0
  94. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/eliminate_joins.rs +0 -0
  95. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/isolate_table_selects.rs +0 -0
  96. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/mod.rs +0 -0
  97. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/normalize.rs +0 -0
  98. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/normalize_identifiers.rs +0 -0
  99. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/optimize_joins.rs +0 -0
  100. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/optimizer.rs +0 -0
  101. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/pushdown_predicates.rs +0 -0
  102. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/pushdown_projections.rs +0 -0
  103. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/qualify_tables.rs +0 -0
  104. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/set_operation_types.rs +0 -0
  105. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/simplify.rs +0 -0
  106. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/optimizer/subquery.rs +0 -0
  107. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/planner.rs +0 -0
  108. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/query_analysis/column_uses.rs +0 -0
  109. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/query_analysis.rs +0 -0
  110. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/resolver.rs +0 -0
  111. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/schema.rs +0 -0
  112. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/scope.rs +0 -0
  113. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/set_operation.rs +0 -0
  114. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/time.rs +0 -0
  115. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/tokens.rs +0 -0
  116. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/traversal.rs +0 -0
  117. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/trie.rs +0 -0
  118. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/validation/semantics.rs +0 -0
  119. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/validation/tests.rs +0 -0
  120. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/src/validation.rs +0 -0
  121. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/analyze_failures.rs +0 -0
  122. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/clickhouse_regression.rs +0 -0
  123. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/common/known_failures.rs +0 -0
  124. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/common/mod.rs +0 -0
  125. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/common/test_data.rs +0 -0
  126. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/common/test_runner.rs +0 -0
  127. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/create_view_security_comment_regression.rs +0 -0
  128. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_clickhouse_coverage.rs +0 -0
  129. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_clickhouse_parser.rs +0 -0
  130. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_dialect.rs +0 -0
  131. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_dialect_tests.rs +0 -0
  132. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/ddl.json +0 -0
  133. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/dml.json +0 -0
  134. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/functions.json +0 -0
  135. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/identity.json +0 -0
  136. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/operators.json +0 -0
  137. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/select.json +0 -0
  138. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/transpilation.json +0 -0
  139. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/datafusion/types.json +0 -0
  140. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/hana/ddl.json +0 -0
  141. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/hana/dml.json +0 -0
  142. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/hana/functions.json +0 -0
  143. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/hana/identity.json +0 -0
  144. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/hana/select.json +0 -0
  145. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/hana/types.json +0 -0
  146. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/vertica/identity.json +0 -0
  147. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/vertica/transpilation.json +0 -0
  148. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/custom_fixtures/vertica/types.json +0 -0
  149. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/data_type_api.rs +0 -0
  150. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/deep_nesting_regression.rs +0 -0
  151. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/error_handling.rs +0 -0
  152. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/fabric_regression.rs +0 -0
  153. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/fabric_tpch_regression.rs +0 -0
  154. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/identity_roundtrip.rs +0 -0
  155. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/oracle_data_types_regression.rs +0 -0
  156. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/postgres_explain_options.rs +0 -0
  157. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/postgres_regexp_clickhouse.rs +0 -0
  158. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/postgres_sqlite_regression.rs +0 -0
  159. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/query_analysis.rs +0 -0
  160. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/query_analysis_regression.rs +0 -0
  161. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/snowflake_regression_test.rs +0 -0
  162. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_compat.rs +0 -0
  163. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_dialect_identity.rs +0 -0
  164. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_identity.rs +0 -0
  165. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_identity_detailed.rs +0 -0
  166. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_parser.rs +0 -0
  167. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_pretty.rs +0 -0
  168. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_transpilation.rs +0 -0
  169. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/sqlglot_transpile.rs +0 -0
  170. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/tpch_transpile_stack.rs +0 -0
  171. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/transform_regression.rs +0 -0
  172. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql/tests/tsql_regression.rs +0 -0
  173. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-ast-derive/Cargo.toml +0 -0
  174. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-ast-derive/src/lib.rs +0 -0
  175. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/Cargo.toml +0 -0
  176. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/src/clickhouse.rs +0 -0
  177. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/src/duckdb.rs +0 -0
  178. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/src/lib.rs +0 -0
  179. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/tools/clickhouse/extract_functions.py +0 -0
  180. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-function-catalogs/tools/duckdb/extract_functions.py +0 -0
  181. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/Cargo.toml +0 -0
  182. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/README.md +0 -0
  183. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/docs/api.md +0 -0
  184. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/docs/index.md +0 -0
  185. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/mkdocs.yml +0 -0
  186. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/annotate_types.rs +0 -0
  187. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/builders.rs +0 -0
  188. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/dialects.rs +0 -0
  189. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/diff.rs +0 -0
  190. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/errors.rs +0 -0
  191. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/expr.rs +0 -0
  192. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/expr_types.rs +0 -0
  193. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/format.rs +0 -0
  194. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/generate.rs +0 -0
  195. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/helpers.rs +0 -0
  196. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/lib.rs +0 -0
  197. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/lineage.rs +0 -0
  198. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/openlineage.rs +0 -0
  199. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/optimize.rs +0 -0
  200. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/parse.rs +0 -0
  201. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/query_analysis.rs +0 -0
  202. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/tokenize.rs +0 -0
  203. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/transforms.rs +0 -0
  204. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/transpile.rs +0 -0
  205. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/types.rs +0 -0
  206. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/src/validate.rs +0 -0
  207. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/conftest.py +0 -0
  208. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_builders.py +0 -0
  209. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_compat.py +0 -0
  210. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_dialects.py +0 -0
  211. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_diff.py +0 -0
  212. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_expression.py +0 -0
  213. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_format.py +0 -0
  214. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_generate.py +0 -0
  215. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_lineage.py +0 -0
  216. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_optimize.py +0 -0
  217. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_parse.py +0 -0
  218. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_query_analysis.py +0 -0
  219. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_transforms.py +0 -0
  220. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_transpile.py +0 -0
  221. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/tests/test_validate.py +0 -0
  222. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/crates/polyglot-sql-python/uv.lock +0 -0
  223. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/pyproject.toml +0 -0
  224. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/python/polyglot_sql/__init__.py +0 -0
  225. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/python/polyglot_sql/__init__.pyi +0 -0
  226. {polyglot_sql-0.13.0 → polyglot_sql-0.13.1}/python/polyglot_sql/analysis_types.py +0 -0
  227. {polyglot_sql-0.13.0 → polyglot_sql-0.13.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.13.0"
608
+ version = "0.13.1"
609
609
  dependencies = [
610
610
  "criterion",
611
611
  "once_cell",
@@ -623,7 +623,7 @@ dependencies = [
623
623
 
624
624
  [[package]]
625
625
  name = "polyglot-sql-ast-derive"
626
- version = "0.13.0"
626
+ version = "0.13.1"
627
627
  dependencies = [
628
628
  "proc-macro2",
629
629
  "quote",
@@ -632,7 +632,7 @@ dependencies = [
632
632
 
633
633
  [[package]]
634
634
  name = "polyglot-sql-ffi"
635
- version = "0.13.0"
635
+ version = "0.13.1"
636
636
  dependencies = [
637
637
  "cbindgen",
638
638
  "polyglot-sql",
@@ -642,11 +642,11 @@ dependencies = [
642
642
 
643
643
  [[package]]
644
644
  name = "polyglot-sql-function-catalogs"
645
- version = "0.13.0"
645
+ version = "0.13.1"
646
646
 
647
647
  [[package]]
648
648
  name = "polyglot-sql-python"
649
- version = "0.13.0"
649
+ version = "0.13.1"
650
650
  dependencies = [
651
651
  "polyglot-sql",
652
652
  "pyo3",
@@ -657,7 +657,7 @@ dependencies = [
657
657
 
658
658
  [[package]]
659
659
  name = "polyglot-sql-wasm"
660
- version = "0.13.0"
660
+ version = "0.13.1"
661
661
  dependencies = [
662
662
  "console_error_panic_hook",
663
663
  "js-sys",
@@ -6,7 +6,7 @@ exclude = [
6
6
  ]
7
7
 
8
8
  [workspace.package]
9
- version = "0.13.0"
9
+ version = "0.13.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.13.0
3
+ Version: 0.13.1
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -103,14 +103,14 @@ function-catalog-all-dialects = [
103
103
  ]
104
104
 
105
105
  [dependencies]
106
- polyglot-sql-ast-derive = { path = "../polyglot-sql-ast-derive", version = "0.13.0" }
106
+ polyglot-sql-ast-derive = { path = "../polyglot-sql-ast-derive", version = "0.13.1" }
107
107
  serde = { workspace = true }
108
108
  serde_json = { workspace = true }
109
109
  thiserror = { workspace = true }
110
110
  unicode-segmentation = { workspace = true }
111
111
  stacker = { version = "0.1", optional = true }
112
112
  ts-rs = { version = "12.0", features = ["serde-compat"], optional = true }
113
- polyglot-sql-function-catalogs = { path = "../polyglot-sql-function-catalogs", version = "0.13.0", optional = true, default-features = false }
113
+ polyglot-sql-function-catalogs = { path = "../polyglot-sql-function-catalogs", version = "0.13.1", optional = true, default-features = false }
114
114
 
115
115
  [dev-dependencies]
116
116
  pretty_assertions = "1.4"
@@ -25,12 +25,12 @@ By default, `polyglot-sql` enables the full public API. Parser-only consumers ca
25
25
  disable default features and opt into only the dialect parsers they need:
26
26
 
27
27
  ```toml
28
- polyglot-sql = { version = "0.13.0", default-features = false }
28
+ polyglot-sql = { version = "0.13.1", default-features = false }
29
29
  ```
30
30
 
31
31
  ```toml
32
32
  polyglot-sql = {
33
- version = "0.13.0",
33
+ version = "0.13.1",
34
34
  default-features = false,
35
35
  features = ["dialect-clickhouse"],
36
36
  }
@@ -44,14 +44,14 @@ Examples:
44
44
  ```toml
45
45
  # Parse and generate SQL for one dialect.
46
46
  polyglot-sql = {
47
- version = "0.13.0",
47
+ version = "0.13.1",
48
48
  default-features = false,
49
49
  features = ["generate", "dialect-clickhouse"],
50
50
  }
51
51
 
52
52
  # Cross-dialect transpilation.
53
53
  polyglot-sql = {
54
- version = "0.13.0",
54
+ version = "0.13.1",
55
55
  default-features = false,
56
56
  features = ["transpile", "dialect-clickhouse", "dialect-postgresql"],
57
57
  }
@@ -29,7 +29,58 @@ fn print_stats(case: &str, operation: &str, input_bytes: usize, stats: Stats) {
29
29
  );
30
30
  }
31
31
 
32
+ fn compound_row_limits() {
33
+ for branches in [1, 10, 100] {
34
+ let body = vec!["SELECT a FROM t"; branches].join(" UNION ALL ");
35
+ for (name, source, target, tail) in [
36
+ (
37
+ "count",
38
+ DialectType::PostgreSQL,
39
+ DialectType::Oracle,
40
+ "LIMIT 5 OFFSET 2",
41
+ ),
42
+ (
43
+ "percent",
44
+ DialectType::DuckDB,
45
+ DialectType::Oracle,
46
+ "LIMIT 10 PERCENT",
47
+ ),
48
+ (
49
+ "fetch",
50
+ DialectType::Oracle,
51
+ DialectType::DuckDB,
52
+ "OFFSET 2 ROWS FETCH NEXT 5 ROWS ONLY",
53
+ ),
54
+ ] {
55
+ let sql = format!("{body} ORDER BY a {tail}");
56
+ let dialect = Dialect::get(source);
57
+ let writer = Dialect::get(target);
58
+ let ast = dialect.parse(&sql).unwrap();
59
+ let case = format!("compound/{name}/{branches}");
60
+ print_stats(
61
+ &case,
62
+ "parse",
63
+ sql.len(),
64
+ measure(|| dialect.parse(&sql).unwrap()),
65
+ );
66
+ print_stats(
67
+ &case,
68
+ "generate",
69
+ sql.len(),
70
+ measure(|| writer.generate(&ast[0]).unwrap()),
71
+ );
72
+ print_stats(
73
+ &case,
74
+ "transpile",
75
+ sql.len(),
76
+ measure(|| dialect.transpile(&sql, target).unwrap()),
77
+ );
78
+ }
79
+ }
80
+ }
81
+
32
82
  fn main() {
83
+ compound_row_limits();
33
84
  let dialect = Dialect::get(DialectType::PostgreSQL);
34
85
  let large = large_token_list();
35
86
  let columns = many_columns();
@@ -167,10 +167,54 @@ fn bench_roundtrip(c: &mut Criterion) {
167
167
  group.finish();
168
168
  }
169
169
 
170
+ fn bench_compound_row_limits(c: &mut Criterion) {
171
+ use polyglot_sql::dialects::Dialect;
172
+ use std::time::Duration;
173
+
174
+ let mut group = c.benchmark_group("compound_row_limits");
175
+ group.sample_size(30);
176
+ group.warm_up_time(Duration::from_millis(500));
177
+ group.measurement_time(Duration::from_secs(2));
178
+ for branches in [1, 10, 100] {
179
+ let body = vec!["SELECT a FROM t"; branches].join(" UNION ALL ");
180
+ for (name, source, target, tail) in [
181
+ (
182
+ "count",
183
+ DialectType::PostgreSQL,
184
+ DialectType::Oracle,
185
+ "LIMIT 5 OFFSET 2",
186
+ ),
187
+ (
188
+ "percent",
189
+ DialectType::DuckDB,
190
+ DialectType::Oracle,
191
+ "LIMIT 10 PERCENT",
192
+ ),
193
+ (
194
+ "fetch",
195
+ DialectType::Oracle,
196
+ DialectType::DuckDB,
197
+ "OFFSET 2 ROWS FETCH NEXT 5 ROWS ONLY",
198
+ ),
199
+ ] {
200
+ let sql = format!("{body} ORDER BY a {tail}");
201
+ let dialect = Dialect::get(source);
202
+ group.bench_function(format!("parse/{name}/{branches}"), |b| {
203
+ b.iter(|| dialect.parse(black_box(&sql)).unwrap())
204
+ });
205
+ group.bench_function(format!("transpile/{name}/{branches}"), |b| {
206
+ b.iter(|| transpile(black_box(&sql), source, target).unwrap())
207
+ });
208
+ }
209
+ }
210
+ group.finish();
211
+ }
212
+
170
213
  criterion_group!(
171
214
  benches,
172
215
  bench_transpile_by_query_size,
173
216
  bench_transpile_dialect_pairs,
174
- bench_roundtrip
217
+ bench_roundtrip,
218
+ bench_compound_row_limits
175
219
  );
176
220
  criterion_main!(benches);
@@ -119,30 +119,8 @@ pub(super) fn normalize_root(expression: Expression, context: &NormalizationCont
119
119
  expr
120
120
  };
121
121
 
122
- // Oracle: LIMIT -> FETCH FIRST, OFFSET -> OFFSET ROWS
123
- let expr = if matches!(target, DialectType::Oracle) {
124
- if let Expression::Select(mut select) = expr {
125
- if let Some(limit) = select.limit.take() {
126
- // Convert LIMIT to FETCH FIRST n ROWS ONLY
127
- select.fetch = Some(crate::expressions::Fetch {
128
- direction: "FIRST".to_string(),
129
- count: Some(limit.this),
130
- percent: false,
131
- rows: true,
132
- with_ties: false,
133
- });
134
- }
135
- // Add ROWS to OFFSET if present
136
- if let Some(ref mut offset) = select.offset {
137
- offset.rows = Some(true);
138
- }
139
- Expression::Select(select)
140
- } else {
141
- expr
142
- }
143
- } else {
144
- expr
145
- };
122
+ // Oracle LIMIT/OFFSET -> OFFSET n ROWS FETCH FIRST m ROWS ONLY is rendered by the
123
+ // generator (`LimitFetchStyle::FetchFirst`), so it also applies to nested queries.
146
124
 
147
125
  // Handle CreateTable WITH properties transformation before recursive transforms
148
126
  let expr = if let Expression::CreateTable(mut ct) = expr {
@@ -56,6 +56,8 @@ impl DialectImpl for OracleDialect {
56
56
  tz_to_with_time_zone: true,
57
57
  // Oracle UNPIVOT aliases retain literal aliases as literals.
58
58
  unpivot_aliases_are_identifiers: false,
59
+ // Oracle has no LIMIT: use OFFSET n ROWS FETCH FIRST m ROWS ONLY
60
+ limit_fetch_style: crate::generator::LimitFetchStyle::FetchFirst,
59
61
  ..Default::default()
60
62
  }
61
63
  }
@@ -62,8 +62,8 @@ impl DialectImpl for TSQLDialect {
62
62
  identifier_quote_style: IdentifierQuoteStyle::BRACKET,
63
63
  dialect: Some(DialectType::TSQL),
64
64
  // T-SQL specific settings from Python sqlglot
65
- // SQL Server uses TOP/FETCH instead of LIMIT
66
- limit_fetch_style: crate::generator::LimitFetchStyle::FetchFirst,
65
+ // SQL Server uses TOP (or OFFSET/FETCH, handled by the generator) instead of LIMIT
66
+ limit_fetch_style: crate::generator::LimitFetchStyle::Top,
67
67
  // NULLS FIRST/LAST not supported in SQL Server
68
68
  null_ordering_supported: false,
69
69
  // SQL Server does not support SQL:2003 aggregate FILTER clauses.
@@ -3935,7 +3935,8 @@ pub struct Union {
3935
3935
  pub with: Option<With>,
3936
3936
  /// ORDER BY applied to entire UNION result
3937
3937
  pub order_by: Option<OrderBy>,
3938
- /// LIMIT applied to entire UNION result
3938
+ /// Row limit applied to the entire UNION result: a legacy count expression,
3939
+ /// or a complete `Expression::Limit` / `Expression::Fetch` with clause options.
3939
3940
  pub limit: Option<Box<Expression>>,
3940
3941
  /// OFFSET applied to entire UNION result
3941
3942
  pub offset: Option<Box<Expression>>,
@@ -4004,7 +4005,8 @@ pub struct Intersect {
4004
4005
  pub with: Option<With>,
4005
4006
  /// ORDER BY applied to entire INTERSECT result
4006
4007
  pub order_by: Option<OrderBy>,
4007
- /// LIMIT applied to entire INTERSECT result
4008
+ /// Row limit applied to the entire INTERSECT result: a legacy count expression,
4009
+ /// or a complete `Expression::Limit` / `Expression::Fetch` with clause options.
4008
4010
  pub limit: Option<Box<Expression>>,
4009
4011
  /// OFFSET applied to entire INTERSECT result
4010
4012
  pub offset: Option<Box<Expression>>,
@@ -4071,7 +4073,8 @@ pub struct Except {
4071
4073
  pub with: Option<With>,
4072
4074
  /// ORDER BY applied to entire EXCEPT result
4073
4075
  pub order_by: Option<OrderBy>,
4074
- /// LIMIT applied to entire EXCEPT result
4076
+ /// Row limit applied to the entire EXCEPT result: a legacy count expression,
4077
+ /// or a complete `Expression::Limit` / `Expression::Fetch` with clause options.
4075
4078
  pub limit: Option<Box<Expression>>,
4076
4079
  /// OFFSET applied to entire EXCEPT result
4077
4080
  pub offset: Option<Box<Expression>>,
@@ -5807,6 +5810,35 @@ pub struct Limit {
5807
5810
  pub comments: Vec<String>,
5808
5811
  }
5809
5812
 
5813
+ impl Limit {
5814
+ /// Preserve the legacy count-only set-operation AST when no metadata is needed.
5815
+ pub(crate) fn into_set_limit(self) -> Box<Expression> {
5816
+ if self.percent || !self.comments.is_empty() {
5817
+ Box::new(Expression::Limit(Box::new(self)))
5818
+ } else {
5819
+ Box::new(self.this)
5820
+ }
5821
+ }
5822
+ }
5823
+
5824
+ /// Move a compound query's row limit onto a SELECT without losing clause options.
5825
+ /// Bare expressions remain supported for existing builders and serialized ASTs.
5826
+ pub(crate) fn split_set_limit(limit: Option<Box<Expression>>) -> (Option<Limit>, Option<Fetch>) {
5827
+ match limit.map(|limit| *limit) {
5828
+ Some(Expression::Limit(limit)) => (Some(*limit), None),
5829
+ Some(Expression::Fetch(fetch)) => (None, Some(*fetch)),
5830
+ Some(this) => (
5831
+ Some(Limit {
5832
+ this,
5833
+ percent: false,
5834
+ comments: Vec::new(),
5835
+ }),
5836
+ None,
5837
+ ),
5838
+ None => (None, None),
5839
+ }
5840
+ }
5841
+
5810
5842
  /// OFFSET clause
5811
5843
  #[derive(polyglot_sql_ast_derive::AstNode, Debug, Clone, PartialEq, Serialize, Deserialize)]
5812
5844
  #[cfg_attr(feature = "bindings", derive(TS))]