@uwdata/mosaic-sql 0.19.0 → 0.20.1

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 (210) hide show
  1. package/dist/src/ast/aggregate.d.ts +0 -4
  2. package/dist/src/ast/aggregate.d.ts.map +1 -1
  3. package/dist/src/ast/aggregate.js +0 -15
  4. package/dist/src/ast/aggregate.js.map +1 -1
  5. package/dist/src/ast/between-op.d.ts +0 -8
  6. package/dist/src/ast/between-op.d.ts.map +1 -1
  7. package/dist/src/ast/between-op.js +0 -12
  8. package/dist/src/ast/between-op.js.map +1 -1
  9. package/dist/src/ast/binary-op.d.ts +0 -4
  10. package/dist/src/ast/binary-op.d.ts.map +1 -1
  11. package/dist/src/ast/binary-op.js +0 -6
  12. package/dist/src/ast/binary-op.js.map +1 -1
  13. package/dist/src/ast/case.d.ts +0 -8
  14. package/dist/src/ast/case.d.ts.map +1 -1
  15. package/dist/src/ast/case.js +0 -16
  16. package/dist/src/ast/case.js.map +1 -1
  17. package/dist/src/ast/cast.d.ts +0 -4
  18. package/dist/src/ast/cast.d.ts.map +1 -1
  19. package/dist/src/ast/cast.js +0 -7
  20. package/dist/src/ast/cast.js.map +1 -1
  21. package/dist/src/ast/collate.d.ts +0 -4
  22. package/dist/src/ast/collate.d.ts.map +1 -1
  23. package/dist/src/ast/collate.js +0 -6
  24. package/dist/src/ast/collate.js.map +1 -1
  25. package/dist/src/ast/column-ref.d.ts +0 -4
  26. package/dist/src/ast/column-ref.d.ts.map +1 -1
  27. package/dist/src/ast/column-ref.js +0 -10
  28. package/dist/src/ast/column-ref.js.map +1 -1
  29. package/dist/src/ast/fragment.d.ts +0 -4
  30. package/dist/src/ast/fragment.d.ts.map +1 -1
  31. package/dist/src/ast/fragment.js +0 -6
  32. package/dist/src/ast/fragment.js.map +1 -1
  33. package/dist/src/ast/from.d.ts +10 -3
  34. package/dist/src/ast/from.d.ts.map +1 -1
  35. package/dist/src/ast/from.js +11 -12
  36. package/dist/src/ast/from.js.map +1 -1
  37. package/dist/src/ast/function.d.ts +0 -4
  38. package/dist/src/ast/function.d.ts.map +1 -1
  39. package/dist/src/ast/function.js +0 -7
  40. package/dist/src/ast/function.js.map +1 -1
  41. package/dist/src/ast/in-op.d.ts +0 -4
  42. package/dist/src/ast/in-op.d.ts.map +1 -1
  43. package/dist/src/ast/in-op.js +0 -6
  44. package/dist/src/ast/in-op.js.map +1 -1
  45. package/dist/src/ast/interval.d.ts +0 -4
  46. package/dist/src/ast/interval.d.ts.map +1 -1
  47. package/dist/src/ast/interval.js +0 -6
  48. package/dist/src/ast/interval.js.map +1 -1
  49. package/dist/src/ast/join.d.ts +45 -0
  50. package/dist/src/ast/join.d.ts.map +1 -0
  51. package/dist/src/ast/join.js +47 -0
  52. package/dist/src/ast/join.js.map +1 -0
  53. package/dist/src/ast/list.d.ts +0 -4
  54. package/dist/src/ast/list.d.ts.map +1 -1
  55. package/dist/src/ast/list.js +0 -6
  56. package/dist/src/ast/list.js.map +1 -1
  57. package/dist/src/ast/literal.d.ts +0 -4
  58. package/dist/src/ast/literal.d.ts.map +1 -1
  59. package/dist/src/ast/literal.js +0 -6
  60. package/dist/src/ast/literal.js.map +1 -1
  61. package/dist/src/ast/logical-op.d.ts +0 -4
  62. package/dist/src/ast/logical-op.d.ts.map +1 -1
  63. package/dist/src/ast/logical-op.js +0 -9
  64. package/dist/src/ast/logical-op.js.map +1 -1
  65. package/dist/src/ast/node.d.ts +13 -0
  66. package/dist/src/ast/node.d.ts.map +1 -1
  67. package/dist/src/ast/node.js +25 -3
  68. package/dist/src/ast/node.js.map +1 -1
  69. package/dist/src/ast/order-by.d.ts +0 -4
  70. package/dist/src/ast/order-by.d.ts.map +1 -1
  71. package/dist/src/ast/order-by.js +0 -13
  72. package/dist/src/ast/order-by.js.map +1 -1
  73. package/dist/src/ast/param.d.ts +0 -4
  74. package/dist/src/ast/param.d.ts.map +1 -1
  75. package/dist/src/ast/param.js +0 -7
  76. package/dist/src/ast/param.js.map +1 -1
  77. package/dist/src/ast/query.d.ts +2 -14
  78. package/dist/src/ast/query.d.ts.map +1 -1
  79. package/dist/src/ast/query.js +14 -91
  80. package/dist/src/ast/query.js.map +1 -1
  81. package/dist/src/ast/sample.d.ts +0 -4
  82. package/dist/src/ast/sample.d.ts.map +1 -1
  83. package/dist/src/ast/sample.js +0 -9
  84. package/dist/src/ast/sample.js.map +1 -1
  85. package/dist/src/ast/select.d.ts +0 -4
  86. package/dist/src/ast/select.d.ts.map +1 -1
  87. package/dist/src/ast/select.js +0 -16
  88. package/dist/src/ast/select.js.map +1 -1
  89. package/dist/src/ast/subquery.d.ts +0 -4
  90. package/dist/src/ast/subquery.d.ts.map +1 -1
  91. package/dist/src/ast/subquery.js +0 -6
  92. package/dist/src/ast/subquery.js.map +1 -1
  93. package/dist/src/ast/table-ref.d.ts +0 -4
  94. package/dist/src/ast/table-ref.d.ts.map +1 -1
  95. package/dist/src/ast/table-ref.js +0 -7
  96. package/dist/src/ast/table-ref.js.map +1 -1
  97. package/dist/src/ast/unary-op.d.ts +0 -8
  98. package/dist/src/ast/unary-op.d.ts.map +1 -1
  99. package/dist/src/ast/unary-op.js +0 -12
  100. package/dist/src/ast/unary-op.js.map +1 -1
  101. package/dist/src/ast/unnest.d.ts +0 -4
  102. package/dist/src/ast/unnest.d.ts.map +1 -1
  103. package/dist/src/ast/unnest.js +0 -8
  104. package/dist/src/ast/unnest.js.map +1 -1
  105. package/dist/src/ast/verbatim.d.ts +0 -4
  106. package/dist/src/ast/verbatim.d.ts.map +1 -1
  107. package/dist/src/ast/verbatim.js +0 -6
  108. package/dist/src/ast/verbatim.js.map +1 -1
  109. package/dist/src/ast/window-frame.d.ts +0 -8
  110. package/dist/src/ast/window-frame.d.ts.map +1 -1
  111. package/dist/src/ast/window-frame.js +1 -29
  112. package/dist/src/ast/window-frame.js.map +1 -1
  113. package/dist/src/ast/window.d.ts +0 -16
  114. package/dist/src/ast/window.d.ts.map +1 -1
  115. package/dist/src/ast/window.js +0 -39
  116. package/dist/src/ast/window.js.map +1 -1
  117. package/dist/src/ast/with.d.ts +0 -4
  118. package/dist/src/ast/with.d.ts.map +1 -1
  119. package/dist/src/ast/with.js +0 -10
  120. package/dist/src/ast/with.js.map +1 -1
  121. package/dist/src/constants.d.ts +2 -0
  122. package/dist/src/constants.d.ts.map +1 -1
  123. package/dist/src/constants.js +2 -0
  124. package/dist/src/constants.js.map +1 -1
  125. package/dist/src/functions/from.d.ts +11 -0
  126. package/dist/src/functions/from.d.ts.map +1 -0
  127. package/dist/src/functions/from.js +12 -0
  128. package/dist/src/functions/from.js.map +1 -0
  129. package/dist/src/functions/join.d.ts +49 -0
  130. package/dist/src/functions/join.d.ts.map +1 -0
  131. package/dist/src/functions/join.js +50 -0
  132. package/dist/src/functions/join.js.map +1 -0
  133. package/dist/src/index.d.ts +7 -1
  134. package/dist/src/index.d.ts.map +1 -1
  135. package/dist/src/index.js +8 -1
  136. package/dist/src/index.js.map +1 -1
  137. package/dist/src/init.d.ts +2 -0
  138. package/dist/src/init.d.ts.map +1 -0
  139. package/dist/src/init.js +5 -0
  140. package/dist/src/init.js.map +1 -0
  141. package/dist/src/transforms/bin-histogram.d.ts.map +1 -1
  142. package/dist/src/transforms/bin-histogram.js +7 -2
  143. package/dist/src/transforms/bin-histogram.js.map +1 -1
  144. package/dist/src/transforms/filter-query.d.ts.map +1 -1
  145. package/dist/src/transforms/filter-query.js +2 -0
  146. package/dist/src/transforms/filter-query.js.map +1 -1
  147. package/dist/src/transforms/util/time-interval.d.ts.map +1 -1
  148. package/dist/src/transforms/util/time-interval.js +3 -0
  149. package/dist/src/transforms/util/time-interval.js.map +1 -1
  150. package/dist/src/visit/codegen/duckdb.d.ts +49 -0
  151. package/dist/src/visit/codegen/duckdb.d.ts.map +1 -0
  152. package/dist/src/visit/codegen/duckdb.js +332 -0
  153. package/dist/src/visit/codegen/duckdb.js.map +1 -0
  154. package/dist/src/visit/codegen/sql.d.ts +60 -0
  155. package/dist/src/visit/codegen/sql.d.ts.map +1 -0
  156. package/dist/src/visit/codegen/sql.js +85 -0
  157. package/dist/src/visit/codegen/sql.js.map +1 -0
  158. package/dist/src/visit/duckdb-visitor.d.ts +50 -0
  159. package/dist/src/visit/duckdb-visitor.d.ts.map +1 -0
  160. package/dist/src/visit/duckdb-visitor.js +350 -0
  161. package/dist/src/visit/duckdb-visitor.js.map +1 -0
  162. package/dist/src/visit/recurse.d.ts.map +1 -1
  163. package/dist/src/visit/recurse.js +2 -1
  164. package/dist/src/visit/recurse.js.map +1 -1
  165. package/dist/src/visit/to-string-visitor.d.ts +60 -0
  166. package/dist/src/visit/to-string-visitor.d.ts.map +1 -0
  167. package/dist/src/visit/to-string-visitor.js +80 -0
  168. package/dist/src/visit/to-string-visitor.js.map +1 -0
  169. package/package.json +2 -2
  170. package/src/ast/aggregate.ts +0 -16
  171. package/src/ast/between-op.ts +0 -14
  172. package/src/ast/binary-op.ts +0 -7
  173. package/src/ast/case.ts +0 -18
  174. package/src/ast/cast.ts +0 -8
  175. package/src/ast/collate.ts +0 -7
  176. package/src/ast/column-ref.ts +0 -11
  177. package/src/ast/fragment.ts +0 -7
  178. package/src/ast/from.ts +12 -12
  179. package/src/ast/function.ts +0 -8
  180. package/src/ast/in-op.ts +0 -7
  181. package/src/ast/interval.ts +0 -7
  182. package/src/ast/join.ts +66 -0
  183. package/src/ast/list.ts +0 -7
  184. package/src/ast/literal.ts +0 -7
  185. package/src/ast/logical-op.ts +0 -10
  186. package/src/ast/node.ts +30 -3
  187. package/src/ast/order-by.ts +0 -14
  188. package/src/ast/param.ts +0 -8
  189. package/src/ast/query.ts +14 -102
  190. package/src/ast/sample.ts +0 -10
  191. package/src/ast/select.ts +0 -18
  192. package/src/ast/subquery.ts +0 -7
  193. package/src/ast/table-ref.ts +0 -8
  194. package/src/ast/unary-op.ts +0 -14
  195. package/src/ast/unnest.ts +0 -9
  196. package/src/ast/verbatim.ts +0 -7
  197. package/src/ast/window-frame.ts +1 -32
  198. package/src/ast/window.ts +0 -43
  199. package/src/ast/with.ts +0 -11
  200. package/src/constants.ts +2 -0
  201. package/src/functions/from.ts +18 -0
  202. package/src/functions/join.ts +101 -0
  203. package/src/index.ts +9 -1
  204. package/src/init.ts +5 -0
  205. package/src/transforms/bin-histogram.ts +8 -2
  206. package/src/transforms/filter-query.ts +2 -0
  207. package/src/transforms/util/time-interval.ts +4 -0
  208. package/src/visit/codegen/duckdb.ts +444 -0
  209. package/src/visit/codegen/sql.ts +213 -0
  210. package/src/visit/recurse.ts +2 -0
@@ -0,0 +1,45 @@
1
+ import type { SampleClauseNode } from './sample.js';
2
+ import { ColumnRefNode } from './column-ref.js';
3
+ import { FromNode } from './from.js';
4
+ import { ExprNode } from './node.js';
5
+ import { TableRefNode } from './table-ref.js';
6
+ /** The join variant. Determines what kind of join is performed. */
7
+ export type JoinVariant = 'REGULAR' | 'CROSS' | 'NATURAL' | 'POSITIONAL' | 'ASOF';
8
+ /** The join type. Determines which values are included in the join output. */
9
+ export type JoinType = 'INNER' | 'LEFT' | 'RIGHT' | 'FULL' | 'SEMI' | 'ANTI';
10
+ export declare class JoinNode extends FromNode {
11
+ /** The left table to join. */
12
+ readonly left: FromNode | TableRefNode;
13
+ /** The right table to join. */
14
+ readonly right: FromNode | TableRefNode;
15
+ /** The join variant (REGULAR, CROSS, NATURAL, POSITIONAL, ASOF). */
16
+ readonly joinVariant: JoinVariant;
17
+ /** The join type (INNER, LEFT, RIGHT, FULL, SEMI, ANTI). */
18
+ readonly joinType: JoinType;
19
+ /**
20
+ * The join condition as a boolean expression.
21
+ * If specified, *using* should be `undefined`.
22
+ */
23
+ readonly condition?: ExprNode;
24
+ /**
25
+ * The join condition as shared columns to match on.
26
+ * If specified, *condition* should be `undefined`.
27
+ */
28
+ readonly using?: ColumnRefNode[];
29
+ /** A table sample to apply to join output. */
30
+ readonly sample?: SampleClauseNode;
31
+ /**
32
+ * Instantiate a join node.
33
+ * @param left The left table to join.
34
+ * @param right The right table to join.
35
+ * @param variant The join variant (REGULAR, CROSS, NATURAL, POSITIONAL, ASOF).
36
+ * @param type The join type (INNER, LEFT, RIGHT, FULL, SEMI, ANTI).
37
+ * @param condition The join condition as a boolean expression.
38
+ * If specified, *using* should be `undefined`.
39
+ * @param using The join condition as shared columns to match on.
40
+ * If specified, *condition* should be `undefined`.
41
+ * @param sample A table sample to apply to join output.
42
+ */
43
+ constructor(left: FromNode | TableRefNode, right: FromNode | TableRefNode, variant?: JoinVariant, type?: JoinType, condition?: ExprNode, using?: ColumnRefNode[], sample?: SampleClauseNode);
44
+ }
45
+ //# sourceMappingURL=join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/ast/join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,CAAC;AAElF,8EAA8E;AAC9E,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7E,qBAAa,QAAS,SAAQ,QAAQ;IACpC,8BAA8B;IAC9B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IACvC,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAAC;IACxC,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAEnC;;;;;;;;;;;OAWG;gBAED,IAAI,EAAE,QAAQ,GAAG,YAAY,EAC7B,KAAK,EAAE,QAAQ,GAAG,YAAY,EAC9B,OAAO,GAAE,WAAuB,EAChC,IAAI,GAAE,QAAkB,EACxB,SAAS,CAAC,EAAE,QAAQ,EACpB,KAAK,CAAC,EAAE,aAAa,EAAE,EACvB,MAAM,CAAC,EAAE,gBAAgB;CAW5B"}
@@ -0,0 +1,47 @@
1
+ import { JOIN_CLAUSE } from '../constants.js';
2
+ import { FromNode } from './from.js';
3
+ export class JoinNode extends FromNode {
4
+ /** The left table to join. */
5
+ left;
6
+ /** The right table to join. */
7
+ right;
8
+ /** The join variant (REGULAR, CROSS, NATURAL, POSITIONAL, ASOF). */
9
+ joinVariant;
10
+ /** The join type (INNER, LEFT, RIGHT, FULL, SEMI, ANTI). */
11
+ joinType;
12
+ /**
13
+ * The join condition as a boolean expression.
14
+ * If specified, *using* should be `undefined`.
15
+ */
16
+ condition;
17
+ /**
18
+ * The join condition as shared columns to match on.
19
+ * If specified, *condition* should be `undefined`.
20
+ */
21
+ using;
22
+ /** A table sample to apply to join output. */
23
+ sample;
24
+ /**
25
+ * Instantiate a join node.
26
+ * @param left The left table to join.
27
+ * @param right The right table to join.
28
+ * @param variant The join variant (REGULAR, CROSS, NATURAL, POSITIONAL, ASOF).
29
+ * @param type The join type (INNER, LEFT, RIGHT, FULL, SEMI, ANTI).
30
+ * @param condition The join condition as a boolean expression.
31
+ * If specified, *using* should be `undefined`.
32
+ * @param using The join condition as shared columns to match on.
33
+ * If specified, *condition* should be `undefined`.
34
+ * @param sample A table sample to apply to join output.
35
+ */
36
+ constructor(left, right, variant = 'NATURAL', type = 'INNER', condition, using, sample) {
37
+ super(JOIN_CLAUSE);
38
+ this.left = left;
39
+ this.right = right;
40
+ this.joinVariant = variant;
41
+ this.joinType = type;
42
+ this.condition = condition;
43
+ this.using = using;
44
+ this.sample = sample;
45
+ }
46
+ }
47
+ //# sourceMappingURL=join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/ast/join.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAUrC,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,8BAA8B;IACrB,IAAI,CAA0B;IACvC,+BAA+B;IACtB,KAAK,CAA0B;IACxC,oEAAoE;IAC3D,WAAW,CAAc;IAClC,4DAA4D;IACnD,QAAQ,CAAW;IAC5B;;;OAGG;IACM,SAAS,CAAY;IAC9B;;;OAGG;IACM,KAAK,CAAmB;IACjC,8CAA8C;IACrC,MAAM,CAAoB;IAEnC;;;;;;;;;;;OAWG;IACH,YACE,IAA6B,EAC7B,KAA8B,EAC9B,UAAuB,SAAS,EAChC,OAAiB,OAAO,EACxB,SAAoB,EACpB,KAAuB,EACvB,MAAyB;QAEzB,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -7,9 +7,5 @@ export declare class ListNode extends ExprNode {
7
7
  * @param values
8
8
  */
9
9
  constructor(values: ExprNode[]);
10
- /**
11
- * Generate a SQL query string for this node.
12
- */
13
- toString(): string;
14
10
  }
15
11
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/ast/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,QAAS,SAAQ,QAAQ;IACpC,2BAA2B;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAE5B;;;OAGG;gBACS,MAAM,EAAE,QAAQ,EAAE;IAK9B;;OAEG;IACH,QAAQ;CAGT"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/ast/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,QAAS,SAAQ,QAAQ;IACpC,2BAA2B;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAE5B;;;OAGG;gBACS,MAAM,EAAE,QAAQ,EAAE;CAI/B"}
@@ -11,11 +11,5 @@ export class ListNode extends ExprNode {
11
11
  super(LIST);
12
12
  this.values = values;
13
13
  }
14
- /**
15
- * Generate a SQL query string for this node.
16
- */
17
- toString() {
18
- return `[${this.values.join(', ')}]`;
19
- }
20
14
  }
21
15
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/ast/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,2BAA2B;IAClB,MAAM,CAAa;IAE5B;;;OAGG;IACH,YAAY,MAAkB;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/ast/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,2BAA2B;IAClB,MAAM,CAAa;IAE5B;;;OAGG;IACH,YAAY,MAAkB;QAC5B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -7,10 +7,6 @@ export declare class LiteralNode extends ExprNode {
7
7
  * @param value The literal value.
8
8
  */
9
9
  constructor(value: unknown);
10
- /**
11
- * Generate a SQL query string for this node.
12
- */
13
- toString(): string;
14
10
  }
15
11
  export declare function literalToSQL(value: unknown): string;
16
12
  //# sourceMappingURL=literal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../../src/ast/literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,WAAY,SAAQ,QAAQ;IACvC,yBAAyB;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB;;;OAGG;gBACS,KAAK,EAAE,OAAO;IAK1B;;OAEG;IACH,QAAQ;CAGT;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,UA2B1C"}
1
+ {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../../src/ast/literal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,WAAY,SAAQ,QAAQ;IACvC,yBAAyB;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB;;;OAGG;gBACS,KAAK,EAAE,OAAO;CAI3B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,UA2B1C"}
@@ -11,12 +11,6 @@ export class LiteralNode extends ExprNode {
11
11
  super(LITERAL);
12
12
  this.value = value;
13
13
  }
14
- /**
15
- * Generate a SQL query string for this node.
16
- */
17
- toString() {
18
- return literalToSQL(this.value);
19
- }
20
14
  }
21
15
  export function literalToSQL(value) {
22
16
  switch (typeof value) {
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../src/ast/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,yBAAyB;IAChB,KAAK,CAAU;IAExB;;;OAGG;IACH,YAAY,KAAc;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;QAC5C,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC;YACE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC;iBAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;gBAClB,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACpC,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;oBACvC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,YAAY;YACrC,CAAC;iBAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,OAAO,GAAG,KAAK,EAAE,CAAC;YACpB,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../src/ast/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,yBAAyB;IAChB,KAAK,CAAU;IAExB;;;OAGG;IACH,YAAY,KAAc;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,QAAQ,OAAO,KAAK,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;QAC5C,KAAK,SAAS;YACZ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClC;YACE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC;iBAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBACjC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC;gBAClB,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAAE,OAAO,MAAM,CAAC;gBACpC,MAAM,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC7B,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;oBACvC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,YAAY;YACrC,CAAC;iBAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,oCAAoC;gBACpC,OAAO,GAAG,KAAK,EAAE,CAAC;YACpB,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -10,10 +10,6 @@ export declare class LogicalOpNode<T extends ExprNode> extends ExprNode {
10
10
  * @param clauses The input clause expressions.
11
11
  */
12
12
  constructor(op: string, clauses: T[]);
13
- /**
14
- * Generate a SQL query string for this node.
15
- */
16
- toString(): string;
17
13
  }
18
14
  export declare class AndNode<T extends ExprNode> extends LogicalOpNode<T> {
19
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"logical-op.d.ts","sourceRoot":"","sources":["../../../src/ast/logical-op.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IAC7D,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAEtB;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;IAMpC;;OAEG;IACH,QAAQ;CAMT;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC/D;;;OAGG;gBACS,OAAO,EAAE,CAAC,EAAE;CAGzB;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC9D;;;OAGG;gBACS,OAAO,EAAE,CAAC,EAAE;CAGzB"}
1
+ {"version":3,"file":"logical-op.d.ts","sourceRoot":"","sources":["../../../src/ast/logical-op.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,aAAa,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IAC7D,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IAEtB;;;;OAIG;gBACS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;CAKrC;AAED,qBAAa,OAAO,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC/D;;;OAGG;gBACS,OAAO,EAAE,CAAC,EAAE;CAGzB;AAED,qBAAa,MAAM,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IAC9D;;;OAGG;gBACS,OAAO,EAAE,CAAC,EAAE;CAGzB"}
@@ -15,15 +15,6 @@ export class LogicalOpNode extends ExprNode {
15
15
  this.op = op;
16
16
  this.clauses = clauses;
17
17
  }
18
- /**
19
- * Generate a SQL query string for this node.
20
- */
21
- toString() {
22
- const c = this.clauses;
23
- return c.length === 0 ? ''
24
- : c.length === 1 ? `${c[0]}`
25
- : `(${c.join(` ${this.op} `)})`;
26
- }
27
18
  }
28
19
  export class AndNode extends LogicalOpNode {
29
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"logical-op.js","sourceRoot":"","sources":["../../../src/ast/logical-op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,aAAkC,SAAQ,QAAQ;IAC7D,2BAA2B;IAClB,EAAE,CAAS;IACpB,8BAA8B;IACrB,OAAO,CAAM;IAEtB;;;;OAIG;IACH,YAAY,EAAU,EAAE,OAAY;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACxB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,OAA4B,SAAQ,aAAgB;IAC/D;;;OAGG;IACH,YAAY,OAAY;QACtB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,OAAO,MAA2B,SAAQ,aAAgB;IAC9D;;;OAGG;IACH,YAAY,OAAY;QACtB,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"logical-op.js","sourceRoot":"","sources":["../../../src/ast/logical-op.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,aAAkC,SAAQ,QAAQ;IAC7D,2BAA2B;IAClB,EAAE,CAAS;IACpB,8BAA8B;IACrB,OAAO,CAAM;IAEtB;;;;OAIG;IACH,YAAY,EAAU,EAAE,OAAY;QAClC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,OAA4B,SAAQ,aAAgB;IAC/D;;;OAGG;IACH,YAAY,OAAY;QACtB,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC;CACF;AAED,MAAM,OAAO,MAA2B,SAAQ,aAAgB;IAC9D;;;OAGG;IACH,YAAY,OAAY;QACtB,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -1,8 +1,14 @@
1
+ import type { SQLCodeGenerator } from '../visit/codegen/sql.js';
1
2
  /**
2
3
  * Check if a value is a SQL AST node.
3
4
  * @param value The value to check.
4
5
  */
5
6
  export declare function isNode(value: unknown): value is SQLNode;
7
+ /**
8
+ * Set the default visitor for toString operations.
9
+ * This is used when no visitor is explicitly provided.
10
+ */
11
+ export declare function setDefaultVisitor(visitor: SQLCodeGenerator): void;
6
12
  export declare class SQLNode {
7
13
  /** The SQL AST node type. */
8
14
  readonly type: string;
@@ -16,6 +22,13 @@ export declare class SQLNode {
16
22
  * @returns The shallow clone node.
17
23
  */
18
24
  clone(): this;
25
+ /**
26
+ * Generate a SQL query string for this node using a specific dialect visitor.
27
+ * @param visitor Optional SQL visitor to use for string generation.
28
+ * If not provided, uses the default visitor.
29
+ * @returns The SQL string representation.
30
+ */
31
+ toString(visitor?: SQLCodeGenerator | undefined): string;
19
32
  }
20
33
  /**
21
34
  * AST node corresponding to an individual expression.
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAEvD;AAED,qBAAa,OAAO;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAIxB;;;OAGG;IACH,KAAK,IAAI,IAAI;CAQd;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;CACpC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAEvD;AAID;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,QAE1D;AAED,qBAAa,OAAO;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAIxB;;;OAGG;IACH,KAAK,IAAI,IAAI;IAWb;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,GAAE,gBAAgB,GAAG,SAA2B,GAAG,MAAM;CAM1E;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;CACpC"}
@@ -5,6 +5,14 @@
5
5
  export function isNode(value) {
6
6
  return value instanceof SQLNode;
7
7
  }
8
+ let _defaultVisitor;
9
+ /**
10
+ * Set the default visitor for toString operations.
11
+ * This is used when no visitor is explicitly provided.
12
+ */
13
+ export function setDefaultVisitor(visitor) {
14
+ _defaultVisitor = visitor;
15
+ }
8
16
  export class SQLNode {
9
17
  /** The SQL AST node type. */
10
18
  type;
@@ -20,13 +28,27 @@ export class SQLNode {
20
28
  * @returns The shallow clone node.
21
29
  */
22
30
  clone() {
23
- // @ts-expect-error use constructor
24
- const clone = new this.constructor();
31
+ // @ts-expect-error use constructor with type
32
+ const clone = new this.constructor(this.type);
25
33
  for (const key in this) {
26
- clone[key] = this[key];
34
+ if (key !== 'type') { // Skip type since it's already set by constructor
35
+ clone[key] = this[key];
36
+ }
27
37
  }
28
38
  return clone;
29
39
  }
40
+ /**
41
+ * Generate a SQL query string for this node using a specific dialect visitor.
42
+ * @param visitor Optional SQL visitor to use for string generation.
43
+ * If not provided, uses the default visitor.
44
+ * @returns The SQL string representation.
45
+ */
46
+ toString(visitor = _defaultVisitor) {
47
+ if (!visitor) {
48
+ throw new Error('No visitor provided and no default visitor set.');
49
+ }
50
+ return visitor.toString(this);
51
+ }
30
52
  }
31
53
  /**
32
54
  * AST node corresponding to an individual expression.
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,OAAO,CAAC;AAClC,CAAC;AAED,MAAM,OAAO,OAAO;IAClB,6BAA6B;IACpB,IAAI,CAAS;IAEtB;;;OAGG;IACH,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,mCAAmC;QACnC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;CACpC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,OAAO,CAAC;AAClC,CAAC;AAED,IAAI,eAA6C,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAyB;IACzD,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,OAAO,OAAO;IAClB,6BAA6B;IACpB,IAAI,CAAS;IAEtB;;;OAGG;IACH,YAAY,IAAY;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,6CAA6C;QAC7C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC,kDAAkD;gBACtE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,UAAwC,eAAe;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAO;CACpC"}
@@ -13,9 +13,5 @@ export declare class OrderByNode extends ExprNode {
13
13
  * @param nullsFirst Flag indicating if null values should be sorted first.
14
14
  */
15
15
  constructor(expr: ExprNode, desc?: boolean, nullsFirst?: boolean);
16
- /**
17
- * Generate a SQL query string for this node.
18
- */
19
- toString(): string;
20
16
  }
21
17
  //# sourceMappingURL=order-by.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-by.d.ts","sourceRoot":"","sources":["../../../src/ast/order-by.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,WAAY,SAAQ,QAAQ;IACvC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;gBACS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO;IAOhE;;OAEG;IACH,QAAQ;CAUT"}
1
+ {"version":3,"file":"order-by.d.ts","sourceRoot":"","sources":["../../../src/ast/order-by.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,WAAY,SAAQ,QAAQ;IACvC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;;OAKG;gBACS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO;CAMjE"}
@@ -19,18 +19,5 @@ export class OrderByNode extends ExprNode {
19
19
  this.desc = desc;
20
20
  this.nullsFirst = nullsFirst;
21
21
  }
22
- /**
23
- * Generate a SQL query string for this node.
24
- */
25
- toString() {
26
- const { expr, desc, nullsFirst } = this;
27
- const dir = desc ? ' DESC'
28
- : desc === false ? ' ASC'
29
- : '';
30
- const nf = nullsFirst ? ' NULLS FIRST'
31
- : nullsFirst === false ? ' NULLS LAST'
32
- : '';
33
- return `${expr}${dir}${nf}`;
34
- }
35
22
  }
36
23
  //# sourceMappingURL=order-by.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"order-by.js","sourceRoot":"","sources":["../../../src/ast/order-by.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,kCAAkC;IACzB,IAAI,CAAW;IACxB,wCAAwC;IAC/B,IAAI,CAAW;IACxB,6DAA6D;IACpD,UAAU,CAAW;IAE9B;;;;;OAKG;IACH,YAAY,IAAc,EAAE,IAAc,EAAE,UAAoB;QAC9D,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO;YACxB,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM;gBACzB,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc;YACpC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa;gBACtC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"order-by.js","sourceRoot":"","sources":["../../../src/ast/order-by.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,kCAAkC;IACzB,IAAI,CAAW;IACxB,wCAAwC;IAC/B,IAAI,CAAW;IACxB,6DAA6D;IACpD,UAAU,CAAW;IAE9B;;;;;OAKG;IACH,YAAY,IAAc,EAAE,IAAc,EAAE,UAAoB;QAC9D,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF"}
@@ -12,9 +12,5 @@ export declare class ParamNode extends ExprNode {
12
12
  * Returns the current parameter value.
13
13
  */
14
14
  get value(): unknown;
15
- /**
16
- * Generate a SQL query string for this node.
17
- */
18
- toString(): string;
19
15
  }
20
16
  //# sourceMappingURL=param.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../src/ast/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,SAAU,SAAQ,QAAQ;IACrC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B;;;OAGG;gBACS,KAAK,EAAE,SAAS;IAK5B;;OAEG;IACH,IAAI,KAAK,YAER;IAED;;OAEG;IACH,QAAQ;CAGT"}
1
+ {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../src/ast/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,SAAU,SAAQ,QAAQ;IACrC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAE1B;;;OAGG;gBACS,KAAK,EAAE,SAAS;IAK5B;;OAEG;IACH,IAAI,KAAK,YAER;CACF"}
@@ -1,5 +1,4 @@
1
1
  import { PARAM } from '../constants.js';
2
- import { literalToSQL } from './literal.js';
3
2
  import { ExprNode } from './node.js';
4
3
  export class ParamNode extends ExprNode {
5
4
  /** The dynamic parameter. */
@@ -18,11 +17,5 @@ export class ParamNode extends ExprNode {
18
17
  get value() {
19
18
  return this.param.value;
20
19
  }
21
- /**
22
- * Generate a SQL query string for this node.
23
- */
24
- toString() {
25
- return literalToSQL(this.value);
26
- }
27
20
  }
28
21
  //# sourceMappingURL=param.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../src/ast/param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,6BAA6B;IACpB,KAAK,CAAY;IAE1B;;;OAGG;IACH,YAAY,KAAgB;QAC1B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../src/ast/param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,6BAA6B;IACpB,KAAK,CAAY;IAE1B;;;OAGG;IACH,YAAY,KAAgB;QAC1B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import type { FilterExpr, FromExpr, GroupByExpr, MaybeArray, OrderByExpr, SelectExpr, WithExpr } from '../types.js';
2
2
  import type { SampleMethod } from './sample.js';
3
- import { FromClauseNode } from './from.js';
3
+ import { FromNode } from './from.js';
4
4
  import { ExprNode, SQLNode } from './node.js';
5
5
  import { SampleClauseNode } from './sample.js';
6
6
  import { SelectClauseNode } from './select.js';
@@ -133,7 +133,7 @@ export declare class Query extends ExprNode {
133
133
  }
134
134
  export declare class SelectQuery extends Query {
135
135
  _select: SelectClauseNode[];
136
- _from: FromClauseNode[];
136
+ _from: FromNode[];
137
137
  _where: ExprNode[];
138
138
  _sample?: SampleClauseNode;
139
139
  _groupby: ExprNode[];
@@ -221,10 +221,6 @@ export declare class SelectQuery extends Query {
221
221
  * @param expr Expressions to add.
222
222
  */
223
223
  qualify(...expr: FilterExpr[]): this;
224
- /**
225
- * Generate a SQL query string.
226
- */
227
- toString(): string;
228
224
  }
229
225
  export declare class DescribeQuery extends SQLNode {
230
226
  readonly query: Query;
@@ -237,10 +233,6 @@ export declare class DescribeQuery extends SQLNode {
237
233
  * Clone this describe query.
238
234
  */
239
235
  clone(): this;
240
- /**
241
- * Generate a SQL query string.
242
- */
243
- toString(): string;
244
236
  }
245
237
  export declare class SetOperation extends Query {
246
238
  /** The set operation to perform. */
@@ -266,10 +258,6 @@ export declare class SetOperation extends Query {
266
258
  * Clone this set operation.
267
259
  */
268
260
  clone(): this;
269
- /**
270
- * Generate a SQL query string.
271
- */
272
- toString(): string;
273
261
  }
274
262
  declare class WithClause {
275
263
  /** The common table expressions (CTE). */
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/ast/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/ast/query.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { exprList, nodeList } from '../util/function.js';
4
4
  import { unquote } from '../util/string.js';
5
5
  import { isArray, isString } from '../util/type-check.js';
6
6
  import { isColumnRef } from './column-ref.js';
7
- import { FromClauseNode } from './from.js';
7
+ import { FromClauseNode, FromNode } from './from.js';
8
8
  import { ExprNode, SQLNode, isNode } from './node.js';
9
9
  import { SampleClauseNode } from './sample.js';
10
10
  import { SelectClauseNode } from './select.js';
@@ -230,15 +230,19 @@ export class SelectQuery extends Query {
230
230
  const cte = w.reduce((obj, c) => (obj[c.name] = c.query, obj), {});
231
231
  // extract subqueries in FROM clause
232
232
  // unused CTEs will be ignored
233
+ // WARNING: does not recurse into join inputs!
233
234
  const queries = [];
234
- this._from.forEach(({ expr }) => {
235
- if (isQuery(expr)) {
236
- queries.push(expr);
237
- }
238
- else if (isTableRef(expr)) {
239
- const subq = cte[expr.name];
240
- if (subq)
241
- queries.push(subq);
235
+ this._from.forEach(node => {
236
+ if (node instanceof FromClauseNode) {
237
+ const { expr } = node;
238
+ if (isQuery(expr)) {
239
+ queries.push(expr);
240
+ }
241
+ else if (isTableRef(expr)) {
242
+ const subq = cte[expr.name];
243
+ if (subq)
244
+ queries.push(subq);
245
+ }
242
246
  }
243
247
  });
244
248
  return queries;
@@ -308,7 +312,7 @@ export class SelectQuery extends Query {
308
312
  expr.flat().forEach(e => {
309
313
  if (e == null)
310
314
  return;
311
- else if (e instanceof FromClauseNode)
315
+ else if (e instanceof FromNode)
312
316
  list.push(e);
313
317
  else if (isString(e))
314
318
  add(e, e);
@@ -416,59 +420,6 @@ export class SelectQuery extends Query {
416
420
  this._qualify = this._qualify.concat(exprList(expr, asVerbatim));
417
421
  return this;
418
422
  }
419
- /**
420
- * Generate a SQL query string.
421
- */
422
- toString() {
423
- const { _with, _select, _distinct, _from, _sample, _where, _groupby, _having, _window, _qualify, _orderby, _limitPerc, _limit, _offset } = this;
424
- const sql = [];
425
- // WITH
426
- if (_with.length)
427
- sql.push(`WITH ${_with.join(', ')}`);
428
- // SELECT
429
- sql.push(`SELECT${_distinct ? ' DISTINCT' : ''} ${_select.join(', ')}`);
430
- // FROM
431
- if (_from.length)
432
- sql.push(`FROM ${_from.join(', ')}`);
433
- // WHERE
434
- if (_where.length) {
435
- const clauses = _where.map(String).filter(x => x).join(' AND ');
436
- if (clauses)
437
- sql.push(`WHERE ${clauses}`);
438
- }
439
- // SAMPLE
440
- if (_sample)
441
- sql.push(`USING SAMPLE ${_sample}`);
442
- // GROUP BY
443
- if (_groupby.length) {
444
- sql.push(`GROUP BY ${_groupby.join(', ')}`);
445
- }
446
- // HAVING
447
- if (_having.length) {
448
- const clauses = _having.map(String).filter(x => x).join(' AND ');
449
- if (clauses)
450
- sql.push(`HAVING ${clauses}`);
451
- }
452
- // WINDOW
453
- if (_window.length)
454
- sql.push(`WINDOW ${_window.join(', ')}`);
455
- // QUALIFY
456
- if (_qualify.length) {
457
- const clauses = _qualify.map(String).filter(x => x).join(' AND ');
458
- if (clauses)
459
- sql.push(`QUALIFY ${clauses}`);
460
- }
461
- // ORDER BY
462
- if (_orderby.length)
463
- sql.push(`ORDER BY ${_orderby.join(', ')}`);
464
- // LIMIT
465
- if (_limit)
466
- sql.push(`LIMIT ${_limit}${_limitPerc ? '%' : ''}`);
467
- // OFFSET
468
- if (_offset)
469
- sql.push(`OFFSET ${_offset}`);
470
- return sql.join(' ');
471
- }
472
423
  }
473
424
  export class DescribeQuery extends SQLNode {
474
425
  query;
@@ -487,12 +438,6 @@ export class DescribeQuery extends SQLNode {
487
438
  // @ts-expect-error creates describe query
488
439
  return new DescribeQuery(this.query.clone());
489
440
  }
490
- /**
491
- * Generate a SQL query string.
492
- */
493
- toString() {
494
- return `DESCRIBE ${this.query}`;
495
- }
496
441
  }
497
442
  export class SetOperation extends Query {
498
443
  /** The set operation to perform. */
@@ -533,28 +478,6 @@ export class SetOperation extends Query {
533
478
  // @ts-expect-error creates set operation
534
479
  return Object.assign(new SetOperation(op, queries), rest);
535
480
  }
536
- /**
537
- * Generate a SQL query string.
538
- */
539
- toString() {
540
- const { op, queries, _with, _orderby, _limitPerc, _limit, _offset } = this;
541
- const sql = [];
542
- // WITH
543
- if (_with.length)
544
- sql.push(`WITH ${_with.join(', ')}`);
545
- // SUBQUERIES
546
- sql.push(queries.join(` ${op} `));
547
- // ORDER BY
548
- if (_orderby.length)
549
- sql.push(`ORDER BY ${_orderby.join(', ')}`);
550
- // LIMIT
551
- if (_limit)
552
- sql.push(`LIMIT ${_limit}${_limitPerc ? '%' : ''}`);
553
- // OFFSET
554
- if (_offset)
555
- sql.push(`OFFSET ${_offset}`);
556
- return sql.join(' ');
557
- }
558
481
  }
559
482
  class WithClause {
560
483
  /** The common table expressions (CTE). */