@quereus/quereus 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/README.md +47 -23
  2. package/dist/src/common/types.d.ts +1 -0
  3. package/dist/src/common/types.d.ts.map +1 -1
  4. package/dist/src/core/database.d.ts +22 -4
  5. package/dist/src/core/database.d.ts.map +1 -1
  6. package/dist/src/core/database.js +44 -6
  7. package/dist/src/core/database.js.map +1 -1
  8. package/dist/src/core/statement.d.ts +0 -7
  9. package/dist/src/core/statement.d.ts.map +1 -1
  10. package/dist/src/core/statement.js +1 -51
  11. package/dist/src/core/statement.js.map +1 -1
  12. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  13. package/dist/src/func/builtins/explain.js +0 -11
  14. package/dist/src/func/builtins/explain.js.map +1 -1
  15. package/dist/src/index.d.ts +13 -5
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +5 -2
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/parser/ast.d.ts +10 -4
  20. package/dist/src/parser/ast.d.ts.map +1 -1
  21. package/dist/src/parser/parser.d.ts.map +1 -1
  22. package/dist/src/parser/parser.js +40 -44
  23. package/dist/src/parser/parser.js.map +1 -1
  24. package/dist/src/planner/analysis/const-pass.d.ts.map +1 -1
  25. package/dist/src/planner/analysis/const-pass.js +12 -6
  26. package/dist/src/planner/analysis/const-pass.js.map +1 -1
  27. package/dist/src/planner/building/constraint-builder.d.ts +11 -0
  28. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -0
  29. package/dist/src/planner/building/constraint-builder.js +79 -0
  30. package/dist/src/planner/building/constraint-builder.js.map +1 -0
  31. package/dist/src/planner/building/delete.d.ts.map +1 -1
  32. package/dist/src/planner/building/delete.js +7 -4
  33. package/dist/src/planner/building/delete.js.map +1 -1
  34. package/dist/src/planner/building/expression.d.ts +3 -0
  35. package/dist/src/planner/building/expression.d.ts.map +1 -1
  36. package/dist/src/planner/building/expression.js +33 -7
  37. package/dist/src/planner/building/expression.js.map +1 -1
  38. package/dist/src/planner/building/insert.d.ts.map +1 -1
  39. package/dist/src/planner/building/insert.js +5 -2
  40. package/dist/src/planner/building/insert.js.map +1 -1
  41. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  42. package/dist/src/planner/building/select-aggregates.js +46 -9
  43. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  44. package/dist/src/planner/building/select-context.js +20 -11
  45. package/dist/src/planner/building/select-context.js.map +1 -1
  46. package/dist/src/planner/building/select-modifiers.d.ts +5 -3
  47. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  48. package/dist/src/planner/building/select-modifiers.js +29 -20
  49. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  50. package/dist/src/planner/building/select-projections.d.ts +3 -1
  51. package/dist/src/planner/building/select-projections.d.ts.map +1 -1
  52. package/dist/src/planner/building/select-projections.js +15 -20
  53. package/dist/src/planner/building/select-projections.js.map +1 -1
  54. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  55. package/dist/src/planner/building/select-window.js +6 -3
  56. package/dist/src/planner/building/select-window.js.map +1 -1
  57. package/dist/src/planner/building/select.d.ts +25 -2
  58. package/dist/src/planner/building/select.d.ts.map +1 -1
  59. package/dist/src/planner/building/select.js +147 -24
  60. package/dist/src/planner/building/select.js.map +1 -1
  61. package/dist/src/planner/building/table.d.ts +0 -10
  62. package/dist/src/planner/building/table.d.ts.map +1 -1
  63. package/dist/src/planner/building/table.js +1 -35
  64. package/dist/src/planner/building/table.js.map +1 -1
  65. package/dist/src/planner/building/update.d.ts.map +1 -1
  66. package/dist/src/planner/building/update.js +8 -5
  67. package/dist/src/planner/building/update.js.map +1 -1
  68. package/dist/src/planner/building/with.d.ts.map +1 -1
  69. package/dist/src/planner/building/with.js +7 -8
  70. package/dist/src/planner/building/with.js.map +1 -1
  71. package/dist/src/planner/cache/correlation-detector.d.ts +11 -0
  72. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -0
  73. package/dist/src/planner/cache/correlation-detector.js +73 -0
  74. package/dist/src/planner/cache/correlation-detector.js.map +1 -0
  75. package/dist/src/planner/cache/materialization-advisory.d.ts +12 -18
  76. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  77. package/dist/src/planner/cache/materialization-advisory.js +65 -46
  78. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  79. package/dist/src/planner/cache/reference-graph.d.ts +14 -9
  80. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  81. package/dist/src/planner/cache/reference-graph.js +93 -84
  82. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  83. package/dist/src/planner/debug.d.ts +25 -0
  84. package/dist/src/planner/debug.d.ts.map +1 -1
  85. package/dist/src/planner/debug.js +127 -0
  86. package/dist/src/planner/debug.js.map +1 -1
  87. package/dist/src/planner/framework/context.d.ts +11 -0
  88. package/dist/src/planner/framework/context.d.ts.map +1 -1
  89. package/dist/src/planner/framework/context.js +25 -2
  90. package/dist/src/planner/framework/context.js.map +1 -1
  91. package/dist/src/planner/framework/registry.d.ts +3 -7
  92. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  93. package/dist/src/planner/framework/registry.js +20 -31
  94. package/dist/src/planner/framework/registry.js.map +1 -1
  95. package/dist/src/planner/nodes/add-constraint-node.d.ts +2 -1
  96. package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -1
  97. package/dist/src/planner/nodes/add-constraint-node.js +3 -0
  98. package/dist/src/planner/nodes/add-constraint-node.js.map +1 -1
  99. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  100. package/dist/src/planner/nodes/aggregate-node.js +6 -4
  101. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  102. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  103. package/dist/src/planner/nodes/cache-node.js +2 -2
  104. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  105. package/dist/src/planner/nodes/constraint-check-node.d.ts +13 -6
  106. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  107. package/dist/src/planner/nodes/constraint-check-node.js +38 -12
  108. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  109. package/dist/src/planner/nodes/create-index-node.d.ts +2 -1
  110. package/dist/src/planner/nodes/create-index-node.d.ts.map +1 -1
  111. package/dist/src/planner/nodes/create-index-node.js +3 -0
  112. package/dist/src/planner/nodes/create-index-node.js.map +1 -1
  113. package/dist/src/planner/nodes/create-table-node.d.ts +2 -1
  114. package/dist/src/planner/nodes/create-table-node.d.ts.map +1 -1
  115. package/dist/src/planner/nodes/create-table-node.js +3 -0
  116. package/dist/src/planner/nodes/create-table-node.js.map +1 -1
  117. package/dist/src/planner/nodes/create-view-node.d.ts +2 -1
  118. package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -1
  119. package/dist/src/planner/nodes/create-view-node.js +3 -0
  120. package/dist/src/planner/nodes/create-view-node.js.map +1 -1
  121. package/dist/src/planner/nodes/cte-node.d.ts +1 -1
  122. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  123. package/dist/src/planner/nodes/cte-node.js +33 -12
  124. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  125. package/dist/src/planner/nodes/cte-reference-node.d.ts +18 -4
  126. package/dist/src/planner/nodes/cte-reference-node.d.ts.map +1 -1
  127. package/dist/src/planner/nodes/cte-reference-node.js +40 -10
  128. package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
  129. package/dist/src/planner/nodes/delete-node.d.ts +4 -3
  130. package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
  131. package/dist/src/planner/nodes/delete-node.js +20 -6
  132. package/dist/src/planner/nodes/delete-node.js.map +1 -1
  133. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  134. package/dist/src/planner/nodes/distinct-node.js +2 -2
  135. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  136. package/dist/src/planner/nodes/dml-executor-node.d.ts +1 -1
  137. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  138. package/dist/src/planner/nodes/dml-executor-node.js +2 -2
  139. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  140. package/dist/src/planner/nodes/drop-table-node.d.ts +2 -1
  141. package/dist/src/planner/nodes/drop-table-node.d.ts.map +1 -1
  142. package/dist/src/planner/nodes/drop-table-node.js +3 -0
  143. package/dist/src/planner/nodes/drop-table-node.js.map +1 -1
  144. package/dist/src/planner/nodes/drop-view-node.d.ts +2 -1
  145. package/dist/src/planner/nodes/drop-view-node.d.ts.map +1 -1
  146. package/dist/src/planner/nodes/drop-view-node.js +3 -0
  147. package/dist/src/planner/nodes/drop-view-node.js.map +1 -1
  148. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  149. package/dist/src/planner/nodes/filter.js +3 -3
  150. package/dist/src/planner/nodes/filter.js.map +1 -1
  151. package/dist/src/planner/nodes/insert-node.d.ts +2 -1
  152. package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
  153. package/dist/src/planner/nodes/insert-node.js +18 -5
  154. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  155. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +28 -0
  156. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -0
  157. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +69 -0
  158. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -0
  159. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  160. package/dist/src/planner/nodes/join-node.js +3 -3
  161. package/dist/src/planner/nodes/join-node.js.map +1 -1
  162. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  163. package/dist/src/planner/nodes/limit-offset.js +2 -2
  164. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  165. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
  166. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  167. package/dist/src/planner/nodes/plan-node-type.js +1 -1
  168. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  169. package/dist/src/planner/nodes/plan-node.d.ts +23 -0
  170. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  171. package/dist/src/planner/nodes/plan-node.js +25 -2
  172. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  173. package/dist/src/planner/nodes/project-node.d.ts +5 -1
  174. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  175. package/dist/src/planner/nodes/project-node.js +39 -20
  176. package/dist/src/planner/nodes/project-node.js.map +1 -1
  177. package/dist/src/planner/nodes/recursive-cte-node.d.ts +2 -2
  178. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  179. package/dist/src/planner/nodes/recursive-cte-node.js +20 -8
  180. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  181. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  182. package/dist/src/planner/nodes/reference.js +4 -2
  183. package/dist/src/planner/nodes/reference.js.map +1 -1
  184. package/dist/src/planner/nodes/returning-node.d.ts +1 -1
  185. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  186. package/dist/src/planner/nodes/returning-node.js +21 -13
  187. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  188. package/dist/src/planner/nodes/scalar.d.ts +26 -2
  189. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  190. package/dist/src/planner/nodes/scalar.js +82 -10
  191. package/dist/src/planner/nodes/scalar.js.map +1 -1
  192. package/dist/src/planner/nodes/sequencing-node.d.ts.map +1 -1
  193. package/dist/src/planner/nodes/sequencing-node.js +2 -2
  194. package/dist/src/planner/nodes/sequencing-node.js.map +1 -1
  195. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/set-operation-node.js +3 -3
  197. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  198. package/dist/src/planner/nodes/single-row.d.ts +4 -2
  199. package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
  200. package/dist/src/planner/nodes/single-row.js +3 -0
  201. package/dist/src/planner/nodes/single-row.js.map +1 -1
  202. package/dist/src/planner/nodes/sink-node.d.ts +1 -1
  203. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  204. package/dist/src/planner/nodes/sink-node.js +4 -4
  205. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  206. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  207. package/dist/src/planner/nodes/sort.js +2 -2
  208. package/dist/src/planner/nodes/sort.js.map +1 -1
  209. package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -0
  210. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  211. package/dist/src/planner/nodes/stream-aggregate.js +64 -11
  212. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  213. package/dist/src/planner/nodes/subquery.d.ts +4 -4
  214. package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
  215. package/dist/src/planner/nodes/subquery.js +68 -23
  216. package/dist/src/planner/nodes/subquery.js.map +1 -1
  217. package/dist/src/planner/nodes/table-access-nodes.d.ts +83 -0
  218. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -0
  219. package/dist/src/planner/nodes/table-access-nodes.js +226 -0
  220. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -0
  221. package/dist/src/planner/nodes/update-node.d.ts +4 -2
  222. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  223. package/dist/src/planner/nodes/update-node.js +26 -13
  224. package/dist/src/planner/nodes/update-node.js.map +1 -1
  225. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  226. package/dist/src/planner/nodes/window-node.js +25 -23
  227. package/dist/src/planner/nodes/window-node.js.map +1 -1
  228. package/dist/src/planner/optimizer.d.ts.map +1 -1
  229. package/dist/src/planner/optimizer.js +46 -50
  230. package/dist/src/planner/optimizer.js.map +1 -1
  231. package/dist/src/planner/planning-context.d.ts +13 -0
  232. package/dist/src/planner/planning-context.d.ts.map +1 -1
  233. package/dist/src/planner/planning-context.js.map +1 -1
  234. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +1 -1
  235. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  236. package/dist/src/planner/rules/access/rule-select-access-path.js +59 -53
  237. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  238. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
  239. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +62 -2
  240. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
  241. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +1 -1
  242. package/dist/src/planner/rules/cache/rule-materialization-advisory.js +31 -24
  243. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +1 -1
  244. package/dist/src/planner/scopes/base.d.ts +0 -10
  245. package/dist/src/planner/scopes/base.d.ts.map +1 -1
  246. package/dist/src/planner/scopes/base.js +0 -14
  247. package/dist/src/planner/scopes/base.js.map +1 -1
  248. package/dist/src/planner/scopes/empty.d.ts +0 -2
  249. package/dist/src/planner/scopes/empty.d.ts.map +1 -1
  250. package/dist/src/planner/scopes/empty.js +0 -8
  251. package/dist/src/planner/scopes/empty.js.map +1 -1
  252. package/dist/src/planner/scopes/multi.d.ts.map +1 -1
  253. package/dist/src/planner/scopes/multi.js +0 -1
  254. package/dist/src/planner/scopes/multi.js.map +1 -1
  255. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  256. package/dist/src/planner/scopes/param.js +0 -1
  257. package/dist/src/planner/scopes/param.js.map +1 -1
  258. package/dist/src/planner/scopes/registered.d.ts +0 -10
  259. package/dist/src/planner/scopes/registered.d.ts.map +1 -1
  260. package/dist/src/planner/scopes/registered.js +1 -17
  261. package/dist/src/planner/scopes/registered.js.map +1 -1
  262. package/dist/src/planner/scopes/scope.d.ts +0 -8
  263. package/dist/src/planner/scopes/scope.d.ts.map +1 -1
  264. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  265. package/dist/src/planner/validation/plan-validator.js +1 -7
  266. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  267. package/dist/src/runtime/context-helpers.d.ts +45 -0
  268. package/dist/src/runtime/context-helpers.d.ts.map +1 -0
  269. package/dist/src/runtime/context-helpers.js +139 -0
  270. package/dist/src/runtime/context-helpers.js.map +1 -0
  271. package/dist/src/runtime/emission-context.d.ts +1 -0
  272. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  273. package/dist/src/runtime/emission-context.js +2 -1
  274. package/dist/src/runtime/emission-context.js.map +1 -1
  275. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  276. package/dist/src/runtime/emit/aggregate.js +119 -86
  277. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  278. package/dist/src/runtime/emit/between.d.ts +5 -0
  279. package/dist/src/runtime/emit/between.d.ts.map +1 -0
  280. package/dist/src/runtime/emit/between.js +38 -0
  281. package/dist/src/runtime/emit/between.js.map +1 -0
  282. package/dist/src/runtime/emit/binary.d.ts +0 -1
  283. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  284. package/dist/src/runtime/emit/binary.js +0 -36
  285. package/dist/src/runtime/emit/binary.js.map +1 -1
  286. package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
  287. package/dist/src/runtime/emit/column-reference.js +2 -26
  288. package/dist/src/runtime/emit/column-reference.js.map +1 -1
  289. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  290. package/dist/src/runtime/emit/constraint-check.js +16 -123
  291. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  292. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  293. package/dist/src/runtime/emit/cte-reference.js +16 -48
  294. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  295. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  296. package/dist/src/runtime/emit/distinct.js +2 -8
  297. package/dist/src/runtime/emit/distinct.js.map +1 -1
  298. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  299. package/dist/src/runtime/emit/filter.js +6 -13
  300. package/dist/src/runtime/emit/filter.js.map +1 -1
  301. package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts +5 -0
  302. package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts.map +1 -0
  303. package/dist/src/runtime/emit/internal-recursive-cte-ref.js +23 -0
  304. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +1 -0
  305. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  306. package/dist/src/runtime/emit/join.js +40 -40
  307. package/dist/src/runtime/emit/join.js.map +1 -1
  308. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  309. package/dist/src/runtime/emit/project.js +13 -13
  310. package/dist/src/runtime/emit/project.js.map +1 -1
  311. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  312. package/dist/src/runtime/emit/recursive-cte.js +3 -14
  313. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  314. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  315. package/dist/src/runtime/emit/returning.js +7 -14
  316. package/dist/src/runtime/emit/returning.js.map +1 -1
  317. package/dist/src/runtime/emit/scan.d.ts +5 -2
  318. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  319. package/dist/src/runtime/emit/scan.js +21 -17
  320. package/dist/src/runtime/emit/scan.js.map +1 -1
  321. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  322. package/dist/src/runtime/emit/sort.js +8 -11
  323. package/dist/src/runtime/emit/sort.js.map +1 -1
  324. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  325. package/dist/src/runtime/emit/subquery.js +95 -40
  326. package/dist/src/runtime/emit/subquery.js.map +1 -1
  327. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  328. package/dist/src/runtime/emit/table-valued-function.js +7 -22
  329. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  330. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  331. package/dist/src/runtime/emit/update.js +20 -27
  332. package/dist/src/runtime/emit/update.js.map +1 -1
  333. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  334. package/dist/src/runtime/emit/window.js +55 -83
  335. package/dist/src/runtime/emit/window.js.map +1 -1
  336. package/dist/src/runtime/emitters.d.ts.map +1 -1
  337. package/dist/src/runtime/emitters.js +49 -1
  338. package/dist/src/runtime/emitters.js.map +1 -1
  339. package/dist/src/runtime/register.d.ts.map +1 -1
  340. package/dist/src/runtime/register.js +5 -4
  341. package/dist/src/runtime/register.js.map +1 -1
  342. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  343. package/dist/src/runtime/scheduler.js +47 -42
  344. package/dist/src/runtime/scheduler.js.map +1 -1
  345. package/dist/src/runtime/types.d.ts +34 -0
  346. package/dist/src/runtime/types.d.ts.map +1 -1
  347. package/dist/src/runtime/types.js +21 -0
  348. package/dist/src/runtime/types.js.map +1 -1
  349. package/dist/src/schema/manager.d.ts.map +1 -1
  350. package/dist/src/schema/manager.js +29 -16
  351. package/dist/src/schema/manager.js.map +1 -1
  352. package/dist/src/schema/table.d.ts +4 -4
  353. package/dist/src/schema/table.d.ts.map +1 -1
  354. package/dist/src/schema/table.js +10 -10
  355. package/dist/src/schema/table.js.map +1 -1
  356. package/dist/src/util/plugin-loader.d.ts +10 -1
  357. package/dist/src/util/plugin-loader.d.ts.map +1 -1
  358. package/dist/src/util/plugin-loader.js +56 -1
  359. package/dist/src/util/plugin-loader.js.map +1 -1
  360. package/dist/src/util/working-table-iterable.d.ts.map +1 -1
  361. package/dist/src/util/working-table-iterable.js +8 -8
  362. package/dist/src/util/working-table-iterable.js.map +1 -1
  363. package/dist/src/vtab/manifest.d.ts +36 -0
  364. package/dist/src/vtab/manifest.d.ts.map +1 -1
  365. package/dist/src/vtab/table.d.ts +1 -1
  366. package/dist/src/vtab/table.d.ts.map +1 -1
  367. package/package.json +8 -3
  368. package/src/common/types.ts +1 -0
  369. package/src/core/database.ts +48 -6
  370. package/src/core/statement.ts +1 -49
  371. package/src/func/builtins/explain.ts +0 -11
  372. package/src/index.ts +39 -5
  373. package/src/parser/ast.ts +12 -6
  374. package/src/parser/parser.ts +45 -52
  375. package/src/planner/analysis/const-pass.ts +281 -270
  376. package/src/planner/building/constraint-builder.ts +114 -0
  377. package/src/planner/building/delete.ts +18 -5
  378. package/src/planner/building/expression.ts +35 -7
  379. package/src/planner/building/insert.ts +16 -3
  380. package/src/planner/building/select-aggregates.ts +57 -11
  381. package/src/planner/building/select-context.ts +22 -12
  382. package/src/planner/building/select-modifiers.ts +35 -21
  383. package/src/planner/building/select-projections.ts +25 -26
  384. package/src/planner/building/select-window.ts +14 -9
  385. package/src/planner/building/select.ts +163 -31
  386. package/src/planner/building/table.ts +1 -40
  387. package/src/planner/building/update.ts +22 -7
  388. package/src/planner/building/with.ts +12 -13
  389. package/src/planner/cache/correlation-detector.ts +83 -0
  390. package/src/planner/cache/materialization-advisory.ts +71 -50
  391. package/src/planner/cache/reference-graph.ts +115 -91
  392. package/src/planner/debug.ts +163 -0
  393. package/src/planner/framework/context.ts +36 -2
  394. package/src/planner/framework/registry.ts +261 -274
  395. package/src/planner/nodes/add-constraint-node.ts +5 -1
  396. package/src/planner/nodes/aggregate-node.ts +6 -4
  397. package/src/planner/nodes/cache-node.ts +2 -2
  398. package/src/planner/nodes/constraint-check-node.ts +49 -15
  399. package/src/planner/nodes/create-index-node.ts +5 -1
  400. package/src/planner/nodes/create-table-node.ts +5 -1
  401. package/src/planner/nodes/create-view-node.ts +5 -1
  402. package/src/planner/nodes/cte-node.ts +45 -14
  403. package/src/planner/nodes/cte-reference-node.ts +49 -13
  404. package/src/planner/nodes/delete-node.ts +31 -7
  405. package/src/planner/nodes/distinct-node.ts +2 -2
  406. package/src/planner/nodes/dml-executor-node.ts +3 -3
  407. package/src/planner/nodes/drop-table-node.ts +5 -1
  408. package/src/planner/nodes/drop-view-node.ts +5 -1
  409. package/src/planner/nodes/filter.ts +3 -3
  410. package/src/planner/nodes/function.ts +93 -93
  411. package/src/planner/nodes/insert-node.ts +28 -5
  412. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +76 -0
  413. package/src/planner/nodes/join-node.ts +3 -3
  414. package/src/planner/nodes/limit-offset.ts +2 -2
  415. package/src/planner/nodes/plan-node-type.ts +1 -1
  416. package/src/planner/nodes/plan-node.ts +39 -2
  417. package/src/planner/nodes/project-node.ts +39 -19
  418. package/src/planner/nodes/recursive-cte-node.ts +37 -9
  419. package/src/planner/nodes/reference.ts +4 -2
  420. package/src/planner/nodes/returning-node.ts +25 -13
  421. package/src/planner/nodes/scalar.ts +95 -11
  422. package/src/planner/nodes/sequencing-node.ts +2 -2
  423. package/src/planner/nodes/set-operation-node.ts +3 -3
  424. package/src/planner/nodes/single-row.ts +7 -2
  425. package/src/planner/nodes/sink-node.ts +5 -5
  426. package/src/planner/nodes/sort.ts +2 -2
  427. package/src/planner/nodes/stream-aggregate.ts +76 -12
  428. package/src/planner/nodes/subquery.ts +90 -27
  429. package/src/planner/nodes/{physical-access-nodes.ts → table-access-nodes.ts} +6 -6
  430. package/src/planner/nodes/update-node.ts +31 -13
  431. package/src/planner/nodes/window-node.ts +28 -22
  432. package/src/planner/optimizer.ts +257 -263
  433. package/src/planner/planning-context.ts +15 -0
  434. package/src/planner/rules/access/rule-select-access-path.ts +68 -64
  435. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +74 -2
  436. package/src/planner/rules/cache/rule-materialization-advisory.ts +31 -27
  437. package/src/planner/scopes/base.ts +0 -17
  438. package/src/planner/scopes/empty.ts +0 -10
  439. package/src/planner/scopes/multi.ts +0 -1
  440. package/src/planner/scopes/param.ts +0 -1
  441. package/src/planner/scopes/registered.ts +1 -20
  442. package/src/planner/scopes/scope.ts +0 -12
  443. package/src/planner/validation/plan-validator.ts +1 -8
  444. package/src/runtime/context-helpers.ts +191 -0
  445. package/src/runtime/emission-context.ts +5 -2
  446. package/src/runtime/emit/aggregate.ts +131 -85
  447. package/src/runtime/emit/between.ts +51 -0
  448. package/src/runtime/emit/binary.ts +0 -46
  449. package/src/runtime/emit/column-reference.ts +3 -36
  450. package/src/runtime/emit/constraint-check.ts +19 -144
  451. package/src/runtime/emit/cte-reference.ts +23 -60
  452. package/src/runtime/emit/distinct.ts +2 -7
  453. package/src/runtime/emit/filter.ts +6 -13
  454. package/src/runtime/emit/internal-recursive-cte-ref.ts +37 -0
  455. package/src/runtime/emit/join.ts +45 -43
  456. package/src/runtime/emit/project.ts +18 -12
  457. package/src/runtime/emit/recursive-cte.ts +3 -12
  458. package/src/runtime/emit/returning.ts +7 -14
  459. package/src/runtime/emit/scan.ts +25 -23
  460. package/src/runtime/emit/sort.ts +8 -11
  461. package/src/runtime/emit/subquery.ts +108 -48
  462. package/src/runtime/emit/table-valued-function.ts +7 -20
  463. package/src/runtime/emit/update.ts +22 -29
  464. package/src/runtime/emit/window.ts +74 -88
  465. package/src/runtime/emitters.ts +52 -1
  466. package/src/runtime/register.ts +5 -4
  467. package/src/runtime/scheduler.ts +54 -54
  468. package/src/runtime/types.ts +45 -0
  469. package/src/schema/manager.ts +34 -19
  470. package/src/schema/table.ts +8 -8
  471. package/src/util/plugin-loader.ts +78 -4
  472. package/src/util/working-table-iterable.ts +15 -7
  473. package/src/vtab/manifest.ts +42 -0
  474. package/src/vtab/table.ts +1 -1
  475. package/src/planner/nodes/scan.ts +0 -103
  476. package/src/planner/rules/physical/rule-mark-physical.ts +0 -37
  477. package/src/runtime/emit/table-reference.ts +0 -92
@@ -2,6 +2,7 @@ import { emitCallFromPlan, emitPlanNode } from '../emitters.js';
2
2
  import { createLogger } from '../../common/logger.js';
3
3
  import { compareSqlValues } from '../../util/comparison.js';
4
4
  import { buildRowDescriptor } from '../../util/row-descriptor.js';
5
+ import { createRowSlot } from '../context-helpers.js';
5
6
  const log = createLogger('runtime:emit:join');
6
7
  /**
7
8
  * Emits a nested loop join instruction.
@@ -17,39 +18,37 @@ export function emitLoopJoin(plan, ctx) {
17
18
  async function* run(rctx, leftSource, rightCallback, conditionCallback) {
18
19
  const joinType = plan.joinType;
19
20
  log('Starting %s join between %d left attrs and %d right attrs', joinType.toUpperCase(), leftAttributes.length, rightAttributes.length);
20
- // Process left side and join with right (pure streaming)
21
- for await (const leftRow of leftSource) {
22
- // Set up left context
23
- rctx.context.set(leftRowDescriptor, () => leftRow);
24
- try {
21
+ // Create row slots for efficient context management
22
+ const leftSlot = createRowSlot(rctx, leftRowDescriptor);
23
+ const rightSlot = createRowSlot(rctx, rightRowDescriptor);
24
+ try {
25
+ // Process left side and join with right (pure streaming)
26
+ for await (const leftRow of leftSource) {
27
+ // Set up left context
28
+ leftSlot.set(leftRow);
25
29
  let leftMatched = false;
26
30
  // Stream through right side for each left row
27
31
  for await (const rightRow of rightCallback(rctx)) {
28
32
  // Set up right context
29
- rctx.context.set(rightRowDescriptor, () => rightRow);
30
- try {
31
- // Evaluate join condition
32
- let conditionMet = true;
33
- if (conditionCallback) {
34
- // Evaluate the join condition using the callback provided by scheduler
35
- const conditionResult = await conditionCallback(rctx);
36
- conditionMet = !!conditionResult; // Convert to boolean
37
- }
38
- else if (plan.usingColumns) {
39
- // Handle USING condition: check equality of specified columns
40
- conditionMet = evaluateUsingCondition(leftRow, rightRow, plan.usingColumns, leftAttributes, rightAttributes);
41
- }
42
- else if (joinType === 'cross') {
43
- // Cross join - always true
44
- conditionMet = true;
45
- }
46
- if (conditionMet) {
47
- leftMatched = true;
48
- yield [...leftRow, ...rightRow];
49
- }
33
+ rightSlot.set(rightRow);
34
+ // Evaluate join condition
35
+ let conditionMet = true;
36
+ if (conditionCallback) {
37
+ // Evaluate the join condition using the callback provided by scheduler
38
+ const conditionResult = await conditionCallback(rctx);
39
+ conditionMet = !!conditionResult; // Convert to boolean
50
40
  }
51
- finally {
52
- rctx.context.delete(rightRowDescriptor);
41
+ else if (plan.usingColumns) {
42
+ // Handle USING condition: check equality of specified columns
43
+ conditionMet = evaluateUsingCondition(leftRow, rightRow, plan.usingColumns, leftAttributes, rightAttributes);
44
+ }
45
+ else if (joinType === 'cross') {
46
+ // Cross join - always true
47
+ conditionMet = true;
48
+ }
49
+ if (conditionMet) {
50
+ leftMatched = true;
51
+ yield [...leftRow, ...rightRow];
53
52
  }
54
53
  }
55
54
  // Handle outer join semantics - null padding for unmatched left rows
@@ -60,20 +59,21 @@ export function emitLoopJoin(plan, ctx) {
60
59
  yield outputRow;
61
60
  }
62
61
  }
63
- finally {
64
- rctx.context.delete(leftRowDescriptor);
62
+ // Handle right outer join semantics - we need to track which right rows were matched
63
+ // For now, we'll handle this in a simpler way by iterating again for right/full outer joins
64
+ if (joinType === 'right' || joinType === 'full') {
65
+ // For right outer joins, we need to find unmatched right rows
66
+ // This is more complex and less efficient - a real implementation would track matches
67
+ // For now, we'll implement a simplified version
68
+ log('Right/full outer join - checking for unmatched right rows');
69
+ // We'd need to track which right rows were matched during the main loop
70
+ // For now, we'll skip this implementation detail
71
+ // TODO: Implement proper right outer join semantics
65
72
  }
66
73
  }
67
- // Handle right outer join semantics - we need to track which right rows were matched
68
- // For now, we'll handle this in a simpler way by iterating again for right/full outer joins
69
- if (joinType === 'right' || joinType === 'full') {
70
- // For right outer joins, we need to find unmatched right rows
71
- // This is more complex and less efficient - a real implementation would track matches
72
- // For now, we'll implement a simplified version
73
- log('Right/full outer join - checking for unmatched right rows');
74
- // We'd need to track which right rows were matched during the main loop
75
- // For now, we'll skip this implementation detail
76
- // TODO: Implement proper right outer join semantics
74
+ finally {
75
+ leftSlot.close();
76
+ rightSlot.close();
77
77
  }
78
78
  }
79
79
  const leftInstruction = emitPlanNode(plan.left, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../../src/runtime/emit/join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../../../src/runtime/emit/join.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA+BhF"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAoChF"}
@@ -1,26 +1,26 @@
1
1
  import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
2
2
  import { buildRowDescriptor } from '../../util/row-descriptor.js';
3
+ import { withAsyncRowContext, withRowContextGenerator } from '../context-helpers.js';
3
4
  export function emitProject(plan, ctx) {
4
5
  const sourceInstruction = emitPlanNode(plan.source, ctx);
5
6
  const projectionFuncs = plan.projections.map((projection) => {
6
7
  return emitCallFromPlan(projection.node, ctx);
7
8
  });
8
- // Create row descriptor for source attributes
9
+ // Row descriptors
9
10
  const sourceRowDescriptor = buildRowDescriptor(plan.source.getAttributes());
11
+ const outputRowDescriptor = buildRowDescriptor(plan.getAttributes());
10
12
  async function* run(rctx, source, ...projectionFunctions) {
11
13
  for await (const sourceRow of source) {
12
- // Set up context for this row using row descriptor
13
- rctx.context.set(sourceRowDescriptor, () => sourceRow);
14
- try {
15
- const outputs = projectionFunctions.map(func => func(rctx));
16
- const resolved = await Promise.all(outputs);
17
- // Assume we have ensured that these are all scalar values
18
- yield resolved;
19
- }
20
- finally {
21
- // Clean up context for this row
22
- rctx.context.delete(sourceRowDescriptor);
23
- }
14
+ // Evaluate projections using the source row context
15
+ const outputs = await withAsyncRowContext(rctx, sourceRowDescriptor, () => sourceRow, async () => {
16
+ return Promise.all(projectionFunctions.map(fn => fn(rctx)));
17
+ });
18
+ // Push the output row descriptor for downstream consumers
19
+ yield* withRowContextGenerator(rctx, outputRowDescriptor, (async function* () {
20
+ yield outputs;
21
+ })(), async function* (row) {
22
+ yield row;
23
+ });
24
24
  }
25
25
  }
26
26
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../src/runtime/emit/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAC3D,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAE5E,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAoB,EAAE,MAA0B,EAAE,GAAG,mBAAgE;QACxI,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YACtC,mDAAmD;YACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAEvD,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,0DAA0D;gBAC1D,MAAM,QAAe,CAAC;YACvB,CAAC;oBAAS,CAAC;gBACV,gCAAgC;gBAChC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,iBAAiB,EAAE,GAAG,eAAe,CAAC;QAC/C,GAAG,EAAE,GAAU;QACf,IAAI,EAAE,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,QAAQ;KAChD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../src/runtime/emit/project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErF,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAC3D,OAAO,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAErE,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,IAAoB,EAAE,MAA0B,EAAE,GAAG,mBAAgE;QACxI,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YACtC,oDAAoD;YACpD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBAChG,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;YAEH,0DAA0D;YAC1D,KAAK,CAAC,CAAC,uBAAuB,CAC7B,IAAI,EACJ,mBAAmB,EACnB,CAAC,KAAK,SAAS,CAAC;gBACf,MAAM,OAAc,CAAC;YACtB,CAAC,CAAC,EAAE,EACJ,KAAK,SAAS,CAAC,EAAE,GAAG;gBACnB,MAAM,GAAG,CAAC;YACX,CAAC,CACD,CAAC;QACH,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,iBAAiB,EAAE,GAAG,eAAe,CAAC;QAC/C,GAAG,EAAE,GAAU;QACf,IAAI,EAAE,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,QAAQ;KAChD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"recursive-cte.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/recursive-cte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAc9D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAoG1F"}
1
+ {"version":3,"file":"recursive-cte.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/recursive-cte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAe9D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA0F1F"}
@@ -7,6 +7,7 @@ import { DEFAULT_TUNING } from '../../planner/optimizer-tuning.js';
7
7
  import { quereusError } from '../../common/errors.js';
8
8
  import { StatusCode } from '../../common/types.js';
9
9
  import { buildRowDescriptor } from '../../util/row-descriptor.js';
10
+ import { withRowContext } from '../context-helpers.js';
10
11
  const log = createLogger('runtime:emit:recursive-cte');
11
12
  export function emitRecursiveCTE(plan, ctx) {
12
13
  // Create row descriptor for CTE output attributes
@@ -28,13 +29,7 @@ export function emitRecursiveCTE(plan, ctx) {
28
29
  const shouldYield = !allRowsTree || allRowsTree.insert(row).on;
29
30
  if (shouldYield) {
30
31
  // Yield immediately (streaming)
31
- rctx.context.set(rowDescriptor, () => row);
32
- try {
33
- yield row;
34
- }
35
- finally {
36
- rctx.context.delete(rowDescriptor);
37
- }
32
+ yield withRowContext(rctx, rowDescriptor, () => row, () => row);
38
33
  // Add to delta for recursive processing (deep copy to avoid reference issues)
39
34
  deltaRows.push([...row]);
40
35
  }
@@ -56,13 +51,7 @@ export function emitRecursiveCTE(plan, ctx) {
56
51
  const shouldYield = !allRowsTree || allRowsTree.insert(row).on;
57
52
  if (shouldYield) {
58
53
  // Stream the row immediately
59
- rctx.context.set(rowDescriptor, () => row);
60
- try {
61
- yield row;
62
- }
63
- finally {
64
- rctx.context.delete(rowDescriptor);
65
- }
54
+ yield withRowContext(rctx, rowDescriptor, () => row, () => row);
66
55
  // Add to next iteration's delta (deep copy to avoid reference issues)
67
56
  newDeltaRows.push([...row]);
68
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recursive-cte.js","sourceRoot":"","sources":["../../../../src/runtime/emit/recursive-cte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recursive-cte.js","sourceRoot":"","sources":["../../../../src/runtime/emit/recursive-cte.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"returning.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/returning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAwCpF"}
1
+ {"version":3,"file":"returning.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/returning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgCpF"}
@@ -1,5 +1,6 @@
1
1
  import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
2
2
  import { buildRowDescriptor } from '../../util/row-descriptor.js';
3
+ import { withRowContextGenerator } from '../context-helpers.js';
3
4
  export function emitReturning(plan, ctx) {
4
5
  // Use the executor's attributes to build the row descriptor
5
6
  // The executor should already output the correct flat OLD/NEW format for mutation operations
@@ -8,20 +9,12 @@ export function emitReturning(plan, ctx) {
8
9
  const projectionEvaluators = plan.projections.map(proj => emitCallFromPlan(proj.node, ctx));
9
10
  async function* run(rctx, executorRows, ...projectionCallbacks) {
10
11
  // Project the results from the executor rows
11
- for await (const sourceRow of executorRows) {
12
- // Set up the source context - the row is already in the correct flat OLD/NEW format
13
- rctx.context.set(sourceRowDescriptor, () => sourceRow);
14
- try {
15
- // Evaluate projection expressions in the context of this row
16
- const outputs = projectionCallbacks.map(func => func(rctx));
17
- const resolved = await Promise.all(outputs);
18
- yield resolved;
19
- }
20
- finally {
21
- // Clean up source context
22
- rctx.context.delete(sourceRowDescriptor);
23
- }
24
- }
12
+ yield* withRowContextGenerator(rctx, sourceRowDescriptor, executorRows, async function* (_sourceRow) {
13
+ // Evaluate projection expressions in the context of this row
14
+ const outputs = projectionCallbacks.map(func => func(rctx));
15
+ const resolved = await Promise.all(outputs);
16
+ yield resolved;
17
+ });
25
18
  }
26
19
  // Emit the executor (now always produces rows)
27
20
  const executorInstruction = emitPlanNode(plan.executor, ctx);
@@ -1 +1 @@
1
- {"version":3,"file":"returning.js","sourceRoot":"","sources":["../../../../src/runtime/emit/returning.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,UAAU,aAAa,CAAC,IAAmB,EAAE,GAAoB;IACtE,4DAA4D;IAC5D,6FAA6F;IAC7F,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAE9E,sCAAsC;IACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACxD,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAChC,CAAC;IAEF,KAAK,SAAS,CAAC,CAAC,GAAG,CAClB,IAAoB,EACpB,YAAgC,EAChC,GAAG,mBAAwD;QAE3D,6CAA6C;QAC7C,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;YAC5C,oFAAoF;YACpF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAEvD,IAAI,CAAC;gBACJ,6DAA6D;gBAC7D,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,QAAe,CAAC;YACvB,CAAC;oBAAS,CAAC;gBACV,0BAA0B;gBAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IAED,+CAA+C;IAC/C,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE7D,OAAO;QACN,MAAM,EAAE,CAAC,mBAAmB,EAAE,GAAG,oBAAoB,CAAC;QACtD,GAAG;QACH,IAAI,EAAE,aAAa,IAAI,CAAC,WAAW,CAAC,MAAM,QAAQ;KAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"returning.js","sourceRoot":"","sources":["../../../../src/runtime/emit/returning.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,aAAa,CAAC,IAAmB,EAAE,GAAoB;IACtE,4DAA4D;IAC5D,6FAA6F;IAC7F,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAE9E,sCAAsC;IACtC,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACxD,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAChC,CAAC;IAEF,KAAK,SAAS,CAAC,CAAC,GAAG,CAClB,IAAoB,EACpB,YAAgC,EAChC,GAAG,mBAAwD;QAE3D,6CAA6C;QAC7C,KAAK,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,SAAS,CAAC,EAAE,UAAU;YAClG,6DAA6D;YAC7D,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,QAAe,CAAC;QACvB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,MAAM,mBAAmB,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE7D,OAAO;QACN,MAAM,EAAE,CAAC,mBAAmB,EAAE,GAAG,oBAAoB,CAAC;QACtD,GAAG;QACH,IAAI,EAAE,aAAa,IAAI,CAAC,WAAW,CAAC,MAAM,QAAQ;KAClD,CAAC;AACH,CAAC"}
@@ -1,5 +1,8 @@
1
- import type { TableScanNode } from "../../planner/nodes/scan.js";
1
+ import { SeqScanNode, IndexScanNode, IndexSeekNode } from "../../planner/nodes/table-access-nodes.js";
2
2
  import type { Instruction } from "../types.js";
3
3
  import type { EmissionContext } from "../emission-context.js";
4
- export declare function emitSeqScan(plan: TableScanNode, ctx: EmissionContext): Instruction;
4
+ /**
5
+ * Emits instructions for physical table access nodes (SeqScan, IndexScan, IndexSeek)
6
+ */
7
+ export declare function emitSeqScan(plan: SeqScanNode | IndexScanNode | IndexSeekNode, ctx: EmissionContext): Instruction;
5
8
  //# sourceMappingURL=scan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/scan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAIjE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA4ElF"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/scan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAItG,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,aAAa,GAAG,aAAa,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA0EhH"}
@@ -3,61 +3,65 @@ import { QuereusError } from "../../common/errors.js";
3
3
  import { createValidatedInstruction } from "../emitters.js";
4
4
  import { disconnectVTable } from "../utils.js";
5
5
  import { buildRowDescriptor } from "../../util/row-descriptor.js";
6
+ import { createRowSlot } from "../context-helpers.js";
7
+ /**
8
+ * Emits instructions for physical table access nodes (SeqScan, IndexScan, IndexSeek)
9
+ */
6
10
  export function emitSeqScan(plan, ctx) {
7
- const tableSchema = plan.source.tableSchema;
11
+ // Handle physical access nodes
12
+ const source = plan.source;
13
+ const schema = source.tableSchema;
8
14
  // Create row descriptor mapping attribute IDs to column indices
9
15
  const rowDescriptor = buildRowDescriptor(plan.getAttributes());
10
16
  // Look up the virtual table module during emission and record the dependency
11
- const moduleInfo = ctx.getVtabModule(tableSchema.vtabModuleName);
17
+ const moduleInfo = ctx.getVtabModule(schema.vtabModuleName);
12
18
  if (!moduleInfo) {
13
- throw new QuereusError(`Virtual table module '${tableSchema.vtabModuleName}' not found`, StatusCode.ERROR);
19
+ throw new QuereusError(`Virtual table module '${schema.vtabModuleName}' not found`, StatusCode.ERROR);
14
20
  }
15
21
  // Capture the module info key for runtime retrieval
16
- const moduleKey = `vtab_module:${tableSchema.vtabModuleName}`;
22
+ const moduleKey = `vtab_module:${schema.vtabModuleName}`;
17
23
  async function* run(runtimeCtx) {
18
24
  // Use the captured module info instead of doing a fresh lookup
19
25
  const capturedModuleInfo = ctx.getCapturedSchemaObject(moduleKey);
20
26
  if (!capturedModuleInfo) {
21
- throw new QuereusError(`Virtual table module '${tableSchema.vtabModuleName}' was not captured during emission`, StatusCode.INTERNAL);
27
+ throw new QuereusError(`Virtual table module '${schema.vtabModuleName}' was not captured during emission`, StatusCode.INTERNAL);
22
28
  }
23
29
  const module = capturedModuleInfo.module;
24
30
  if (typeof module.xConnect !== 'function') {
25
- throw new QuereusError(`Virtual table module '${tableSchema.vtabModuleName}' does not implement xConnect`, StatusCode.MISUSE);
31
+ throw new QuereusError(`Virtual table module '${schema.vtabModuleName}' does not implement xConnect`, StatusCode.MISUSE);
26
32
  }
27
33
  let vtabInstance;
28
34
  try {
29
35
  const options = {}; // TODO: Populate options from plan.source.tableSchema.vtabArgs or similar if needed
30
- vtabInstance = module.xConnect(runtimeCtx.db, capturedModuleInfo.auxData, tableSchema.vtabModuleName, tableSchema.schemaName, tableSchema.name, options);
36
+ vtabInstance = module.xConnect(runtimeCtx.db, capturedModuleInfo.auxData, schema.vtabModuleName, schema.schemaName, schema.name, options);
31
37
  }
32
38
  catch (e) {
33
39
  const message = e instanceof Error ? e.message : String(e);
34
- throw new QuereusError(`Module '${tableSchema.vtabModuleName}' xConnect failed for table '${tableSchema.name}': ${message}`, e instanceof QuereusError ? e.code : StatusCode.ERROR, e instanceof Error ? e : undefined);
40
+ throw new QuereusError(`Module '${schema.vtabModuleName}' xConnect failed for table '${schema.name}': ${message}`, e instanceof QuereusError ? e.code : StatusCode.ERROR, e instanceof Error ? e : undefined);
35
41
  }
36
42
  if (typeof vtabInstance.xQuery !== 'function') {
37
43
  // Fallback or error if xQuery is not available. For now, throwing an error.
38
44
  // Later, we could implement the xOpen/xFilter/xNext loop here as a fallback.
39
- throw new QuereusError(`Virtual table '${tableSchema.name}' does not support xQuery.`, StatusCode.UNSUPPORTED);
45
+ throw new QuereusError(`Virtual table '${schema.name}' does not support xQuery.`, StatusCode.UNSUPPORTED);
40
46
  }
47
+ const rowSlot = createRowSlot(runtimeCtx, rowDescriptor);
41
48
  try {
42
- // Put cursor row into context using row descriptor
43
- let row;
44
- runtimeCtx.context.set(rowDescriptor, () => row);
45
49
  const asyncRowIterable = vtabInstance.xQuery(plan.filterInfo);
46
- for await (row of asyncRowIterable) {
50
+ for await (const row of asyncRowIterable) {
51
+ rowSlot.set(row);
47
52
  yield row;
48
53
  }
49
- // Remove cursor row from context
50
- runtimeCtx.context.delete(rowDescriptor);
51
54
  }
52
55
  catch (e) {
53
56
  const message = e instanceof Error ? e.message : String(e);
54
- throw new QuereusError(`Error during xQuery on table '${tableSchema.name}': ${message}`, e instanceof QuereusError ? e.code : StatusCode.ERROR, e instanceof Error ? e : undefined);
57
+ throw new QuereusError(`Error during xQuery on table '${schema.name}': ${message}`, e instanceof QuereusError ? e.code : StatusCode.ERROR, e instanceof Error ? e : undefined);
55
58
  }
56
59
  finally {
60
+ rowSlot.close();
57
61
  // Properly disconnect the VirtualTable instance
58
62
  await disconnectVTable(runtimeCtx, vtabInstance);
59
63
  }
60
64
  }
61
- return createValidatedInstruction([], run, ctx, `scan(${plan.source.tableSchema.name})`);
65
+ return createValidatedInstruction([], run, ctx, `${plan.nodeType}(${schema.name})`);
62
66
  }
63
67
  //# sourceMappingURL=scan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../src/runtime/emit/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../src/runtime/emit/scan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/sort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAqE1E"}
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/sort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAiE1E"}
@@ -1,6 +1,7 @@
1
1
  import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
2
2
  import { createOrderByComparatorFast, resolveCollation } from '../../util/comparison.js';
3
3
  import { buildRowDescriptor } from '../../util/row-descriptor.js';
4
+ import { withAsyncRowContext } from '../context-helpers.js';
4
5
  export function emitSort(plan, ctx) {
5
6
  const sourceInstruction = emitPlanNode(plan.source, ctx);
6
7
  // Create row descriptor for source attributes
@@ -17,20 +18,16 @@ export function emitSort(plan, ctx) {
17
18
  // Collect all rows with their sort key values
18
19
  const rowsWithKeys = [];
19
20
  for await (const sourceRow of source) {
20
- // Set up context for this row using row descriptor
21
- ctx.context.set(sourceRowDescriptor, () => sourceRow);
22
- try {
21
+ const keys = await withAsyncRowContext(ctx, sourceRowDescriptor, () => sourceRow, async () => {
23
22
  // Evaluate sort key expressions
24
- const keys = [];
23
+ const keyValues = [];
25
24
  for (const keyFunc of sortKeyFunctions) {
26
- keys.push(await keyFunc(ctx));
25
+ const result = keyFunc(ctx);
26
+ keyValues.push(await Promise.resolve(result));
27
27
  }
28
- rowsWithKeys.push({ row: sourceRow, keys });
29
- }
30
- finally {
31
- // Clean up context for this row
32
- ctx.context.delete(sourceRowDescriptor);
33
- }
28
+ return keyValues;
29
+ });
30
+ rowsWithKeys.push({ row: sourceRow, keys });
34
31
  }
35
32
  // Sort the collected rows using pre-created optimized comparators
36
33
  rowsWithKeys.sort((a, b) => {
@@ -1 +1 @@
1
- {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../src/runtime/emit/sort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../src/runtime/emit/sort.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAoB;IAC5D,MAAM,iBAAiB,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEzD,8CAA8C;IAC9C,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAE5E,2FAA2F;IAC3F,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5F,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,QAAQ,CAAC;QACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACtD,OAAO,2BAA2B,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,KAAK,SAAS,CAAC,CAAC,GAAG,CAClB,GAAmB,EACnB,MAA0B,EAC1B,GAAG,gBAAwE;QAG3E,8CAA8C;QAC9C,MAAM,YAAY,GAA0C,EAAE,CAAC;QAE/D,IAAI,KAAK,EAAE,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBAC5F,gCAAgC;gBAChC,MAAM,SAAS,GAAe,EAAE,CAAC;gBACjC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC5B,SAAS,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO,SAAS,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,kEAAkE;QAClE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEzB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAE9C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,UAAU,CAAC;gBACnB,CAAC;YACF,CAAC;YACD,OAAO,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,iBAAiB,EAAE,GAAG,mBAAmB,CAAC;QACnD,GAAG,EAAE,GAAU;QACf,IAAI,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ;KAC1C,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"subquery.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/subquery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAwB9F;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAyFtE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAe9E"}
1
+ {"version":3,"file":"subquery.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/subquery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA2B9F;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAiJtE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAe9E"}