@uwdata/mosaic-sql 0.16.2 → 0.18.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 (469) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +0 -2
  3. package/dist/src/ast/aggregate.d.ts +82 -0
  4. package/dist/src/ast/aggregate.d.ts.map +1 -0
  5. package/dist/src/ast/aggregate.js +180 -0
  6. package/dist/src/ast/aggregate.js.map +1 -0
  7. package/dist/src/ast/between-op.d.ts +46 -0
  8. package/dist/src/ast/between-op.d.ts.map +1 -0
  9. package/dist/src/ast/between-op.js +60 -0
  10. package/dist/src/ast/between-op.js.map +1 -0
  11. package/dist/src/ast/binary-op.d.ts +21 -0
  12. package/dist/src/ast/binary-op.d.ts.map +1 -0
  13. package/dist/src/ast/binary-op.js +29 -0
  14. package/dist/src/ast/binary-op.js.map +1 -0
  15. package/dist/src/ast/case.d.ts +53 -0
  16. package/dist/src/ast/case.d.ts.map +1 -0
  17. package/dist/src/ast/case.js +75 -0
  18. package/dist/src/ast/case.js.map +1 -0
  19. package/dist/src/ast/cast.d.ts +18 -0
  20. package/dist/src/ast/cast.d.ts.map +1 -0
  21. package/dist/src/ast/cast.js +26 -0
  22. package/dist/src/ast/cast.js.map +1 -0
  23. package/dist/src/ast/collate.d.ts +18 -0
  24. package/dist/src/ast/collate.d.ts.map +1 -0
  25. package/dist/src/ast/collate.js +25 -0
  26. package/dist/src/ast/collate.js.map +1 -0
  27. package/dist/src/ast/column-param.d.ts +23 -0
  28. package/dist/src/ast/column-param.d.ts.map +1 -0
  29. package/dist/src/ast/column-param.js +29 -0
  30. package/dist/src/ast/column-param.js.map +1 -0
  31. package/dist/src/ast/column-ref.d.ts +40 -0
  32. package/dist/src/ast/column-ref.d.ts.map +1 -0
  33. package/dist/src/ast/column-ref.js +58 -0
  34. package/dist/src/ast/column-ref.js.map +1 -0
  35. package/dist/src/ast/fragment.d.ts +20 -0
  36. package/dist/src/ast/fragment.d.ts.map +1 -0
  37. package/dist/src/ast/fragment.js +26 -0
  38. package/dist/src/ast/fragment.js.map +1 -0
  39. package/dist/src/ast/from.d.ts +22 -0
  40. package/dist/src/ast/from.d.ts.map +1 -0
  41. package/dist/src/ast/from.js +37 -0
  42. package/dist/src/ast/from.js.map +1 -0
  43. package/dist/src/ast/function.d.ts +18 -0
  44. package/dist/src/ast/function.d.ts.map +1 -0
  45. package/dist/src/ast/function.js +26 -0
  46. package/dist/src/ast/function.js.map +1 -0
  47. package/dist/src/ast/in-op.d.ts +18 -0
  48. package/dist/src/ast/in-op.d.ts.map +1 -0
  49. package/dist/src/ast/in-op.js +25 -0
  50. package/dist/src/ast/in-op.js.map +1 -0
  51. package/dist/src/ast/interval.d.ts +18 -0
  52. package/dist/src/ast/interval.d.ts.map +1 -0
  53. package/dist/src/ast/interval.js +25 -0
  54. package/dist/src/ast/interval.js.map +1 -0
  55. package/dist/src/ast/literal.d.ts +16 -0
  56. package/dist/src/ast/literal.d.ts.map +1 -0
  57. package/dist/src/ast/literal.js +53 -0
  58. package/dist/src/ast/literal.js.map +1 -0
  59. package/dist/src/ast/logical-op.d.ts +32 -0
  60. package/dist/src/ast/logical-op.d.ts.map +1 -0
  61. package/dist/src/ast/logical-op.js +46 -0
  62. package/dist/src/ast/logical-op.js.map +1 -0
  63. package/dist/src/ast/node.d.ts +25 -0
  64. package/dist/src/ast/node.d.ts.map +1 -0
  65. package/dist/src/ast/node.js +36 -0
  66. package/dist/src/ast/node.js.map +1 -0
  67. package/dist/src/ast/order-by.d.ts +21 -0
  68. package/dist/src/ast/order-by.d.ts.map +1 -0
  69. package/dist/src/ast/order-by.js +36 -0
  70. package/dist/src/ast/order-by.js.map +1 -0
  71. package/dist/{types → src}/ast/param.d.ts +11 -11
  72. package/dist/src/ast/param.d.ts.map +1 -0
  73. package/dist/src/ast/param.js +28 -0
  74. package/dist/src/ast/param.js.map +1 -0
  75. package/dist/src/ast/query.d.ts +294 -0
  76. package/dist/src/ast/query.d.ts.map +1 -0
  77. package/dist/src/ast/query.js +584 -0
  78. package/dist/src/ast/query.js.map +1 -0
  79. package/dist/src/ast/sample.d.ts +27 -0
  80. package/dist/src/ast/sample.d.ts.map +1 -0
  81. package/dist/src/ast/sample.js +38 -0
  82. package/dist/src/ast/sample.js.map +1 -0
  83. package/dist/src/ast/select.d.ts +19 -0
  84. package/dist/src/ast/select.d.ts.map +1 -0
  85. package/dist/src/ast/select.js +35 -0
  86. package/dist/src/ast/select.js.map +1 -0
  87. package/dist/src/ast/subquery.d.ts +16 -0
  88. package/dist/src/ast/subquery.d.ts.map +1 -0
  89. package/dist/src/ast/subquery.js +21 -0
  90. package/dist/src/ast/subquery.js.map +1 -0
  91. package/dist/src/ast/table-ref.d.ts +24 -0
  92. package/dist/src/ast/table-ref.d.ts.map +1 -0
  93. package/dist/src/ast/table-ref.js +35 -0
  94. package/dist/src/ast/table-ref.js.map +1 -0
  95. package/dist/src/ast/unary-op.d.ts +40 -0
  96. package/dist/src/ast/unary-op.d.ts.map +1 -0
  97. package/dist/src/ast/unary-op.js +52 -0
  98. package/dist/src/ast/unary-op.js.map +1 -0
  99. package/dist/src/ast/verbatim.d.ts +18 -0
  100. package/dist/src/ast/verbatim.d.ts.map +1 -0
  101. package/dist/src/ast/verbatim.js +25 -0
  102. package/dist/src/ast/verbatim.js.map +1 -0
  103. package/dist/src/ast/window-frame.d.ts +54 -0
  104. package/dist/src/ast/window-frame.d.ts.map +1 -0
  105. package/dist/src/ast/window-frame.js +79 -0
  106. package/dist/src/ast/window-frame.js.map +1 -0
  107. package/dist/src/ast/window.d.ts +128 -0
  108. package/dist/src/ast/window.d.ts.map +1 -0
  109. package/dist/src/ast/window.js +194 -0
  110. package/dist/src/ast/window.js.map +1 -0
  111. package/dist/{types → src}/ast/with.d.ts +15 -22
  112. package/dist/src/ast/with.d.ts.map +1 -0
  113. package/dist/src/ast/with.js +36 -0
  114. package/dist/src/ast/with.js.map +1 -0
  115. package/dist/src/constants.d.ts +38 -0
  116. package/dist/src/constants.d.ts.map +1 -0
  117. package/dist/src/constants.js +38 -0
  118. package/dist/src/constants.js.map +1 -0
  119. package/dist/src/functions/aggregate.d.ts +236 -0
  120. package/dist/src/functions/aggregate.d.ts.map +1 -0
  121. package/dist/src/functions/aggregate.js +308 -0
  122. package/dist/src/functions/aggregate.js.map +1 -0
  123. package/dist/{types → src}/functions/case.d.ts +7 -7
  124. package/dist/src/functions/case.d.ts.map +1 -0
  125. package/dist/src/functions/case.js +17 -0
  126. package/dist/src/functions/case.js.map +1 -0
  127. package/dist/src/functions/cast.d.ts +23 -0
  128. package/dist/src/functions/cast.d.ts.map +1 -0
  129. package/dist/src/functions/cast.js +32 -0
  130. package/dist/src/functions/cast.js.map +1 -0
  131. package/dist/src/functions/collate.d.ts +10 -0
  132. package/dist/src/functions/collate.d.ts.map +1 -0
  133. package/dist/src/functions/collate.js +12 -0
  134. package/dist/src/functions/collate.js.map +1 -0
  135. package/dist/src/functions/column.d.ts +10 -0
  136. package/dist/src/functions/column.d.ts.map +1 -0
  137. package/dist/src/functions/column.js +17 -0
  138. package/dist/src/functions/column.js.map +1 -0
  139. package/dist/{types → src}/functions/cte.d.ts +7 -7
  140. package/dist/src/functions/cte.d.ts.map +1 -0
  141. package/dist/src/functions/cte.js +14 -0
  142. package/dist/src/functions/cte.js.map +1 -0
  143. package/dist/src/functions/datetime.d.ts +32 -0
  144. package/dist/src/functions/datetime.d.ts.map +1 -0
  145. package/dist/src/functions/datetime.js +45 -0
  146. package/dist/src/functions/datetime.js.map +1 -0
  147. package/dist/src/functions/interval.d.ts +48 -0
  148. package/dist/src/functions/interval.d.ts.map +1 -0
  149. package/dist/src/functions/interval.js +66 -0
  150. package/dist/src/functions/interval.js.map +1 -0
  151. package/dist/{types → src}/functions/literal.d.ts +8 -8
  152. package/dist/src/functions/literal.d.ts.map +1 -0
  153. package/dist/src/functions/literal.js +20 -0
  154. package/dist/src/functions/literal.js.map +1 -0
  155. package/dist/src/functions/numeric.d.ts +80 -0
  156. package/dist/src/functions/numeric.d.ts.map +1 -0
  157. package/dist/src/functions/numeric.js +110 -0
  158. package/dist/src/functions/numeric.js.map +1 -0
  159. package/dist/src/functions/operators.d.ts +169 -0
  160. package/dist/src/functions/operators.d.ts.map +1 -0
  161. package/dist/src/functions/operators.js +235 -0
  162. package/dist/src/functions/operators.js.map +1 -0
  163. package/dist/src/functions/order-by.d.ts +15 -0
  164. package/dist/src/functions/order-by.d.ts.map +1 -0
  165. package/dist/src/functions/order-by.js +19 -0
  166. package/dist/src/functions/order-by.js.map +1 -0
  167. package/dist/src/functions/spatial.d.ts +32 -0
  168. package/dist/src/functions/spatial.d.ts.map +1 -0
  169. package/dist/src/functions/spatial.js +44 -0
  170. package/dist/src/functions/spatial.js.map +1 -0
  171. package/dist/{types → src}/functions/sql-template-tag.d.ts +8 -10
  172. package/dist/src/functions/sql-template-tag.d.ts.map +1 -0
  173. package/dist/src/functions/sql-template-tag.js +44 -0
  174. package/dist/src/functions/sql-template-tag.js.map +1 -0
  175. package/dist/src/functions/string.d.ts +49 -0
  176. package/dist/src/functions/string.d.ts.map +1 -0
  177. package/dist/src/functions/string.js +67 -0
  178. package/dist/src/functions/string.js.map +1 -0
  179. package/dist/src/functions/table-ref.d.ts +10 -0
  180. package/dist/src/functions/table-ref.d.ts.map +1 -0
  181. package/dist/src/functions/table-ref.js +13 -0
  182. package/dist/src/functions/table-ref.js.map +1 -0
  183. package/dist/src/functions/util.d.ts +7 -0
  184. package/dist/src/functions/util.d.ts.map +1 -0
  185. package/dist/src/functions/util.js +9 -0
  186. package/dist/src/functions/util.js.map +1 -0
  187. package/dist/src/functions/window-frame.d.ts +41 -0
  188. package/dist/src/functions/window-frame.d.ts.map +1 -0
  189. package/dist/src/functions/window-frame.js +52 -0
  190. package/dist/src/functions/window-frame.js.map +1 -0
  191. package/dist/{types → src}/functions/window.d.ts +24 -39
  192. package/dist/src/functions/window.d.ts.map +1 -0
  193. package/dist/src/functions/window.js +96 -0
  194. package/dist/src/functions/window.js.map +1 -0
  195. package/dist/src/index.d.ts +69 -0
  196. package/dist/src/index.d.ts.map +1 -0
  197. package/{src → dist/src}/index.js +16 -12
  198. package/dist/src/index.js.map +1 -0
  199. package/dist/src/load/create.d.ts +10 -0
  200. package/dist/src/load/create.d.ts.map +1 -0
  201. package/dist/src/load/create.js +14 -0
  202. package/dist/src/load/create.js.map +1 -0
  203. package/dist/src/load/extension.d.ts +2 -0
  204. package/dist/src/load/extension.d.ts.map +1 -0
  205. package/dist/src/load/extension.js +4 -0
  206. package/dist/src/load/extension.js.map +1 -0
  207. package/dist/src/load/load.d.ts +18 -0
  208. package/dist/src/load/load.d.ts.map +1 -0
  209. package/dist/src/load/load.js +80 -0
  210. package/dist/src/load/load.js.map +1 -0
  211. package/dist/src/load/sql-from.d.ts +14 -0
  212. package/dist/src/load/sql-from.d.ts.map +1 -0
  213. package/dist/src/load/sql-from.js +29 -0
  214. package/dist/src/load/sql-from.js.map +1 -0
  215. package/dist/src/transforms/bin-1d.d.ts +16 -0
  216. package/dist/src/transforms/bin-1d.d.ts.map +1 -0
  217. package/dist/src/transforms/bin-1d.js +21 -0
  218. package/dist/src/transforms/bin-1d.js.map +1 -0
  219. package/dist/src/transforms/bin-2d.d.ts +19 -0
  220. package/dist/src/transforms/bin-2d.d.ts.map +1 -0
  221. package/dist/src/transforms/bin-2d.js +27 -0
  222. package/dist/src/transforms/bin-2d.js.map +1 -0
  223. package/dist/src/transforms/bin-date.d.ts +31 -0
  224. package/dist/src/transforms/bin-date.d.ts.map +1 -0
  225. package/dist/src/transforms/bin-date.js +20 -0
  226. package/dist/src/transforms/bin-date.js.map +1 -0
  227. package/dist/src/transforms/bin-histogram.d.ts +37 -0
  228. package/dist/src/transforms/bin-histogram.d.ts.map +1 -0
  229. package/dist/src/transforms/bin-histogram.js +32 -0
  230. package/dist/src/transforms/bin-histogram.js.map +1 -0
  231. package/dist/src/transforms/bin-linear-1d.d.ts +11 -0
  232. package/dist/src/transforms/bin-linear-1d.d.ts.map +1 -0
  233. package/dist/src/transforms/bin-linear-1d.js +25 -0
  234. package/dist/src/transforms/bin-linear-1d.js.map +1 -0
  235. package/dist/src/transforms/bin-linear-2d.d.ts +20 -0
  236. package/dist/src/transforms/bin-linear-2d.d.ts.map +1 -0
  237. package/dist/src/transforms/bin-linear-2d.js +49 -0
  238. package/dist/src/transforms/bin-linear-2d.js.map +1 -0
  239. package/dist/src/transforms/filter-query.d.ts +12 -0
  240. package/dist/src/transforms/filter-query.d.ts.map +1 -0
  241. package/dist/src/transforms/filter-query.js +39 -0
  242. package/dist/src/transforms/filter-query.js.map +1 -0
  243. package/dist/src/transforms/line-density.d.ts +24 -0
  244. package/dist/src/transforms/line-density.d.ts.map +1 -0
  245. package/dist/src/transforms/line-density.js +98 -0
  246. package/dist/src/transforms/line-density.js.map +1 -0
  247. package/dist/src/transforms/m4.d.ts +19 -0
  248. package/dist/src/transforms/m4.d.ts.map +1 -0
  249. package/dist/src/transforms/m4.js +38 -0
  250. package/dist/src/transforms/m4.js.map +1 -0
  251. package/dist/src/transforms/scales.d.ts +30 -0
  252. package/dist/src/transforms/scales.d.ts.map +1 -0
  253. package/dist/src/transforms/scales.js +103 -0
  254. package/dist/src/transforms/scales.js.map +1 -0
  255. package/dist/src/transforms/util/bin-step.d.ts +50 -0
  256. package/dist/src/transforms/util/bin-step.d.ts.map +1 -0
  257. package/dist/src/transforms/util/bin-step.js +53 -0
  258. package/dist/src/transforms/util/bin-step.js.map +1 -0
  259. package/dist/src/transforms/util/time-interval.d.ts +14 -0
  260. package/dist/src/transforms/util/time-interval.d.ts.map +1 -0
  261. package/dist/src/transforms/util/time-interval.js +88 -0
  262. package/dist/src/transforms/util/time-interval.js.map +1 -0
  263. package/dist/{types → src}/types.d.ts +6 -19
  264. package/dist/src/types.d.ts.map +1 -0
  265. package/dist/src/types.js +2 -0
  266. package/dist/src/types.js.map +1 -0
  267. package/dist/{types → src}/util/ast.d.ts +26 -25
  268. package/dist/src/util/ast.d.ts.map +1 -0
  269. package/{src → dist/src}/util/ast.js +36 -41
  270. package/dist/src/util/ast.js.map +1 -0
  271. package/dist/src/util/function.d.ts +56 -0
  272. package/dist/src/util/function.d.ts.map +1 -0
  273. package/dist/src/util/function.js +73 -0
  274. package/dist/src/util/function.js.map +1 -0
  275. package/dist/src/util/identity.d.ts +6 -0
  276. package/dist/src/util/identity.d.ts.map +1 -0
  277. package/dist/src/util/identity.js +8 -0
  278. package/dist/src/util/identity.js.map +1 -0
  279. package/dist/src/util/string.d.ts +4 -0
  280. package/dist/src/util/string.d.ts.map +1 -0
  281. package/dist/src/util/string.js +14 -0
  282. package/dist/src/util/string.js.map +1 -0
  283. package/dist/src/util/type-check.d.ts +17 -0
  284. package/dist/src/util/type-check.d.ts.map +1 -0
  285. package/dist/src/util/type-check.js +28 -0
  286. package/dist/src/util/type-check.js.map +1 -0
  287. package/dist/src/visit/clone.d.ts +7 -0
  288. package/dist/src/visit/clone.d.ts.map +1 -0
  289. package/dist/src/visit/clone.js +52 -0
  290. package/dist/src/visit/clone.js.map +1 -0
  291. package/dist/src/visit/recurse.d.ts +2 -0
  292. package/dist/src/visit/recurse.d.ts.map +1 -0
  293. package/dist/src/visit/recurse.js +36 -0
  294. package/dist/src/visit/recurse.js.map +1 -0
  295. package/dist/src/visit/rewrite.d.ts +9 -0
  296. package/dist/src/visit/rewrite.d.ts.map +1 -0
  297. package/dist/src/visit/rewrite.js +39 -0
  298. package/dist/src/visit/rewrite.js.map +1 -0
  299. package/dist/{types → src}/visit/visitors.d.ts +14 -16
  300. package/dist/src/visit/visitors.d.ts.map +1 -0
  301. package/dist/src/visit/visitors.js +95 -0
  302. package/dist/src/visit/visitors.js.map +1 -0
  303. package/dist/src/visit/walk.d.ts +21 -0
  304. package/dist/src/visit/walk.d.ts.map +1 -0
  305. package/dist/src/visit/walk.js +32 -0
  306. package/dist/src/visit/walk.js.map +1 -0
  307. package/package.json +12 -10
  308. package/src/ast/aggregate.ts +198 -0
  309. package/src/ast/{between-op.js → between-op.ts} +19 -26
  310. package/src/ast/binary-op.ts +31 -0
  311. package/src/ast/{case.js → case.ts} +29 -44
  312. package/src/ast/{cast.js → cast.ts} +8 -14
  313. package/src/ast/collate.ts +27 -0
  314. package/src/ast/column-param.ts +34 -0
  315. package/src/ast/{column-ref.js → column-ref.ts} +16 -25
  316. package/src/ast/fragment.ts +28 -0
  317. package/src/ast/from.ts +40 -0
  318. package/src/ast/{function.js → function.ts} +8 -14
  319. package/src/ast/{in-op.js → in-op.ts} +8 -14
  320. package/src/ast/{interval.js → interval.ts} +8 -14
  321. package/src/ast/{literal.js → literal.ts} +6 -9
  322. package/src/ast/logical-op.ts +50 -0
  323. package/src/ast/node.ts +39 -0
  324. package/src/ast/order-by.ts +38 -0
  325. package/src/ast/{param.js → param.ts} +6 -12
  326. package/src/ast/{query.js → query.ts} +193 -205
  327. package/src/ast/sample.ts +47 -0
  328. package/src/ast/{select.js → select.ts} +10 -16
  329. package/src/ast/subquery.ts +24 -0
  330. package/src/ast/{table-ref.js → table-ref.ts} +7 -12
  331. package/src/ast/{unary-op.js → unary-op.ts} +16 -23
  332. package/src/ast/{verbatim.js → verbatim.ts} +9 -8
  333. package/src/ast/window-frame.ts +97 -0
  334. package/src/ast/window.ts +246 -0
  335. package/src/ast/{with.js → with.ts} +19 -20
  336. package/src/{constants.js → constants.ts} +5 -6
  337. package/src/functions/aggregate.ts +344 -0
  338. package/src/functions/{case.js → case.ts} +5 -8
  339. package/src/functions/{cast.js → cast.ts} +9 -13
  340. package/src/functions/collate.ts +13 -0
  341. package/src/functions/{column.js → column.ts} +9 -10
  342. package/src/functions/{cte.js → cte.ts} +9 -6
  343. package/src/functions/datetime.ts +50 -0
  344. package/src/functions/interval.ts +74 -0
  345. package/src/functions/{literal.js → literal.ts} +6 -7
  346. package/src/functions/numeric.ts +125 -0
  347. package/src/functions/operators.ts +272 -0
  348. package/src/functions/order-by.ts +21 -0
  349. package/src/functions/spatial.ts +50 -0
  350. package/src/functions/{sql-template-tag.js → sql-template-tag.ts} +16 -13
  351. package/src/functions/string.ts +79 -0
  352. package/src/functions/{table-ref.js → table-ref.ts} +4 -4
  353. package/src/functions/util.ts +10 -0
  354. package/src/functions/window-frame.ts +58 -0
  355. package/src/functions/{window.js → window.ts} +18 -35
  356. package/src/index.ts +75 -0
  357. package/src/load/{create.js → create.ts} +9 -3
  358. package/src/load/extension.ts +3 -0
  359. package/src/load/{load.js → load.ts} +26 -11
  360. package/src/load/{sql-from.js → sql-from.ts} +14 -7
  361. package/src/transforms/{bin-1d.js → bin-1d.ts} +13 -9
  362. package/src/transforms/{bin-2d.js → bin-2d.ts} +17 -13
  363. package/src/transforms/bin-date.ts +48 -0
  364. package/src/transforms/bin-histogram.ts +61 -0
  365. package/src/transforms/{bin-linear-1d.js → bin-linear-1d.ts} +16 -11
  366. package/src/transforms/{bin-linear-2d.js → bin-linear-2d.ts} +23 -35
  367. package/src/transforms/filter-query.ts +40 -0
  368. package/src/transforms/{line-density.js → line-density.ts} +19 -17
  369. package/src/transforms/{m4.js → m4.ts} +17 -14
  370. package/src/transforms/{scales.js → scales.ts} +57 -14
  371. package/src/transforms/util/bin-step.ts +100 -0
  372. package/src/transforms/util/{time-interval.js → time-interval.ts} +32 -21
  373. package/src/types.ts +5 -30
  374. package/src/util/ast.ts +104 -0
  375. package/src/util/{function.js → function.ts} +40 -31
  376. package/src/util/identity.ts +7 -0
  377. package/src/util/{string.js → string.ts} +4 -4
  378. package/src/util/type-check.ts +31 -0
  379. package/src/visit/clone.ts +53 -0
  380. package/src/visit/{recurse.js → recurse.ts} +18 -6
  381. package/src/visit/{rewrite.js → rewrite.ts} +10 -18
  382. package/src/visit/{visitors.js → visitors.ts} +22 -30
  383. package/src/visit/walk.ts +46 -0
  384. package/dist/types/ast/aggregate.d.ts +0 -71
  385. package/dist/types/ast/between-op.d.ts +0 -46
  386. package/dist/types/ast/binary-op.d.ts +0 -28
  387. package/dist/types/ast/case.d.ts +0 -67
  388. package/dist/types/ast/cast.d.ts +0 -21
  389. package/dist/types/ast/column-param.d.ts +0 -23
  390. package/dist/types/ast/column-ref.d.ts +0 -40
  391. package/dist/types/ast/fragment.d.ts +0 -14
  392. package/dist/types/ast/from.d.ts +0 -21
  393. package/dist/types/ast/function.d.ts +0 -21
  394. package/dist/types/ast/in-op.d.ts +0 -21
  395. package/dist/types/ast/interval.d.ts +0 -21
  396. package/dist/types/ast/literal.d.ts +0 -15
  397. package/dist/types/ast/logical-op.d.ts +0 -46
  398. package/dist/types/ast/node.d.ts +0 -24
  399. package/dist/types/ast/order-by.d.ts +0 -29
  400. package/dist/types/ast/query.d.ts +0 -320
  401. package/dist/types/ast/sample.d.ts +0 -42
  402. package/dist/types/ast/select.d.ts +0 -22
  403. package/dist/types/ast/table-ref.d.ts +0 -25
  404. package/dist/types/ast/unary-op.d.ts +0 -39
  405. package/dist/types/ast/verbatim.d.ts +0 -9
  406. package/dist/types/ast/window.d.ts +0 -180
  407. package/dist/types/constants.d.ts +0 -38
  408. package/dist/types/functions/aggregate.d.ts +0 -236
  409. package/dist/types/functions/cast.d.ts +0 -26
  410. package/dist/types/functions/column.d.ts +0 -11
  411. package/dist/types/functions/datetime.d.ts +0 -45
  412. package/dist/types/functions/numeric.d.ts +0 -95
  413. package/dist/types/functions/operators.d.ts +0 -200
  414. package/dist/types/functions/order-by.d.ts +0 -18
  415. package/dist/types/functions/spatial.d.ts +0 -38
  416. package/dist/types/functions/string.d.ts +0 -57
  417. package/dist/types/functions/table-ref.d.ts +0 -9
  418. package/dist/types/functions/util.d.ts +0 -8
  419. package/dist/types/index-types.d.ts +0 -2
  420. package/dist/types/index.d.ts +0 -59
  421. package/dist/types/load/create.d.ts +0 -8
  422. package/dist/types/load/extension.d.ts +0 -1
  423. package/dist/types/load/load.d.ts +0 -12
  424. package/dist/types/load/sql-from.d.ts +0 -11
  425. package/dist/types/transforms/bin-1d.d.ts +0 -15
  426. package/dist/types/transforms/bin-2d.d.ts +0 -19
  427. package/dist/types/transforms/bin-date.d.ts +0 -44
  428. package/dist/types/transforms/bin-histogram.d.ts +0 -51
  429. package/dist/types/transforms/bin-linear-1d.d.ts +0 -12
  430. package/dist/types/transforms/bin-linear-2d.d.ts +0 -19
  431. package/dist/types/transforms/line-density.d.ts +0 -24
  432. package/dist/types/transforms/m4.d.ts +0 -21
  433. package/dist/types/transforms/scales.d.ts +0 -1
  434. package/dist/types/transforms/util/bin-step.d.ts +0 -61
  435. package/dist/types/transforms/util/time-interval.d.ts +0 -13
  436. package/dist/types/util/function.d.ts +0 -56
  437. package/dist/types/util/string.d.ts +0 -3
  438. package/dist/types/util/type-check.d.ts +0 -22
  439. package/dist/types/visit/recurse.d.ts +0 -28
  440. package/dist/types/visit/rewrite.d.ts +0 -10
  441. package/dist/types/visit/walk.d.ts +0 -10
  442. package/jsconfig.json +0 -11
  443. package/src/ast/aggregate.js +0 -167
  444. package/src/ast/binary-op.js +0 -40
  445. package/src/ast/column-param.js +0 -40
  446. package/src/ast/fragment.js +0 -26
  447. package/src/ast/from.js +0 -40
  448. package/src/ast/logical-op.js +0 -67
  449. package/src/ast/node.js +0 -29
  450. package/src/ast/order-by.js +0 -48
  451. package/src/ast/sample.js +0 -53
  452. package/src/ast/window.js +0 -294
  453. package/src/functions/aggregate.js +0 -347
  454. package/src/functions/datetime.js +0 -68
  455. package/src/functions/numeric.js +0 -143
  456. package/src/functions/operators.js +0 -301
  457. package/src/functions/order-by.js +0 -27
  458. package/src/functions/spatial.js +0 -59
  459. package/src/functions/string.js +0 -85
  460. package/src/functions/util.js +0 -14
  461. package/src/index-types.ts +0 -2
  462. package/src/load/extension.js +0 -3
  463. package/src/transforms/bin-date.js +0 -37
  464. package/src/transforms/bin-histogram.js +0 -52
  465. package/src/transforms/util/bin-step.js +0 -79
  466. package/src/util/type-check.js +0 -33
  467. package/src/visit/walk.js +0 -35
  468. package/tsconfig.json +0 -12
  469. package/vitest.config.ts +0 -3
@@ -0,0 +1,584 @@
1
+ import { DESCRIBE_QUERY, SELECT_QUERY, SET_OPERATION } from '../constants.js';
2
+ import { asNode, asVerbatim, maybeTableRef } from '../util/ast.js';
3
+ import { exprList, nodeList } from '../util/function.js';
4
+ import { unquote } from '../util/string.js';
5
+ import { isArray, isString } from '../util/type-check.js';
6
+ import { isColumnRef } from './column-ref.js';
7
+ import { FromClauseNode } from './from.js';
8
+ import { ExprNode, SQLNode, isNode } from './node.js';
9
+ import { SampleClauseNode } from './sample.js';
10
+ import { SelectClauseNode } from './select.js';
11
+ import { isTableRef } from './table-ref.js';
12
+ import { WindowClauseNode } from './window.js';
13
+ import { WithClauseNode } from './with.js';
14
+ /**
15
+ * Check if a value is a selection query or set operation.
16
+ * @param value The value to check.
17
+ */
18
+ export function isQuery(value) {
19
+ return value instanceof Query;
20
+ }
21
+ /**
22
+ * Check if a value is a selection query.
23
+ * @param value The value to check.
24
+ */
25
+ export function isSelectQuery(value) {
26
+ return value instanceof SelectQuery;
27
+ }
28
+ /**
29
+ * Check if a value is a describe query.
30
+ * @param value The value to check.
31
+ */
32
+ export function isDescribeQuery(value) {
33
+ return value instanceof DescribeQuery;
34
+ }
35
+ export class Query extends ExprNode {
36
+ /**
37
+ * Create a new WITH clause with the given CTE queries.
38
+ * @param expr The WITH CTE queries.
39
+ */
40
+ static with(...expr) {
41
+ return new WithClause(...expr);
42
+ }
43
+ /**
44
+ * Create a new select query with the given SELECT expressions.
45
+ * @param expr The SELECT expressions.
46
+ */
47
+ static select(...expr) {
48
+ return new SelectQuery().select(...expr);
49
+ }
50
+ /**
51
+ * Create a new select query with the given FROM expressions.
52
+ * @param expr The FROM expressions.
53
+ */
54
+ static from(...expr) {
55
+ return new SelectQuery().from(...expr);
56
+ }
57
+ /**
58
+ * Create a new UNION set operation over the given queries.
59
+ * @param queries The queries.
60
+ */
61
+ static union(...queries) {
62
+ return new SetOperation('UNION', queries.flat());
63
+ }
64
+ /**
65
+ * Create a new UNION ALL set operation over the given queries.
66
+ * @param queries The queries.
67
+ */
68
+ static unionAll(...queries) {
69
+ return new SetOperation('UNION ALL', queries.flat());
70
+ }
71
+ /**
72
+ * Create a new INTERSECT set operation over the given queries.
73
+ * @param queries The queries.
74
+ */
75
+ static intersect(...queries) {
76
+ return new SetOperation('INTERSECT', queries.flat());
77
+ }
78
+ /**
79
+ * Create a new EXCEPT set operation over the given queries.
80
+ * @param queries The queries.
81
+ */
82
+ static except(...queries) {
83
+ return new SetOperation('EXCEPT', queries.flat());
84
+ }
85
+ /**
86
+ * Create a new describe query for the given input query.
87
+ * @param query The query to describe.
88
+ */
89
+ static describe(query) {
90
+ return new DescribeQuery(query);
91
+ }
92
+ _with = [];
93
+ _orderby = [];
94
+ _limitPerc = false;
95
+ _limit;
96
+ _offset;
97
+ cteFor = null;
98
+ /**
99
+ * Instantiate a new query.
100
+ */
101
+ constructor(type) {
102
+ super(type);
103
+ }
104
+ /**
105
+ * Return a list of subqueries.
106
+ */
107
+ get subqueries() {
108
+ return [];
109
+ }
110
+ /**
111
+ * Clone this query.
112
+ */
113
+ clone() {
114
+ return this;
115
+ }
116
+ /**
117
+ * Add a pointer to the query for which this query is a CTE.
118
+ * @param query The query for which this query is a CTE.
119
+ */
120
+ setCteFor(query) {
121
+ this.cteFor = query;
122
+ }
123
+ /**
124
+ * Add WITH common table expressions (CTEs).
125
+ * @param expr Expressions to add.
126
+ */
127
+ with(...expr) {
128
+ const list = [];
129
+ const add = (name, q) => {
130
+ const query = q.clone();
131
+ query.setCteFor(this);
132
+ list.push(new WithClauseNode(name, query));
133
+ };
134
+ expr.flat().forEach(e => {
135
+ if (e instanceof WithClauseNode)
136
+ list.push(e);
137
+ else if (e != null)
138
+ for (const name in e)
139
+ add(name, e[name]);
140
+ });
141
+ this._with = this._with.concat(list);
142
+ return this;
143
+ }
144
+ /**
145
+ * Add ORDER BY expressions.
146
+ * @param expr Expressions to add.
147
+ */
148
+ orderby(...expr) {
149
+ this._orderby = this._orderby.concat(nodeList(expr));
150
+ return this;
151
+ }
152
+ /**
153
+ * Set the query result LIMIT as a percentage value.
154
+ * @param value The limit percentage value.
155
+ */
156
+ limitPercent(value) {
157
+ this._limitPerc = true;
158
+ this._limit = asNode(value);
159
+ return this;
160
+ }
161
+ /**
162
+ * Set the query result LIMIT.
163
+ * @param value The limit value.
164
+ */
165
+ limit(value) {
166
+ this._limitPerc = false;
167
+ this._limit = asNode(value);
168
+ return this;
169
+ }
170
+ /**
171
+ * Set the query result OFFSET.
172
+ * @param value The offset value.
173
+ */
174
+ offset(value) {
175
+ this._offset = asNode(value);
176
+ return this;
177
+ }
178
+ }
179
+ export class SelectQuery extends Query {
180
+ _select = [];
181
+ _from = [];
182
+ _where = [];
183
+ _sample;
184
+ _groupby = [];
185
+ _having = [];
186
+ _window = [];
187
+ _qualify = [];
188
+ _distinct = false;
189
+ /**
190
+ * Instantiate a new select query.
191
+ */
192
+ constructor() {
193
+ super(SELECT_QUERY);
194
+ }
195
+ /**
196
+ * Return a list of subqueries.
197
+ */
198
+ get subqueries() {
199
+ // build map of ctes within base query WITH clause
200
+ const q = this.cteFor || this;
201
+ const w = q instanceof SelectQuery ? q._with : [];
202
+ const cte = w.reduce((obj, c) => (obj[c.name] = c.query, obj), {});
203
+ // extract subqueries in FROM clause
204
+ // unused CTEs will be ignored
205
+ const queries = [];
206
+ this._from.forEach(({ expr }) => {
207
+ if (isQuery(expr)) {
208
+ queries.push(expr);
209
+ }
210
+ else if (isTableRef(expr)) {
211
+ const subq = cte[expr.name];
212
+ if (subq)
213
+ queries.push(subq);
214
+ }
215
+ });
216
+ return queries;
217
+ }
218
+ /**
219
+ * Clone this query.
220
+ */
221
+ clone() {
222
+ return Object.assign(new SelectQuery(), this);
223
+ }
224
+ /**
225
+ * Add SELECT expressions.
226
+ * @param expr Expressions to add.
227
+ */
228
+ select(...expr) {
229
+ const keys = new Set;
230
+ const list = [];
231
+ const add = (v, as) => {
232
+ const key = unquote(as);
233
+ keys.add(key);
234
+ if (v)
235
+ list.push(new SelectClauseNode(asNode(v), key));
236
+ };
237
+ expr.flat().forEach(e => {
238
+ if (e == null)
239
+ return;
240
+ else if (isString(e))
241
+ add(e, e);
242
+ else if (isColumnRef(e))
243
+ add(e, e.column);
244
+ else if (isArray(e))
245
+ add(e[1], e[0]);
246
+ else if (isNode(e))
247
+ add(e, `${e}`);
248
+ else
249
+ for (const alias in e)
250
+ add(e[alias], alias);
251
+ });
252
+ this._select = this._select.filter(x => !keys.has(x.alias)).concat(list);
253
+ return this;
254
+ }
255
+ /**
256
+ * Set SELECT expressions, replacing any prior expressions.
257
+ * @param expr Expressions to add.
258
+ */
259
+ setSelect(...expr) {
260
+ this._select = [];
261
+ return this.select(...expr);
262
+ }
263
+ /**
264
+ * Indicate if this query should retrieve distinct values only.
265
+ * @param value The distinct flag
266
+ */
267
+ distinct(value = true) {
268
+ this._distinct = !!value;
269
+ return this;
270
+ }
271
+ /**
272
+ * Add table FROM expressions.
273
+ * @param expr Expressions to add.
274
+ */
275
+ from(...expr) {
276
+ const list = [];
277
+ const add = (v, as) => {
278
+ list.push(new FromClauseNode(maybeTableRef(v), unquote(as)));
279
+ };
280
+ expr.flat().forEach(e => {
281
+ if (e == null)
282
+ return;
283
+ else if (e instanceof FromClauseNode)
284
+ list.push(e);
285
+ else if (isString(e))
286
+ add(e, e);
287
+ else if (isTableRef(e))
288
+ add(e, e.name);
289
+ else if (isNode(e))
290
+ add(e);
291
+ else if (isArray(e))
292
+ add(e[1], e[0]);
293
+ else
294
+ for (const alias in e)
295
+ add(e[alias], alias);
296
+ });
297
+ this._from = this._from.concat(list);
298
+ return this;
299
+ }
300
+ /**
301
+ * Set FROM expressions, replacing any prior expressions.
302
+ * @param expr Expressions to add.
303
+ */
304
+ setFrom(...expr) {
305
+ this._from = [];
306
+ return this.from(...expr);
307
+ }
308
+ /**
309
+ * Set SAMPLE settings.
310
+ * @param value Either a sample clause node or the sample size as either
311
+ * a row count or percentage.
312
+ * @param method The sampling method to use.
313
+ * @param seed The random seed.
314
+ */
315
+ sample(value, method, seed) {
316
+ let clause;
317
+ if (typeof value === 'number') {
318
+ const perc = value > 0 && value < 1;
319
+ const size = perc ? value * 100 : Math.floor(value);
320
+ clause = new SampleClauseNode(size, perc, method, seed);
321
+ }
322
+ else {
323
+ clause = value;
324
+ }
325
+ this._sample = clause;
326
+ return this;
327
+ }
328
+ /**
329
+ * Add WHERE expressions.
330
+ * @param expr Expressions to add.
331
+ */
332
+ where(...expr) {
333
+ this._where = this._where.concat(exprList(expr, asVerbatim));
334
+ return this;
335
+ }
336
+ /**
337
+ * Set WHERE expressions, replacing any prior expressions.
338
+ * @param expr Expressions to add.
339
+ */
340
+ setWhere(...expr) {
341
+ this._where = [];
342
+ return this.where(...expr);
343
+ }
344
+ /**
345
+ * Add GROUP BY expressions.
346
+ * @param expr Expressions to add.
347
+ */
348
+ groupby(...expr) {
349
+ this._groupby = this._groupby.concat(nodeList(expr));
350
+ return this;
351
+ }
352
+ /**
353
+ * Set GROUP BY expressions, replacing any prior expressions.
354
+ * @param expr Expressions to add.
355
+ */
356
+ setGroupby(...expr) {
357
+ this._groupby = [];
358
+ return this.groupby(...expr);
359
+ }
360
+ /**
361
+ * Add HAVING expressions.
362
+ * @param expr Expressions to add.
363
+ */
364
+ having(...expr) {
365
+ this._having = this._having.concat(exprList(expr, asVerbatim));
366
+ return this;
367
+ }
368
+ /**
369
+ * Add WINDOW definitions.
370
+ * @param expr Window definitions to add.
371
+ */
372
+ window(...expr) {
373
+ const list = [];
374
+ expr.flat().forEach(e => {
375
+ if (e != null)
376
+ for (const name in e) {
377
+ list.push(new WindowClauseNode(unquote(name), e[name]));
378
+ }
379
+ });
380
+ this._window = this._window.concat(list);
381
+ return this;
382
+ }
383
+ /**
384
+ * Add QUALIFY expressions.
385
+ * @param expr Expressions to add.
386
+ */
387
+ qualify(...expr) {
388
+ this._qualify = this._qualify.concat(exprList(expr, asVerbatim));
389
+ return this;
390
+ }
391
+ /**
392
+ * Generate a SQL query string.
393
+ */
394
+ toString() {
395
+ const { _with, _select, _distinct, _from, _sample, _where, _groupby, _having, _window, _qualify, _orderby, _limitPerc, _limit, _offset } = this;
396
+ const sql = [];
397
+ // WITH
398
+ if (_with.length)
399
+ sql.push(`WITH ${_with.join(', ')}`);
400
+ // SELECT
401
+ sql.push(`SELECT${_distinct ? ' DISTINCT' : ''} ${_select.join(', ')}`);
402
+ // FROM
403
+ if (_from.length)
404
+ sql.push(`FROM ${_from.join(', ')}`);
405
+ // WHERE
406
+ if (_where.length) {
407
+ const clauses = _where.map(String).filter(x => x).join(' AND ');
408
+ if (clauses)
409
+ sql.push(`WHERE ${clauses}`);
410
+ }
411
+ // SAMPLE
412
+ if (_sample)
413
+ sql.push(`USING SAMPLE ${_sample}`);
414
+ // GROUP BY
415
+ if (_groupby.length) {
416
+ sql.push(`GROUP BY ${_groupby.join(', ')}`);
417
+ }
418
+ // HAVING
419
+ if (_having.length) {
420
+ const clauses = _having.map(String).filter(x => x).join(' AND ');
421
+ if (clauses)
422
+ sql.push(`HAVING ${clauses}`);
423
+ }
424
+ // WINDOW
425
+ if (_window.length)
426
+ sql.push(`WINDOW ${_window.join(', ')}`);
427
+ // QUALIFY
428
+ if (_qualify.length) {
429
+ const clauses = _qualify.map(String).filter(x => x).join(' AND ');
430
+ if (clauses)
431
+ sql.push(`QUALIFY ${clauses}`);
432
+ }
433
+ // ORDER BY
434
+ if (_orderby.length)
435
+ sql.push(`ORDER BY ${_orderby.join(', ')}`);
436
+ // LIMIT
437
+ if (_limit)
438
+ sql.push(`LIMIT ${_limit}${_limitPerc ? '%' : ''}`);
439
+ // OFFSET
440
+ if (_offset)
441
+ sql.push(`OFFSET ${_offset}`);
442
+ return sql.join(' ');
443
+ }
444
+ }
445
+ export class DescribeQuery extends SQLNode {
446
+ query;
447
+ /**
448
+ * Instantiate a describe query.
449
+ * @param query The query to describe.
450
+ */
451
+ constructor(query) {
452
+ super(DESCRIBE_QUERY);
453
+ this.query = query;
454
+ }
455
+ /**
456
+ * Clone this describe query.
457
+ */
458
+ clone() {
459
+ // @ts-expect-error creates describe query
460
+ return new DescribeQuery(this.query.clone());
461
+ }
462
+ /**
463
+ * Generate a SQL query string.
464
+ */
465
+ toString() {
466
+ return `DESCRIBE ${this.query}`;
467
+ }
468
+ }
469
+ export class SetOperation extends Query {
470
+ /** The set operation to perform. */
471
+ op;
472
+ /** The input queries to the set operation. */
473
+ queries;
474
+ /**
475
+ * Instantiate a new set operation instance.
476
+ * @param op The set operation.
477
+ * @param queries The subqueries.
478
+ */
479
+ constructor(op, queries) {
480
+ super(SET_OPERATION);
481
+ this.op = op;
482
+ this.queries = queries;
483
+ }
484
+ /**
485
+ * Add a pointer to the query for which this query is a CTE.
486
+ * @param query The query for which this query is a CTE.
487
+ */
488
+ setCteFor(query) {
489
+ super.setCteFor(query);
490
+ const { queries, cteFor } = this;
491
+ if (cteFor)
492
+ queries.forEach(q => q.setCteFor(cteFor));
493
+ }
494
+ /**
495
+ * Return a list of subqueries.
496
+ */
497
+ get subqueries() {
498
+ return this.queries;
499
+ }
500
+ /**
501
+ * Clone this set operation.
502
+ */
503
+ clone() {
504
+ const { op, queries, ...rest } = this;
505
+ // @ts-expect-error creates set operation
506
+ return Object.assign(new SetOperation(op, queries), rest);
507
+ }
508
+ /**
509
+ * Generate a SQL query string.
510
+ */
511
+ toString() {
512
+ const { op, queries, _with, _orderby, _limitPerc, _limit, _offset } = this;
513
+ const sql = [];
514
+ // WITH
515
+ if (_with.length)
516
+ sql.push(`WITH ${_with.join(', ')}`);
517
+ // SUBQUERIES
518
+ sql.push(queries.join(` ${op} `));
519
+ // ORDER BY
520
+ if (_orderby.length)
521
+ sql.push(`ORDER BY ${_orderby.join(', ')}`);
522
+ // LIMIT
523
+ if (_limit)
524
+ sql.push(`LIMIT ${_limit}${_limitPerc ? '%' : ''}`);
525
+ // OFFSET
526
+ if (_offset)
527
+ sql.push(`OFFSET ${_offset}`);
528
+ return sql.join(' ');
529
+ }
530
+ }
531
+ class WithClause {
532
+ /** The common table expressions (CTE). */
533
+ _with;
534
+ /**
535
+ * Instantiate a new WITH clause instance.
536
+ * @param expr The WITH CTE queries.
537
+ */
538
+ constructor(...expr) {
539
+ this._with = expr;
540
+ }
541
+ /**
542
+ * Create a new select query with the given SELECT expressions.
543
+ * @param expr The SELECT expressions.
544
+ */
545
+ select(...expr) {
546
+ return Query.select(...expr).with(...this._with);
547
+ }
548
+ /**
549
+ * Create a new select query with the given FROM expressions.
550
+ * @param expr The FROM expressions.
551
+ */
552
+ from(...expr) {
553
+ return Query.from(...expr).with(...this._with);
554
+ }
555
+ /**
556
+ * Create a new UNION set operation over the given queries.
557
+ * @param queries The queries.
558
+ */
559
+ union(...queries) {
560
+ return Query.union(...queries).with(...this._with);
561
+ }
562
+ /**
563
+ * Create a new UNION ALL set operation over the given queries.
564
+ * @param queries The queries.
565
+ */
566
+ unionAll(...queries) {
567
+ return Query.unionAll(...queries).with(...this._with);
568
+ }
569
+ /**
570
+ * Create a new INTERSECT set operation over the given queries.
571
+ * @param queries The queries.
572
+ */
573
+ intersect(...queries) {
574
+ return Query.intersect(...queries).with(...this._with);
575
+ }
576
+ /**
577
+ * Create a new EXCEPT set operation over the given queries.
578
+ * @param queries The queries.
579
+ */
580
+ except(...queries) {
581
+ return Query.except(...queries).with(...this._with);
582
+ }
583
+ }
584
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/ast/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { SQLNode } from './node.js';
2
+ export type SampleMethod = 'reservoir' | 'bernoulli' | 'system';
3
+ export declare class SampleClauseNode extends SQLNode {
4
+ /** The sample size as either a row count or percentage. */
5
+ readonly size: number;
6
+ /** Flag if the sampling unit is rows (`false`) or percentage (`true`). */
7
+ readonly perc: boolean;
8
+ /** The sampling method. */
9
+ readonly method?: SampleMethod;
10
+ /** The random seed. */
11
+ readonly seed?: number;
12
+ /**
13
+ * Instantiate a sample clause node.
14
+ * @param size The sample size as either a row count or percentage.
15
+ * @param perc Flag indicating if the sampling unit is
16
+ * rows (`false`) or a percentage (`true`).
17
+ * @param method The sampling method. If unspecified,
18
+ * a default method is applied based on the sampling unit.
19
+ * @param seed The random seed.
20
+ */
21
+ constructor(size: number, perc?: boolean, method?: SampleMethod, seed?: number);
22
+ /**
23
+ * Generate a SQL query string for this node.
24
+ */
25
+ toString(): string;
26
+ }
27
+ //# sourceMappingURL=sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../../src/ast/sample.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEhE,qBAAa,gBAAiB,SAAQ,OAAO;IAC3C,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;;OAQG;gBAED,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,OAAe,EACrB,MAAM,CAAC,EAAE,YAAY,EACrB,IAAI,CAAC,EAAE,MAAM;IASf;;OAEG;IACH,QAAQ;CAMT"}
@@ -0,0 +1,38 @@
1
+ import { SAMPLE_CLAUSE } from '../constants.js';
2
+ import { SQLNode } from './node.js';
3
+ export class SampleClauseNode extends SQLNode {
4
+ /** The sample size as either a row count or percentage. */
5
+ size;
6
+ /** Flag if the sampling unit is rows (`false`) or percentage (`true`). */
7
+ perc;
8
+ /** The sampling method. */
9
+ method;
10
+ /** The random seed. */
11
+ seed;
12
+ /**
13
+ * Instantiate a sample clause node.
14
+ * @param size The sample size as either a row count or percentage.
15
+ * @param perc Flag indicating if the sampling unit is
16
+ * rows (`false`) or a percentage (`true`).
17
+ * @param method The sampling method. If unspecified,
18
+ * a default method is applied based on the sampling unit.
19
+ * @param seed The random seed.
20
+ */
21
+ constructor(size, perc = false, method, seed) {
22
+ super(SAMPLE_CLAUSE);
23
+ this.size = size;
24
+ this.perc = perc;
25
+ this.method = method;
26
+ this.seed = seed;
27
+ }
28
+ /**
29
+ * Generate a SQL query string for this node.
30
+ */
31
+ toString() {
32
+ const { size, perc, method, seed } = this;
33
+ const m = method ? `${method} ` : '';
34
+ const s = seed != null ? ` REPEATABLE (${seed})` : '';
35
+ return `${m}(${size}${perc ? '%' : ' ROWS'})${s}`;
36
+ }
37
+ }
38
+ //# sourceMappingURL=sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../../src/ast/sample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAC3C,2DAA2D;IAClD,IAAI,CAAS;IACtB,0EAA0E;IACjE,IAAI,CAAU;IACvB,2BAA2B;IAClB,MAAM,CAAgB;IAC/B,uBAAuB;IACd,IAAI,CAAU;IAEvB;;;;;;;;OAQG;IACH,YACE,IAAY,EACZ,OAAgB,KAAK,EACrB,MAAqB,EACrB,IAAa;QAEb,KAAK,CAAC,aAAa,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;CACF"}