@uwdata/mosaic-sql 0.18.0 → 0.20.0

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 (212) 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 +11 -0
  54. package/dist/src/ast/list.d.ts.map +1 -0
  55. package/dist/src/ast/list.js +15 -0
  56. package/dist/src/ast/list.js.map +1 -0
  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 +43 -15
  78. package/dist/src/ast/query.d.ts.map +1 -1
  79. package/dist/src/ast/query.js +71 -92
  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 +15 -0
  102. package/dist/src/ast/unnest.d.ts.map +1 -0
  103. package/dist/src/ast/unnest.js +21 -0
  104. package/dist/src/ast/unnest.js.map +1 -0
  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 +4 -0
  122. package/dist/src/constants.d.ts.map +1 -1
  123. package/dist/src/constants.js +4 -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/functions/list.d.ts +31 -0
  134. package/dist/src/functions/list.d.ts.map +1 -0
  135. package/dist/src/functions/list.js +49 -0
  136. package/dist/src/functions/list.js.map +1 -0
  137. package/dist/src/functions/unnest.d.ts +10 -0
  138. package/dist/src/functions/unnest.d.ts.map +1 -0
  139. package/dist/src/functions/unnest.js +12 -0
  140. package/dist/src/functions/unnest.js.map +1 -0
  141. package/dist/src/index.d.ts +11 -1
  142. package/dist/src/index.d.ts.map +1 -1
  143. package/dist/src/index.js +12 -1
  144. package/dist/src/index.js.map +1 -1
  145. package/dist/src/init.d.ts +2 -0
  146. package/dist/src/init.d.ts.map +1 -0
  147. package/dist/src/init.js +5 -0
  148. package/dist/src/init.js.map +1 -0
  149. package/dist/src/transforms/filter-query.d.ts.map +1 -1
  150. package/dist/src/transforms/filter-query.js +2 -0
  151. package/dist/src/transforms/filter-query.js.map +1 -1
  152. package/dist/src/visit/codegen/duckdb.d.ts +49 -0
  153. package/dist/src/visit/codegen/duckdb.d.ts.map +1 -0
  154. package/dist/src/visit/codegen/duckdb.js +332 -0
  155. package/dist/src/visit/codegen/duckdb.js.map +1 -0
  156. package/dist/src/visit/codegen/sql.d.ts +60 -0
  157. package/dist/src/visit/codegen/sql.d.ts.map +1 -0
  158. package/dist/src/visit/codegen/sql.js +85 -0
  159. package/dist/src/visit/codegen/sql.js.map +1 -0
  160. package/dist/src/visit/duckdb-visitor.d.ts +50 -0
  161. package/dist/src/visit/duckdb-visitor.d.ts.map +1 -0
  162. package/dist/src/visit/duckdb-visitor.js +350 -0
  163. package/dist/src/visit/duckdb-visitor.js.map +1 -0
  164. package/dist/src/visit/recurse.d.ts.map +1 -1
  165. package/dist/src/visit/recurse.js +3 -1
  166. package/dist/src/visit/recurse.js.map +1 -1
  167. package/dist/src/visit/to-string-visitor.d.ts +60 -0
  168. package/dist/src/visit/to-string-visitor.d.ts.map +1 -0
  169. package/dist/src/visit/to-string-visitor.js +80 -0
  170. package/dist/src/visit/to-string-visitor.js.map +1 -0
  171. package/package.json +2 -2
  172. package/src/ast/aggregate.ts +0 -16
  173. package/src/ast/between-op.ts +0 -14
  174. package/src/ast/binary-op.ts +0 -7
  175. package/src/ast/case.ts +0 -18
  176. package/src/ast/cast.ts +0 -8
  177. package/src/ast/collate.ts +0 -7
  178. package/src/ast/column-ref.ts +0 -11
  179. package/src/ast/fragment.ts +0 -7
  180. package/src/ast/from.ts +12 -12
  181. package/src/ast/function.ts +0 -8
  182. package/src/ast/in-op.ts +0 -7
  183. package/src/ast/interval.ts +0 -7
  184. package/src/ast/join.ts +66 -0
  185. package/src/ast/list.ts +16 -0
  186. package/src/ast/literal.ts +0 -7
  187. package/src/ast/logical-op.ts +0 -10
  188. package/src/ast/node.ts +30 -3
  189. package/src/ast/order-by.ts +0 -14
  190. package/src/ast/param.ts +0 -8
  191. package/src/ast/query.ts +80 -104
  192. package/src/ast/sample.ts +0 -10
  193. package/src/ast/select.ts +0 -18
  194. package/src/ast/subquery.ts +0 -7
  195. package/src/ast/table-ref.ts +0 -8
  196. package/src/ast/unary-op.ts +0 -14
  197. package/src/ast/unnest.ts +22 -0
  198. package/src/ast/verbatim.ts +0 -7
  199. package/src/ast/window-frame.ts +1 -32
  200. package/src/ast/window.ts +0 -43
  201. package/src/ast/with.ts +0 -11
  202. package/src/constants.ts +4 -0
  203. package/src/functions/from.ts +18 -0
  204. package/src/functions/join.ts +101 -0
  205. package/src/functions/list.ts +63 -0
  206. package/src/functions/unnest.ts +13 -0
  207. package/src/index.ts +13 -1
  208. package/src/init.ts +5 -0
  209. package/src/transforms/filter-query.ts +2 -0
  210. package/src/visit/codegen/duckdb.ts +444 -0
  211. package/src/visit/codegen/sql.ts +213 -0
  212. package/src/visit/recurse.ts +4 -0
@@ -27,10 +27,6 @@ export declare class WindowFrameNode extends SQLNode {
27
27
  * @param exclude The window frame exclusion criteria.
28
28
  */
29
29
  constructor(frameType: FrameType, extent: FrameExtent, exclude?: FrameExclude);
30
- /**
31
- * Generate a SQL query string for this node.
32
- */
33
- toString(): string;
34
30
  }
35
31
  export declare class WindowFrameExprNode extends SQLNode {
36
32
  /** The window frame extent. */
@@ -46,9 +42,5 @@ export declare class WindowFrameExprNode extends SQLNode {
46
42
  * @param expr The window frame extent expression.
47
43
  */
48
44
  constructor(scope: FrameScope, expr?: FrameValue | null);
49
- /**
50
- * Generate a SQL query string for this node.
51
- */
52
- toString(): string;
53
45
  }
54
46
  //# sourceMappingURL=window-frame.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"window-frame.d.ts","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,QAAQ,EAAU,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAI,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AACnE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1E,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAChD,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEhC;;;;;OAKG;gBAED,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,YAAY;IAQxB;;OAEG;IACH,QAAQ;CAST;AAUD,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;gBACS,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,UAAU,GAAG,IAAW;IAM7D;;OAEG;IACH,QAAQ;CAMT"}
1
+ {"version":3,"file":"window-frame.d.ts","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,MAAM,UAAU,GAAI,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;AACnD,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AACnE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1E,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,qBAAa,eAAgB,SAAQ,OAAO;IAC1C,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAChD,2CAA2C;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAEhC;;;;;OAKG;gBAED,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,YAAY;CAOzB;AAED,qBAAa,mBAAoB,SAAQ,OAAO;IAC9C,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;gBACS,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,UAAU,GAAG,IAAW;CAK9D"}
@@ -1,6 +1,6 @@
1
1
  import { WINDOW_EXTENT_EXPR, WINDOW_FRAME } from '../constants.js';
2
2
  import { isParamLike } from '../util/type-check.js';
3
- import { isNode, SQLNode } from './node.js';
3
+ import { SQLNode } from './node.js';
4
4
  import { ParamNode } from './param.js';
5
5
  export const ROWS = 'ROWS';
6
6
  export const RANGE = 'RANGE';
@@ -28,25 +28,6 @@ export class WindowFrameNode extends SQLNode {
28
28
  this.extent = isParamLike(extent) ? new ParamNode(extent) : extent;
29
29
  this.exclude = exclude;
30
30
  }
31
- /**
32
- * Generate a SQL query string for this node.
33
- */
34
- toString() {
35
- const { frameType, exclude, extent } = this;
36
- const [prev, next] = isNode(extent)
37
- ? extent.value
38
- : extent;
39
- const a = asFrameExpr(prev, PRECEDING);
40
- const b = asFrameExpr(next, FOLLOWING);
41
- return `${frameType} BETWEEN ${a} AND ${b}${exclude ? ` ${exclude}` : ''}`;
42
- }
43
- }
44
- function asFrameExpr(value, scope) {
45
- return value instanceof WindowFrameExprNode ? value
46
- : value != null && typeof value !== 'number' ? `${value} ${scope}`
47
- : value === 0 ? CURRENT_ROW
48
- : !(value && Number.isFinite(value)) ? `${UNBOUNDED} ${scope}`
49
- : `${Math.abs(value)} ${scope}`;
50
31
  }
51
32
  export class WindowFrameExprNode extends SQLNode {
52
33
  /** The window frame extent. */
@@ -66,14 +47,5 @@ export class WindowFrameExprNode extends SQLNode {
66
47
  this.scope = scope;
67
48
  this.expr = expr;
68
49
  }
69
- /**
70
- * Generate a SQL query string for this node.
71
- */
72
- toString() {
73
- const { scope, expr } = this;
74
- return scope === CURRENT_ROW
75
- ? scope
76
- : `${expr ?? UNBOUNDED} ${scope}`;
77
- }
78
50
  }
79
51
  //# sourceMappingURL=window-frame.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"window-frame.js","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"window-frame.js","sourceRoot":"","sources":["../../../src/ast/window-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAiB,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAC7B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AAErC,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAC1C,qDAAqD;IAC5C,SAAS,CAAY;IAC9B,+BAA+B;IACtB,MAAM,CAAiC;IAChD,2CAA2C;IAClC,OAAO,CAAgB;IAEhC;;;;;OAKG;IACH,YACE,SAAoB,EACpB,MAAmB,EACnB,OAAsB;QAEtB,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,OAAO;IAC9C,+BAA+B;IACtB,KAAK,CAAa;IAC3B;;;OAGG;IACM,IAAI,CAAoB;IAEjC;;;;OAIG;IACH,YAAY,KAAiB,EAAE,OAA0B,IAAI;QAC3D,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -13,10 +13,6 @@ export declare class WindowClauseNode extends SQLNode {
13
13
  * @param def The window definition.
14
14
  */
15
15
  constructor(name: string, def: WindowDefNode);
16
- /**
17
- * Generate a SQL query string for this node.
18
- */
19
- toString(): string;
20
16
  }
21
17
  export declare class WindowNode extends ExprNode {
22
18
  readonly func: WindowFunctionNode | AggregateNode;
@@ -51,10 +47,6 @@ export declare class WindowNode extends ExprNode {
51
47
  * @returns A new window node.
52
48
  */
53
49
  frame(framedef: WindowFrameNode): WindowNode;
54
- /**
55
- * Generate a SQL query string for this node.
56
- */
57
- toString(): string;
58
50
  }
59
51
  export declare class WindowFunctionNode extends ExprNode {
60
52
  /** The window function name. */
@@ -74,10 +66,6 @@ export declare class WindowFunctionNode extends ExprNode {
74
66
  * Note that this argument ordering is distinct from the window ordering.
75
67
  */
76
68
  constructor(name: WindowFunctionName, args?: ExprNode[], ignoreNulls?: boolean, argOrder?: OrderByExpr);
77
- /**
78
- * Generate a SQL query string for this node.
79
- */
80
- toString(): string;
81
69
  }
82
70
  export declare class WindowDefNode extends SQLNode {
83
71
  /** The base window definition name. */
@@ -120,9 +108,5 @@ export declare class WindowDefNode extends SQLNode {
120
108
  * @return A new window definition node.
121
109
  */
122
110
  frame(framedef: WindowFrameNode): WindowDefNode;
123
- /**
124
- * Generate a SQL query string for this node.
125
- */
126
- toString(): string;
127
111
  }
128
112
  //# sourceMappingURL=window.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,OAAO;IAC1C,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAE7B;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;IAM5C;;OAEG;IACH,QAAQ;CAGT;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;IAE3B;;;;OAIG;gBAED,IAAI,EAAE,kBAAkB,GAAG,aAAa,EACxC,IAAI,GAAE,aAAmC;IAO3C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;IAI/B;;OAEG;IACH,QAAQ;CAGT;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAE3B;;;;;;;OAOG;gBAED,IAAI,EAAE,kBAAkB,EACxB,IAAI,GAAE,QAAQ,EAAO,EACrB,WAAW,GAAE,OAAe,EAC5B,QAAQ,GAAE,WAAgB;IAS5B;;OAEG;IACH,QAAQ;CAST;AAED,qBAAa,aAAc,SAAQ,OAAO;IACxC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;;;;;OAMG;gBAED,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAClB,QAAQ,CAAC,EAAE,eAAe;IAS5B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;IAI/B;;OAEG;IACH,QAAQ;CAWT"}
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,gBAAiB,SAAQ,OAAO;IAC1C,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAE7B;;;;OAIG;gBACS,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;CAK7C;AAED,qBAAa,UAAW,SAAQ,QAAQ;IACtC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,aAAa,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAA;IAE3B;;;;OAIG;gBAED,IAAI,EAAE,kBAAkB,GAAG,aAAa,EACxC,IAAI,GAAE,aAAmC;IAO3C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;CAGhC;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1B,kCAAkC;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAE3B;;;;;;;OAOG;gBAED,IAAI,EAAE,kBAAkB,EACxB,IAAI,GAAE,QAAQ,EAAO,EACrB,WAAW,GAAE,OAAe,EAC5B,QAAQ,GAAE,WAAgB;CAQ7B;AAED,qBAAa,aAAc,SAAQ,OAAO;IACxC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;;;;;OAMG;gBAED,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,QAAQ,EAAE,EACtB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAClB,QAAQ,CAAC,EAAE,eAAe;IAS5B;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB;;;;OAIG;IACH,WAAW,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAIlC;;;;OAIG;IACH,OAAO,CAAC,GAAG,IAAI,EAAE,WAAW,EAAE;IAI9B;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,eAAe;CAGhC"}
@@ -1,6 +1,5 @@
1
1
  import { WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_FUNCTION } from '../constants.js';
2
2
  import { nodeList } from '../util/function.js';
3
- import { quoteIdentifier } from '../util/string.js';
4
3
  import { ExprNode, SQLNode } from './node.js';
5
4
  export class WindowClauseNode extends SQLNode {
6
5
  /** The window name. */
@@ -17,12 +16,6 @@ export class WindowClauseNode extends SQLNode {
17
16
  this.name = name;
18
17
  this.def = def;
19
18
  }
20
- /**
21
- * Generate a SQL query string for this node.
22
- */
23
- toString() {
24
- return `${quoteIdentifier(this.name)} AS ${this.def}`;
25
- }
26
19
  }
27
20
  export class WindowNode extends ExprNode {
28
21
  func;
@@ -69,12 +62,6 @@ export class WindowNode extends ExprNode {
69
62
  frame(framedef) {
70
63
  return new WindowNode(this.func, this.def.frame(framedef));
71
64
  }
72
- /**
73
- * Generate a SQL query string for this node.
74
- */
75
- toString() {
76
- return `${this.func} OVER ${this.def}`;
77
- }
78
65
  }
79
66
  export class WindowFunctionNode extends ExprNode {
80
67
  /** The window function name. */
@@ -100,18 +87,6 @@ export class WindowFunctionNode extends ExprNode {
100
87
  this.ignoreNulls = ignoreNulls;
101
88
  this.order = nodeList([argOrder]);
102
89
  }
103
- /**
104
- * Generate a SQL query string for this node.
105
- */
106
- toString() {
107
- const { name, args, ignoreNulls, order } = this;
108
- const arg = [
109
- args.join(', '),
110
- order.length ? `ORDER BY ${order.join(', ')}` : '',
111
- ignoreNulls ? 'IGNORE NULLS' : ''
112
- ].filter(x => x).join(' ');
113
- return `${name}(${arg})`;
114
- }
115
90
  }
116
91
  export class WindowDefNode extends SQLNode {
117
92
  /** The base window definition name. */
@@ -168,20 +143,6 @@ export class WindowDefNode extends SQLNode {
168
143
  frame(framedef) {
169
144
  return deriveDef(this, { framedef });
170
145
  }
171
- /**
172
- * Generate a SQL query string for this node.
173
- */
174
- toString() {
175
- const { name, partition, order, framedef } = this;
176
- const base = name && quoteIdentifier(name);
177
- const def = [
178
- base,
179
- partition?.length && `PARTITION BY ${partition.join(', ')}`,
180
- order?.length && `ORDER BY ${order.join(', ')}`,
181
- framedef
182
- ].filter(x => x);
183
- return base && def.length < 2 ? base : `(${def.join(' ')})`;
184
- }
185
146
  }
186
147
  /**
187
148
  * Derive a new window definition node from an existing one.
@@ -1 +1 @@
1
- {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../src/ast/window.ts"],"names":[],"mappings":"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"}
@@ -17,9 +17,5 @@ export declare class WithClauseNode extends SQLNode {
17
17
  * `undefined` or `null`), materialization is decided by the database.
18
18
  */
19
19
  constructor(name: string, query: Query, materialized?: boolean | null);
20
- /**
21
- * Generate a SQL query string for this node.
22
- */
23
- toString(): string;
24
20
  }
25
21
  //# sourceMappingURL=with.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,YAAY,GAAE,OAAO,GAAG,IAAW;IAQrC;;OAEG;IACH,QAAQ;CAOT"}
1
+ {"version":3,"file":"with.d.ts","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAEtC;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,YAAY,GAAE,OAAO,GAAG,IAAW;CAOtC"}
@@ -22,15 +22,5 @@ export class WithClauseNode extends SQLNode {
22
22
  this.query = query;
23
23
  this.materialized = materialized;
24
24
  }
25
- /**
26
- * Generate a SQL query string for this node.
27
- */
28
- toString() {
29
- const flag = this.materialized;
30
- const mat = flag === true ? ' MATERIALIZED'
31
- : flag === false ? ' NOT MATERIALIZED'
32
- : '';
33
- return `"${this.name}" AS${mat} (${this.query})`;
34
- }
35
25
  }
36
26
  //# sourceMappingURL=with.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with.js","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IACrC,IAAI,CAAS;IACtB,+CAA+C;IACtC,KAAK,CAAQ;IACtB,8DAA8D;IACrD,YAAY,CAAiB;IAEtC;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,KAAY,EACZ,eAA+B,IAAI;QAEnC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe;YACzC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB;gBACtC,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,GAAG,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"with.js","sourceRoot":"","sources":["../../../src/ast/with.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,OAAO,cAAe,SAAQ,OAAO;IACzC,8CAA8C;IACrC,IAAI,CAAS;IACtB,+CAA+C;IACtC,KAAK,CAAQ;IACtB,8DAA8D;IACrD,YAAY,CAAiB;IAEtC;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,KAAY,EACZ,eAA+B,IAAI;QAEnC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF"}
@@ -3,6 +3,8 @@ export declare const COLUMN_PARAM = "COLUMN_PARAM";
3
3
  export declare const TABLE_REF = "TABLE_REF";
4
4
  export declare const LITERAL = "LITERAL";
5
5
  export declare const INTERVAL = "INTERVAL";
6
+ export declare const LIST = "LIST";
7
+ export declare const UNNEST = "UNNEST";
6
8
  export declare const ORDER_BY = "ORDER_BY";
7
9
  export declare const CAST = "CAST";
8
10
  export declare const CASE = "CASE";
@@ -22,6 +24,7 @@ export declare const WINDOW_FUNCTION = "WINDOW_FUNCTION";
22
24
  export declare const WINDOW_DEF = "WINDOW_DEF";
23
25
  export declare const WINDOW_FRAME = "WINDOW_FRAME";
24
26
  export declare const WINDOW_EXTENT_EXPR = "WINDOW_EXTENT_EXPR";
27
+ export declare const CUSTOM = "CUSTOM";
25
28
  export declare const EXPRESSION = "EXPRESSION";
26
29
  export declare const FRAGMENT = "FRAGMENT";
27
30
  export declare const VERBATIM = "VERBATIM";
@@ -30,6 +33,7 @@ export declare const WITH_CLAUSE = "WITH_CLAUSE";
30
33
  export declare const WINDOW_CLAUSE = "WINDOW_CLAUSE";
31
34
  export declare const SELECT_CLAUSE = "SELECT_CLAUSE";
32
35
  export declare const FROM_CLAUSE = "FROM_CLAUSE";
36
+ export declare const JOIN_CLAUSE = "JOIN_CLAUSE";
33
37
  export declare const SAMPLE_CLAUSE = "SAMPLE_CLAUSE";
34
38
  export declare const SELECT_QUERY = "SELECT_QUERY";
35
39
  export declare const DESCRIBE_QUERY = "DESCRIBE_QUERY";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,OAAO,YAAY,CAAC;AAEjC,eAAO,MAAM,cAAc,UAAU,CAAC;AACtC,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AACnD,eAAO,MAAM,WAAW,OAAO,CAAC;AAEhC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,eAAe,oBAAoB,CAAC;AACjD,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,UAAU,eAAe,CAAC;AACvC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,WAAW,gBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAC7C,eAAO,MAAM,eAAe,oBAAoB,CAAC"}
@@ -3,6 +3,8 @@ export const COLUMN_PARAM = 'COLUMN_PARAM';
3
3
  export const TABLE_REF = 'TABLE_REF';
4
4
  export const LITERAL = 'LITERAL';
5
5
  export const INTERVAL = 'INTERVAL';
6
+ export const LIST = 'LIST';
7
+ export const UNNEST = 'UNNEST';
6
8
  export const ORDER_BY = 'ORDER_BY';
7
9
  export const CAST = 'CAST';
8
10
  export const CASE = 'CASE';
@@ -22,6 +24,7 @@ export const WINDOW_FUNCTION = 'WINDOW_FUNCTION';
22
24
  export const WINDOW_DEF = 'WINDOW_DEF';
23
25
  export const WINDOW_FRAME = 'WINDOW_FRAME';
24
26
  export const WINDOW_EXTENT_EXPR = 'WINDOW_EXTENT_EXPR';
27
+ export const CUSTOM = 'CUSTOM';
25
28
  export const EXPRESSION = 'EXPRESSION';
26
29
  export const FRAGMENT = 'FRAGMENT';
27
30
  export const VERBATIM = 'VERBATIM';
@@ -30,6 +33,7 @@ export const WITH_CLAUSE = 'WITH_CLAUSE';
30
33
  export const WINDOW_CLAUSE = 'WINDOW_CLAUSE';
31
34
  export const SELECT_CLAUSE = 'SELECT_CLAUSE';
32
35
  export const FROM_CLAUSE = 'FROM_CLAUSE';
36
+ export const JOIN_CLAUSE = 'JOIN_CLAUSE';
33
37
  export const SAMPLE_CLAUSE = 'SAMPLE_CLAUSE';
34
38
  export const SELECT_QUERY = 'SELECT_QUERY';
35
39
  export const DESCRIBE_QUERY = 'DESCRIBE_QUERY';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { FromClauseNode } from "../ast/from.js";
2
+ import { SampleClauseNode } from "../ast/sample.js";
3
+ import { TableRefNode } from "../ast/table-ref.js";
4
+ /**
5
+ * Create a new table FROM reference, applicable in a query or join.
6
+ * @param table The table.
7
+ * @param alias An optional table alias.
8
+ * @param sample An optional table sample to apply.
9
+ */
10
+ export declare function from(table: string | string[] | TableRefNode, alias?: string, sample?: SampleClauseNode): FromClauseNode;
11
+ //# sourceMappingURL=from.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from.d.ts","sourceRoot":"","sources":["../../../src/functions/from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD;;;;;GAKG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,YAAY,EACvC,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,gBAAgB,kBAG1B"}
@@ -0,0 +1,12 @@
1
+ import { FromClauseNode } from "../ast/from.js";
2
+ import { asTableRef } from "../util/ast.js";
3
+ /**
4
+ * Create a new table FROM reference, applicable in a query or join.
5
+ * @param table The table.
6
+ * @param alias An optional table alias.
7
+ * @param sample An optional table sample to apply.
8
+ */
9
+ export function from(table, alias, sample) {
10
+ return new FromClauseNode(asTableRef(table), alias, sample);
11
+ }
12
+ //# sourceMappingURL=from.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/functions/from.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,KAAuC,EACvC,KAAc,EACd,MAAyB;IAEzB,OAAO,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,CAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { ColumnRefNode } from '../ast/column-ref.js';
2
+ import { FromNode } from '../ast/from.js';
3
+ import { JoinNode, type JoinType } from '../ast/join.js';
4
+ import { ExprNode } from '../ast/node.js';
5
+ type TableArg = string | string[] | FromNode;
6
+ /** Options for a JOIN operation. */
7
+ interface JoinOptions {
8
+ /** The join type (INNER, LEFT, RIGHT, FULL, SEMI, ANTI). */
9
+ type?: JoinType;
10
+ /**
11
+ * The join condition as a boolean expression.
12
+ * If specified, the *using* option must not be specified.
13
+ */
14
+ on?: ExprNode;
15
+ /**
16
+ * The join condition as an array of columns to match.
17
+ * The column names must exist in both tables.
18
+ * If specified, the *on* option must not be specified.
19
+ */
20
+ using?: (string | ColumnRefNode)[];
21
+ }
22
+ /**
23
+ * Create a new cross (cartesian product) join.
24
+ * @param left The left table to join.
25
+ * @param right The right table to join.
26
+ */
27
+ export declare function cross_join(left: TableArg, right: TableArg): JoinNode;
28
+ /**
29
+ * Create a new POSITIONAL join.
30
+ * @param left The left table to join.
31
+ * @param right The right table to join.
32
+ */
33
+ export declare function positional_join(left: TableArg, right: TableArg): JoinNode;
34
+ /**
35
+ * Create a new join.
36
+ * @param left The left table to join.
37
+ * @param right The right table to join.
38
+ * @param options The join options.
39
+ */
40
+ export declare function join(left: TableArg, right: TableArg, options?: JoinOptions): JoinNode;
41
+ /**
42
+ * Create a new ASOF join.
43
+ * @param left The left table to join.
44
+ * @param right The right table to join.
45
+ * @param options The join options.
46
+ */
47
+ export declare function asof_join(left: TableArg, right: TableArg, options: JoinOptions): JoinNode;
48
+ export {};
49
+ //# sourceMappingURL=join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../../src/functions/join.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAoB,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC;AAE7C,oCAAoC;AACpC,UAAU,WAAW;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC;CACpC;AAyBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,YAEzD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,YAE9D;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAClB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,WAAW,YAQtB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,WAAW,YAMrB"}
@@ -0,0 +1,50 @@
1
+ import { FromNode } from '../ast/from.js';
2
+ import { JoinNode } from '../ast/join.js';
3
+ import { asNode, asTableRef } from '../util/ast.js';
4
+ function tableRef(x) {
5
+ return x instanceof FromNode ? x : asTableRef(x);
6
+ }
7
+ function makeJoin(left, right, variant, options = {}) {
8
+ if (options.on && options.using) {
9
+ throw new Error('Only one join condition (on or using) can be applied.');
10
+ }
11
+ return new JoinNode(tableRef(left), tableRef(right), variant, options.type, options.on, options.using?.map(c => asNode(c)));
12
+ }
13
+ /**
14
+ * Create a new cross (cartesian product) join.
15
+ * @param left The left table to join.
16
+ * @param right The right table to join.
17
+ */
18
+ export function cross_join(left, right) {
19
+ return makeJoin(left, right, 'CROSS');
20
+ }
21
+ /**
22
+ * Create a new POSITIONAL join.
23
+ * @param left The left table to join.
24
+ * @param right The right table to join.
25
+ */
26
+ export function positional_join(left, right) {
27
+ return makeJoin(left, right, 'POSITIONAL');
28
+ }
29
+ /**
30
+ * Create a new join.
31
+ * @param left The left table to join.
32
+ * @param right The right table to join.
33
+ * @param options The join options.
34
+ */
35
+ export function join(left, right, options) {
36
+ return makeJoin(left, right, options?.on || options?.using ? 'REGULAR' : 'NATURAL', options);
37
+ }
38
+ /**
39
+ * Create a new ASOF join.
40
+ * @param left The left table to join.
41
+ * @param right The right table to join.
42
+ * @param options The join options.
43
+ */
44
+ export function asof_join(left, right, options) {
45
+ if (!(options.on || options.using)) {
46
+ throw new Error('ASOF join requires a join condition.');
47
+ }
48
+ return makeJoin(left, right, 'ASOF', options);
49
+ }
50
+ //# sourceMappingURL=join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../src/functions/join.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqBpD,SAAS,QAAQ,CAAC,CAAW;IAC3B,OAAO,CAAC,YAAY,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC;AACpD,CAAC;AAED,SAAS,QAAQ,CACf,IAAc,EACd,KAAe,EACf,OAAqB,EACrB,UAAuB,EAAE;IAEzB,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,IAAI,QAAQ,CACjB,QAAQ,CAAC,IAAI,CAAC,EACd,QAAQ,CAAC,KAAK,CAAC,EACf,OAAO,EACP,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAkB,CAAC,CACpD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,KAAe;IACxD,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,KAAe;IAC7D,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,IAAc,EACd,KAAe,EACf,OAAqB;IAErB,OAAO,QAAQ,CACb,IAAI,EACJ,KAAK,EACL,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACrD,OAAO,CACR,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,IAAc,EACd,KAAe,EACf,OAAoB;IAEpB,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ExprValue } from "../types.js";
2
+ import { ListNode } from "../ast/list.js";
3
+ /**
4
+ * Create a List containing the argument values.
5
+ * @param values
6
+ */
7
+ export declare function list(values: ExprValue[]): ListNode;
8
+ /**
9
+ * Function that returns true if the list contains the element,
10
+ * false otherwise. If the first argument is a string, it is
11
+ * interpreted as a column reference, otherwise it is coerced
12
+ * to a list.
13
+ * @param list1
14
+ * @param element
15
+ */
16
+ export declare function listContains(list1: ExprValue | ExprValue[], element: ExprValue): import("../index.js").FunctionNode;
17
+ /**
18
+ * Function that returns true if all elements of list2 exist in list1,
19
+ * false otherwise.
20
+ * @param list1
21
+ * @param list2
22
+ */
23
+ export declare function listHasAll(list1: ExprValue | ExprValue[], list2: ExprValue | ExprValue[]): import("../index.js").FunctionNode;
24
+ /**
25
+ * Function that returns true if any elements exist in both lists,
26
+ * false otherwise.
27
+ * @param list1
28
+ * @param list2
29
+ */
30
+ export declare function listHasAny(list1: ExprValue | ExprValue[], list2: ExprValue | ExprValue[]): import("../index.js").FunctionNode;
31
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/functions/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,YAEvC;AAYD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,EAC9B,OAAO,EAAE,SAAS,sCAGnB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,EAC9B,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,sCAG/B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,EAC9B,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,sCAG/B"}
@@ -0,0 +1,49 @@
1
+ import { asLiteral, asNode } from "../util/ast.js";
2
+ import { argsList, fn } from "../util/function.js";
3
+ import { ListNode } from "../ast/list.js";
4
+ /**
5
+ * Create a List containing the argument values.
6
+ * @param values
7
+ */
8
+ export function list(values) {
9
+ return new ListNode(argsList(values).map(asLiteral));
10
+ }
11
+ /**
12
+ * Convert a single value or an array of values to either a ListNode if the input
13
+ * is an array, or a single ExprNode if it is a single value. A single string will
14
+ * be interpreted as a column reference.
15
+ * @param values
16
+ */
17
+ function asList(values) {
18
+ return Array.isArray(values) ? list(values) : asNode(values);
19
+ }
20
+ /**
21
+ * Function that returns true if the list contains the element,
22
+ * false otherwise. If the first argument is a string, it is
23
+ * interpreted as a column reference, otherwise it is coerced
24
+ * to a list.
25
+ * @param list1
26
+ * @param element
27
+ */
28
+ export function listContains(list1, element) {
29
+ return fn("list_contains", asList(list1), asLiteral(element));
30
+ }
31
+ /**
32
+ * Function that returns true if all elements of list2 exist in list1,
33
+ * false otherwise.
34
+ * @param list1
35
+ * @param list2
36
+ */
37
+ export function listHasAll(list1, list2) {
38
+ return fn("list_has_all", asList(list1), asList(list2));
39
+ }
40
+ /**
41
+ * Function that returns true if any elements exist in both lists,
42
+ * false otherwise.
43
+ * @param list1
44
+ * @param list2
45
+ */
46
+ export function listHasAny(list1, list2) {
47
+ return fn("list_has_any", asList(list1), asList(list2));
48
+ }
49
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/functions/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,IAAI,CAAC,MAAmB;IACtC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CAAC,MAA+B;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA8B,EAC9B,OAAkB;IAElB,OAAO,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,KAA8B;IAE9B,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,KAA8B;IAE9B,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ExprValue } from "../types.js";
2
+ import { UnnestNode } from "../ast/unnest.js";
3
+ /**
4
+ * Create an Unnest Node to flatten nested structures, either structs or lists.
5
+ * @param value
6
+ * @param recursive
7
+ * @param maxDepth
8
+ */
9
+ export declare function unnest(value: ExprValue, recursive?: boolean, maxDepth?: number): UnnestNode;
10
+ //# sourceMappingURL=unnest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unnest.d.ts","sourceRoot":"","sources":["../../../src/functions/unnest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,UAAQ,EAAE,QAAQ,SAAI,cAEvE"}
@@ -0,0 +1,12 @@
1
+ import { asNode } from "../util/ast.js";
2
+ import { UnnestNode } from "../ast/unnest.js";
3
+ /**
4
+ * Create an Unnest Node to flatten nested structures, either structs or lists.
5
+ * @param value
6
+ * @param recursive
7
+ * @param maxDepth
8
+ */
9
+ export function unnest(value, recursive = false, maxDepth = 0) {
10
+ return new UnnestNode(asNode(value), recursive, maxDepth);
11
+ }
12
+ //# sourceMappingURL=unnest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unnest.js","sourceRoot":"","sources":["../../../src/functions/unnest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAgB,EAAE,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,CAAC;IACtE,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC5D,CAAC"}