@quereus/quereus 0.7.2 → 0.7.4

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 (566) hide show
  1. package/package.json +3 -3
  2. package/dist/src/common/constants.js.map +0 -1
  3. package/dist/src/common/datatype.js.map +0 -1
  4. package/dist/src/common/errors.js.map +0 -1
  5. package/dist/src/common/json-types.js.map +0 -1
  6. package/dist/src/common/logger.js.map +0 -1
  7. package/dist/src/common/type-inference.js.map +0 -1
  8. package/dist/src/common/types.js.map +0 -1
  9. package/dist/src/core/database-options.js.map +0 -1
  10. package/dist/src/core/database.js.map +0 -1
  11. package/dist/src/core/param.js.map +0 -1
  12. package/dist/src/core/statement.js.map +0 -1
  13. package/dist/src/func/builtins/aggregate.js.map +0 -1
  14. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  15. package/dist/src/func/builtins/conversion.js.map +0 -1
  16. package/dist/src/func/builtins/datetime.js.map +0 -1
  17. package/dist/src/func/builtins/explain.js.map +0 -1
  18. package/dist/src/func/builtins/generation.js.map +0 -1
  19. package/dist/src/func/builtins/index.js.map +0 -1
  20. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  21. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  22. package/dist/src/func/builtins/json.js.map +0 -1
  23. package/dist/src/func/builtins/scalar.js.map +0 -1
  24. package/dist/src/func/builtins/schema.js.map +0 -1
  25. package/dist/src/func/builtins/string.js.map +0 -1
  26. package/dist/src/func/builtins/timespan.js.map +0 -1
  27. package/dist/src/func/context.js.map +0 -1
  28. package/dist/src/func/registration.js.map +0 -1
  29. package/dist/src/index.js.map +0 -1
  30. package/dist/src/parser/ast.js.map +0 -1
  31. package/dist/src/parser/index.js.map +0 -1
  32. package/dist/src/parser/lexer.js.map +0 -1
  33. package/dist/src/parser/parser.js.map +0 -1
  34. package/dist/src/parser/utils.js.map +0 -1
  35. package/dist/src/parser/visitor.js.map +0 -1
  36. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  37. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  38. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  39. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  40. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  41. package/dist/src/planner/building/alter-table.js.map +0 -1
  42. package/dist/src/planner/building/block.js.map +0 -1
  43. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  44. package/dist/src/planner/building/create-assertion.js.map +0 -1
  45. package/dist/src/planner/building/create-view.js.map +0 -1
  46. package/dist/src/planner/building/ddl.js.map +0 -1
  47. package/dist/src/planner/building/declare-schema.js.map +0 -1
  48. package/dist/src/planner/building/delete.js.map +0 -1
  49. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  50. package/dist/src/planner/building/drop-table.js.map +0 -1
  51. package/dist/src/planner/building/drop-view.js.map +0 -1
  52. package/dist/src/planner/building/expression.js.map +0 -1
  53. package/dist/src/planner/building/function-call.js.map +0 -1
  54. package/dist/src/planner/building/insert.js.map +0 -1
  55. package/dist/src/planner/building/pragma.js.map +0 -1
  56. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  57. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  58. package/dist/src/planner/building/select-compound.js.map +0 -1
  59. package/dist/src/planner/building/select-context.js.map +0 -1
  60. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  61. package/dist/src/planner/building/select-projections.js.map +0 -1
  62. package/dist/src/planner/building/select-window.js.map +0 -1
  63. package/dist/src/planner/building/select.js.map +0 -1
  64. package/dist/src/planner/building/table-function.js.map +0 -1
  65. package/dist/src/planner/building/table.js.map +0 -1
  66. package/dist/src/planner/building/transaction.js.map +0 -1
  67. package/dist/src/planner/building/update.js.map +0 -1
  68. package/dist/src/planner/building/with.js.map +0 -1
  69. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  70. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  71. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  72. package/dist/src/planner/cost/index.js.map +0 -1
  73. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  74. package/dist/src/planner/debug.js.map +0 -1
  75. package/dist/src/planner/framework/characteristics.js.map +0 -1
  76. package/dist/src/planner/framework/context.js.map +0 -1
  77. package/dist/src/planner/framework/pass.js.map +0 -1
  78. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  79. package/dist/src/planner/framework/registry.js.map +0 -1
  80. package/dist/src/planner/framework/trace.js.map +0 -1
  81. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  82. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  83. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  84. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  85. package/dist/src/planner/nodes/block.js.map +0 -1
  86. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  87. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  88. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  89. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  92. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  93. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  94. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  95. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  96. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  97. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  98. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  99. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  101. package/dist/src/planner/nodes/filter.js.map +0 -1
  102. package/dist/src/planner/nodes/function.js.map +0 -1
  103. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  104. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  105. package/dist/src/planner/nodes/join-node.js.map +0 -1
  106. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  107. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  108. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  109. package/dist/src/planner/nodes/pragma.js.map +0 -1
  110. package/dist/src/planner/nodes/project-node.js.map +0 -1
  111. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  112. package/dist/src/planner/nodes/reference.js.map +0 -1
  113. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  114. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  115. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  116. package/dist/src/planner/nodes/scalar.js.map +0 -1
  117. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  118. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  119. package/dist/src/planner/nodes/single-row.js.map +0 -1
  120. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  121. package/dist/src/planner/nodes/sort.js.map +0 -1
  122. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  123. package/dist/src/planner/nodes/subquery.js.map +0 -1
  124. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  125. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  126. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  127. package/dist/src/planner/nodes/update-node.js.map +0 -1
  128. package/dist/src/planner/nodes/values-node.js.map +0 -1
  129. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  130. package/dist/src/planner/nodes/window-function.js.map +0 -1
  131. package/dist/src/planner/nodes/window-node.js.map +0 -1
  132. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  133. package/dist/src/planner/optimizer.js.map +0 -1
  134. package/dist/src/planner/planning-context.js.map +0 -1
  135. package/dist/src/planner/resolve.js.map +0 -1
  136. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  137. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  138. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  139. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  141. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  142. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  144. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  145. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  146. package/dist/src/planner/scopes/aliased.js.map +0 -1
  147. package/dist/src/planner/scopes/base.js.map +0 -1
  148. package/dist/src/planner/scopes/empty.js.map +0 -1
  149. package/dist/src/planner/scopes/global.js.map +0 -1
  150. package/dist/src/planner/scopes/multi.js.map +0 -1
  151. package/dist/src/planner/scopes/param.js.map +0 -1
  152. package/dist/src/planner/scopes/registered.js.map +0 -1
  153. package/dist/src/planner/scopes/scope.js.map +0 -1
  154. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  155. package/dist/src/planner/stats/index.js.map +0 -1
  156. package/dist/src/planner/type-utils.js.map +0 -1
  157. package/dist/src/planner/util/key-utils.js.map +0 -1
  158. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  159. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  160. package/dist/src/runtime/async-util.js.map +0 -1
  161. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  162. package/dist/src/runtime/context-helpers.js.map +0 -1
  163. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  164. package/dist/src/runtime/emission-context.js.map +0 -1
  165. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  166. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  167. package/dist/src/runtime/emit/array-index.js.map +0 -1
  168. package/dist/src/runtime/emit/between.js.map +0 -1
  169. package/dist/src/runtime/emit/binary.js.map +0 -1
  170. package/dist/src/runtime/emit/block.js.map +0 -1
  171. package/dist/src/runtime/emit/cache.js.map +0 -1
  172. package/dist/src/runtime/emit/case.js.map +0 -1
  173. package/dist/src/runtime/emit/cast.js.map +0 -1
  174. package/dist/src/runtime/emit/collate.js.map +0 -1
  175. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  176. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  177. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  178. package/dist/src/runtime/emit/create-index.js.map +0 -1
  179. package/dist/src/runtime/emit/create-table.js.map +0 -1
  180. package/dist/src/runtime/emit/create-view.js.map +0 -1
  181. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  182. package/dist/src/runtime/emit/cte.js.map +0 -1
  183. package/dist/src/runtime/emit/delete.js.map +0 -1
  184. package/dist/src/runtime/emit/distinct.js.map +0 -1
  185. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  186. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  187. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  189. package/dist/src/runtime/emit/filter.js.map +0 -1
  190. package/dist/src/runtime/emit/insert.js.map +0 -1
  191. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  192. package/dist/src/runtime/emit/join.js.map +0 -1
  193. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  194. package/dist/src/runtime/emit/literal.js.map +0 -1
  195. package/dist/src/runtime/emit/parameter.js.map +0 -1
  196. package/dist/src/runtime/emit/pragma.js.map +0 -1
  197. package/dist/src/runtime/emit/project.js.map +0 -1
  198. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  199. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  200. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  201. package/dist/src/runtime/emit/returning.js.map +0 -1
  202. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  203. package/dist/src/runtime/emit/scan.js.map +0 -1
  204. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  205. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  206. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  207. package/dist/src/runtime/emit/sink.js.map +0 -1
  208. package/dist/src/runtime/emit/sort.js.map +0 -1
  209. package/dist/src/runtime/emit/subquery.js.map +0 -1
  210. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  211. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  212. package/dist/src/runtime/emit/transaction.js.map +0 -1
  213. package/dist/src/runtime/emit/unary.js.map +0 -1
  214. package/dist/src/runtime/emit/update.js.map +0 -1
  215. package/dist/src/runtime/emit/values.js.map +0 -1
  216. package/dist/src/runtime/emit/window-function.js.map +0 -1
  217. package/dist/src/runtime/emit/window.js.map +0 -1
  218. package/dist/src/runtime/emitters.js.map +0 -1
  219. package/dist/src/runtime/register.js.map +0 -1
  220. package/dist/src/runtime/scheduler.js.map +0 -1
  221. package/dist/src/runtime/types.js.map +0 -1
  222. package/dist/src/runtime/utils.js.map +0 -1
  223. package/dist/src/schema/assertion.js.map +0 -1
  224. package/dist/src/schema/catalog.js.map +0 -1
  225. package/dist/src/schema/change-events.js.map +0 -1
  226. package/dist/src/schema/column.js.map +0 -1
  227. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  228. package/dist/src/schema/function.js.map +0 -1
  229. package/dist/src/schema/manager.js.map +0 -1
  230. package/dist/src/schema/schema-differ.js.map +0 -1
  231. package/dist/src/schema/schema-hasher.js.map +0 -1
  232. package/dist/src/schema/schema.js.map +0 -1
  233. package/dist/src/schema/table.js.map +0 -1
  234. package/dist/src/schema/view.js.map +0 -1
  235. package/dist/src/schema/window-function.js.map +0 -1
  236. package/dist/src/types/builtin-types.js.map +0 -1
  237. package/dist/src/types/index.js.map +0 -1
  238. package/dist/src/types/json-type.js.map +0 -1
  239. package/dist/src/types/logical-type.js.map +0 -1
  240. package/dist/src/types/plugin-interface.js.map +0 -1
  241. package/dist/src/types/registry.js.map +0 -1
  242. package/dist/src/types/temporal-types.js.map +0 -1
  243. package/dist/src/types/validation.js.map +0 -1
  244. package/dist/src/util/affinity.js.map +0 -1
  245. package/dist/src/util/ast-stringify.js.map +0 -1
  246. package/dist/src/util/cached.js.map +0 -1
  247. package/dist/src/util/coercion.js.map +0 -1
  248. package/dist/src/util/comparison.js.map +0 -1
  249. package/dist/src/util/environment.js.map +0 -1
  250. package/dist/src/util/hash.js.map +0 -1
  251. package/dist/src/util/latches.js.map +0 -1
  252. package/dist/src/util/mutation-statement.js.map +0 -1
  253. package/dist/src/util/patterns.js.map +0 -1
  254. package/dist/src/util/plan-formatter.js.map +0 -1
  255. package/dist/src/util/plugin-helper.js.map +0 -1
  256. package/dist/src/util/row-descriptor.js.map +0 -1
  257. package/dist/src/util/serialization.js.map +0 -1
  258. package/dist/src/util/sql-literal.js.map +0 -1
  259. package/dist/src/util/working-table-iterable.js.map +0 -1
  260. package/dist/src/vtab/best-access-plan.js.map +0 -1
  261. package/dist/src/vtab/connection.js.map +0 -1
  262. package/dist/src/vtab/filter-info.js.map +0 -1
  263. package/dist/src/vtab/index-info.js.map +0 -1
  264. package/dist/src/vtab/manifest.js.map +0 -1
  265. package/dist/src/vtab/memory/connection.js.map +0 -1
  266. package/dist/src/vtab/memory/index.js.map +0 -1
  267. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  268. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  276. package/dist/src/vtab/memory/module.js.map +0 -1
  277. package/dist/src/vtab/memory/table.js.map +0 -1
  278. package/dist/src/vtab/memory/types.js.map +0 -1
  279. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  280. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  281. package/dist/src/vtab/module.js.map +0 -1
  282. package/dist/src/vtab/table.js.map +0 -1
  283. package/src/common/constants.ts +0 -60
  284. package/src/common/datatype.ts +0 -85
  285. package/src/common/errors.ts +0 -189
  286. package/src/common/json-types.ts +0 -16
  287. package/src/common/logger.ts +0 -97
  288. package/src/common/type-inference.ts +0 -39
  289. package/src/common/types.ts +0 -151
  290. package/src/core/database-options.ts +0 -258
  291. package/src/core/database.ts +0 -1461
  292. package/src/core/param.ts +0 -56
  293. package/src/core/statement.ts +0 -528
  294. package/src/func/builtins/aggregate.ts +0 -269
  295. package/src/func/builtins/builtin-window-functions.ts +0 -166
  296. package/src/func/builtins/conversion.ts +0 -226
  297. package/src/func/builtins/datetime.ts +0 -500
  298. package/src/func/builtins/explain.ts +0 -779
  299. package/src/func/builtins/generation.ts +0 -43
  300. package/src/func/builtins/index.ts +0 -167
  301. package/src/func/builtins/json-helpers.ts +0 -237
  302. package/src/func/builtins/json-tvf.ts +0 -224
  303. package/src/func/builtins/json.ts +0 -588
  304. package/src/func/builtins/scalar.ts +0 -423
  305. package/src/func/builtins/schema.ts +0 -213
  306. package/src/func/builtins/string.ts +0 -306
  307. package/src/func/builtins/timespan.ts +0 -179
  308. package/src/func/context.ts +0 -258
  309. package/src/func/registration.ts +0 -201
  310. package/src/index.ts +0 -172
  311. package/src/parser/ast.ts +0 -581
  312. package/src/parser/index.ts +0 -65
  313. package/src/parser/lexer.ts +0 -806
  314. package/src/parser/parser.ts +0 -3352
  315. package/src/parser/utils.ts +0 -10
  316. package/src/parser/visitor.ts +0 -188
  317. package/src/planner/analysis/README.md +0 -93
  318. package/src/planner/analysis/binding-collector.ts +0 -83
  319. package/src/planner/analysis/const-evaluator.ts +0 -63
  320. package/src/planner/analysis/const-pass.ts +0 -282
  321. package/src/planner/analysis/constraint-extractor.ts +0 -764
  322. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  323. package/src/planner/building/alter-table.ts +0 -49
  324. package/src/planner/building/block.ts +0 -93
  325. package/src/planner/building/constraint-builder.ts +0 -178
  326. package/src/planner/building/create-assertion.ts +0 -7
  327. package/src/planner/building/create-view.ts +0 -29
  328. package/src/planner/building/ddl.ts +0 -24
  329. package/src/planner/building/declare-schema.ts +0 -22
  330. package/src/planner/building/delete.ts +0 -218
  331. package/src/planner/building/drop-assertion.ts +0 -11
  332. package/src/planner/building/drop-table.ts +0 -13
  333. package/src/planner/building/drop-view.ts +0 -19
  334. package/src/planner/building/expression.ts +0 -205
  335. package/src/planner/building/function-call.ts +0 -129
  336. package/src/planner/building/insert.ts +0 -435
  337. package/src/planner/building/pragma.ts +0 -34
  338. package/src/planner/building/schema-resolution.ts +0 -176
  339. package/src/planner/building/select-aggregates.ts +0 -318
  340. package/src/planner/building/select-compound.ts +0 -119
  341. package/src/planner/building/select-context.ts +0 -85
  342. package/src/planner/building/select-modifiers.ts +0 -236
  343. package/src/planner/building/select-projections.ts +0 -177
  344. package/src/planner/building/select-window.ts +0 -259
  345. package/src/planner/building/select.ts +0 -567
  346. package/src/planner/building/table-function.ts +0 -49
  347. package/src/planner/building/table.ts +0 -40
  348. package/src/planner/building/transaction.ts +0 -23
  349. package/src/planner/building/update.ts +0 -331
  350. package/src/planner/building/with.ts +0 -180
  351. package/src/planner/cache/correlation-detector.ts +0 -83
  352. package/src/planner/cache/materialization-advisory.ts +0 -265
  353. package/src/planner/cache/reference-graph.ts +0 -196
  354. package/src/planner/cost/index.ts +0 -169
  355. package/src/planner/debug/logger-utils.ts +0 -68
  356. package/src/planner/debug.ts +0 -480
  357. package/src/planner/framework/README.md +0 -132
  358. package/src/planner/framework/characteristics.ts +0 -503
  359. package/src/planner/framework/context.ts +0 -239
  360. package/src/planner/framework/pass.ts +0 -354
  361. package/src/planner/framework/physical-utils.ts +0 -210
  362. package/src/planner/framework/registry.ts +0 -261
  363. package/src/planner/framework/trace.ts +0 -259
  364. package/src/planner/nodes/add-constraint-node.ts +0 -62
  365. package/src/planner/nodes/aggregate-function.ts +0 -155
  366. package/src/planner/nodes/aggregate-node.ts +0 -267
  367. package/src/planner/nodes/array-index-node.ts +0 -50
  368. package/src/planner/nodes/block.ts +0 -80
  369. package/src/planner/nodes/cache-node.ts +0 -103
  370. package/src/planner/nodes/constraint-check-node.ts +0 -138
  371. package/src/planner/nodes/create-assertion-node.ts +0 -51
  372. package/src/planner/nodes/create-index-node.ts +0 -41
  373. package/src/planner/nodes/create-table-node.ts +0 -35
  374. package/src/planner/nodes/create-view-node.ts +0 -44
  375. package/src/planner/nodes/cte-node.ts +0 -168
  376. package/src/planner/nodes/cte-reference-node.ts +0 -125
  377. package/src/planner/nodes/declarative-schema.ts +0 -221
  378. package/src/planner/nodes/delete-node.ts +0 -102
  379. package/src/planner/nodes/distinct-node.ts +0 -107
  380. package/src/planner/nodes/dml-executor-node.ts +0 -104
  381. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  382. package/src/planner/nodes/drop-table-node.ts +0 -36
  383. package/src/planner/nodes/drop-view-node.ts +0 -37
  384. package/src/planner/nodes/filter.ts +0 -144
  385. package/src/planner/nodes/function.ts +0 -98
  386. package/src/planner/nodes/insert-node.ts +0 -126
  387. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  388. package/src/planner/nodes/join-node.ts +0 -336
  389. package/src/planner/nodes/limit-offset.ts +0 -144
  390. package/src/planner/nodes/plan-node-type.ts +0 -95
  391. package/src/planner/nodes/plan-node.ts +0 -503
  392. package/src/planner/nodes/pragma.ts +0 -98
  393. package/src/planner/nodes/project-node.ts +0 -337
  394. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  395. package/src/planner/nodes/reference.ts +0 -334
  396. package/src/planner/nodes/remote-query-node.ts +0 -73
  397. package/src/planner/nodes/retrieve-node.ts +0 -86
  398. package/src/planner/nodes/returning-node.ts +0 -269
  399. package/src/planner/nodes/scalar.ts +0 -772
  400. package/src/planner/nodes/sequencing-node.ts +0 -113
  401. package/src/planner/nodes/set-operation-node.ts +0 -87
  402. package/src/planner/nodes/single-row.ts +0 -85
  403. package/src/planner/nodes/sink-node.ts +0 -61
  404. package/src/planner/nodes/sort.ts +0 -166
  405. package/src/planner/nodes/stream-aggregate.ts +0 -293
  406. package/src/planner/nodes/subquery.ts +0 -268
  407. package/src/planner/nodes/table-access-nodes.ts +0 -323
  408. package/src/planner/nodes/table-function-call.ts +0 -134
  409. package/src/planner/nodes/transaction-node.ts +0 -55
  410. package/src/planner/nodes/update-node.ts +0 -138
  411. package/src/planner/nodes/values-node.ts +0 -244
  412. package/src/planner/nodes/view-reference-node.ts +0 -97
  413. package/src/planner/nodes/window-function.ts +0 -73
  414. package/src/planner/nodes/window-node.ts +0 -199
  415. package/src/planner/optimizer-tuning.ts +0 -105
  416. package/src/planner/optimizer.ts +0 -332
  417. package/src/planner/planning-context.ts +0 -190
  418. package/src/planner/resolve.ts +0 -101
  419. package/src/planner/rules/README.md +0 -96
  420. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  421. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  422. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  423. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  424. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  425. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  426. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  427. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  428. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  429. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  430. package/src/planner/scopes/aliased.ts +0 -50
  431. package/src/planner/scopes/base.ts +0 -10
  432. package/src/planner/scopes/empty.ts +0 -12
  433. package/src/planner/scopes/global.ts +0 -73
  434. package/src/planner/scopes/multi.ts +0 -40
  435. package/src/planner/scopes/param.ts +0 -95
  436. package/src/planner/scopes/registered.ts +0 -67
  437. package/src/planner/scopes/scope.ts +0 -16
  438. package/src/planner/stats/basic-estimates.ts +0 -107
  439. package/src/planner/stats/index.ts +0 -158
  440. package/src/planner/type-utils.ts +0 -87
  441. package/src/planner/util/key-utils.ts +0 -46
  442. package/src/planner/validation/determinism-validator.ts +0 -104
  443. package/src/planner/validation/plan-validator.ts +0 -335
  444. package/src/runtime/async-util.ts +0 -283
  445. package/src/runtime/cache/shared-cache.ts +0 -169
  446. package/src/runtime/context-helpers.ts +0 -191
  447. package/src/runtime/deferred-constraint-queue.ts +0 -196
  448. package/src/runtime/emission-context.ts +0 -319
  449. package/src/runtime/emit/add-constraint.ts +0 -78
  450. package/src/runtime/emit/aggregate.ts +0 -581
  451. package/src/runtime/emit/array-index.ts +0 -25
  452. package/src/runtime/emit/between.ts +0 -51
  453. package/src/runtime/emit/binary.ts +0 -357
  454. package/src/runtime/emit/block.ts +0 -23
  455. package/src/runtime/emit/cache.ts +0 -64
  456. package/src/runtime/emit/case.ts +0 -87
  457. package/src/runtime/emit/cast.ts +0 -151
  458. package/src/runtime/emit/collate.ts +0 -9
  459. package/src/runtime/emit/column-reference.ts +0 -17
  460. package/src/runtime/emit/constraint-check.ts +0 -290
  461. package/src/runtime/emit/create-assertion.ts +0 -82
  462. package/src/runtime/emit/create-index.ts +0 -15
  463. package/src/runtime/emit/create-table.ts +0 -15
  464. package/src/runtime/emit/create-view.ts +0 -52
  465. package/src/runtime/emit/cte-reference.ts +0 -38
  466. package/src/runtime/emit/cte.ts +0 -39
  467. package/src/runtime/emit/delete.ts +0 -24
  468. package/src/runtime/emit/distinct.ts +0 -40
  469. package/src/runtime/emit/dml-executor.ts +0 -198
  470. package/src/runtime/emit/drop-assertion.ts +0 -45
  471. package/src/runtime/emit/drop-table.ts +0 -27
  472. package/src/runtime/emit/drop-view.ts +0 -49
  473. package/src/runtime/emit/filter.ts +0 -30
  474. package/src/runtime/emit/insert.ts +0 -42
  475. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  476. package/src/runtime/emit/join.ts +0 -148
  477. package/src/runtime/emit/limit-offset.ts +0 -73
  478. package/src/runtime/emit/literal.ts +0 -17
  479. package/src/runtime/emit/parameter.ts +0 -59
  480. package/src/runtime/emit/pragma.ts +0 -56
  481. package/src/runtime/emit/project.ts +0 -46
  482. package/src/runtime/emit/recursive-cte.ts +0 -111
  483. package/src/runtime/emit/remote-query.ts +0 -47
  484. package/src/runtime/emit/retrieve.ts +0 -15
  485. package/src/runtime/emit/returning.ts +0 -41
  486. package/src/runtime/emit/scalar-function.ts +0 -69
  487. package/src/runtime/emit/scan.ts +0 -106
  488. package/src/runtime/emit/schema-declarative.ts +0 -215
  489. package/src/runtime/emit/sequencing.ts +0 -24
  490. package/src/runtime/emit/set-operation.ts +0 -141
  491. package/src/runtime/emit/sink.ts +0 -27
  492. package/src/runtime/emit/sort.ts +0 -75
  493. package/src/runtime/emit/subquery.ts +0 -203
  494. package/src/runtime/emit/table-valued-function.ts +0 -106
  495. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  496. package/src/runtime/emit/transaction.ts +0 -205
  497. package/src/runtime/emit/unary.ts +0 -101
  498. package/src/runtime/emit/update.ts +0 -66
  499. package/src/runtime/emit/values.ts +0 -66
  500. package/src/runtime/emit/window-function.ts +0 -42
  501. package/src/runtime/emit/window.ts +0 -458
  502. package/src/runtime/emitters.ts +0 -183
  503. package/src/runtime/register.ts +0 -150
  504. package/src/runtime/scheduler.ts +0 -488
  505. package/src/runtime/types.ts +0 -242
  506. package/src/runtime/utils.ts +0 -177
  507. package/src/schema/assertion.ts +0 -21
  508. package/src/schema/catalog.ts +0 -269
  509. package/src/schema/change-events.ts +0 -80
  510. package/src/schema/column.ts +0 -51
  511. package/src/schema/declared-schema-manager.ts +0 -82
  512. package/src/schema/function.ts +0 -188
  513. package/src/schema/manager.ts +0 -1034
  514. package/src/schema/schema-differ.ts +0 -214
  515. package/src/schema/schema-hasher.ts +0 -26
  516. package/src/schema/schema.ts +0 -222
  517. package/src/schema/table.ts +0 -409
  518. package/src/schema/view.ts +0 -19
  519. package/src/schema/window-function.ts +0 -56
  520. package/src/types/builtin-types.ts +0 -350
  521. package/src/types/index.ts +0 -17
  522. package/src/types/json-type.ts +0 -152
  523. package/src/types/logical-type.ts +0 -91
  524. package/src/types/plugin-interface.ts +0 -10
  525. package/src/types/registry.ts +0 -204
  526. package/src/types/temporal-types.ts +0 -290
  527. package/src/types/validation.ts +0 -120
  528. package/src/util/affinity.ts +0 -151
  529. package/src/util/ast-stringify.ts +0 -887
  530. package/src/util/cached.ts +0 -25
  531. package/src/util/coercion.ts +0 -113
  532. package/src/util/comparison.ts +0 -510
  533. package/src/util/environment.ts +0 -52
  534. package/src/util/hash.ts +0 -90
  535. package/src/util/latches.ts +0 -47
  536. package/src/util/mutation-statement.ts +0 -135
  537. package/src/util/patterns.ts +0 -56
  538. package/src/util/plan-formatter.ts +0 -48
  539. package/src/util/plugin-helper.ts +0 -110
  540. package/src/util/row-descriptor.ts +0 -105
  541. package/src/util/serialization.ts +0 -47
  542. package/src/util/sql-literal.ts +0 -22
  543. package/src/util/working-table-iterable.ts +0 -38
  544. package/src/vtab/best-access-plan.ts +0 -244
  545. package/src/vtab/connection.ts +0 -36
  546. package/src/vtab/filter-info.ts +0 -23
  547. package/src/vtab/index-info.ts +0 -84
  548. package/src/vtab/manifest.ts +0 -86
  549. package/src/vtab/memory/connection.ts +0 -73
  550. package/src/vtab/memory/index.ts +0 -191
  551. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  552. package/src/vtab/memory/layer/base.ts +0 -275
  553. package/src/vtab/memory/layer/connection.ts +0 -203
  554. package/src/vtab/memory/layer/interface.ts +0 -47
  555. package/src/vtab/memory/layer/manager.ts +0 -909
  556. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  557. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  558. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  559. package/src/vtab/memory/layer/transaction.ts +0 -229
  560. package/src/vtab/memory/module.ts +0 -667
  561. package/src/vtab/memory/table.ts +0 -251
  562. package/src/vtab/memory/types.ts +0 -23
  563. package/src/vtab/memory/utils/logging.ts +0 -36
  564. package/src/vtab/memory/utils/primary-key.ts +0 -163
  565. package/src/vtab/module.ts +0 -162
  566. package/src/vtab/table.ts +0 -177
@@ -1,150 +0,0 @@
1
- import { PlanNodeType } from "../planner/nodes/plan-node-type.js";
2
- import { registerEmitter, type EmitterFunc } from "./emitters.js";
3
- import { emitBinaryOp } from "./emit/binary.js";
4
- import { emitUnaryOp } from "./emit/unary.js";
5
- import { emitLiteral } from "./emit/literal.js";
6
- import { emitSeqScan } from "./emit/scan.js";
7
- import { emitIn, emitScalarSubquery, emitExists } from "./emit/subquery.js";
8
- import { emitBlock } from "./emit/block.js";
9
- import { emitParameterReference } from './emit/parameter.js';
10
- import { emitCreateTable } from './emit/create-table.js';
11
- import { emitCreateIndex } from './emit/create-index.js';
12
- import { emitDropTable } from './emit/drop-table.js';
13
- import { emitCreateView } from './emit/create-view.js';
14
- import { emitDropView } from './emit/drop-view.js';
15
- import { emitCreateAssertion } from './emit/create-assertion.js';
16
- import { emitDropAssertion } from './emit/drop-assertion.js';
17
- import { emitCTE } from './emit/cte.js';
18
- import { emitCTEReference } from './emit/cte-reference.js';
19
- import { emitInternalRecursiveCTERef } from './emit/internal-recursive-cte-ref.js';
20
- import { emitInsert } from './emit/insert.js';
21
- import { emitUpdate } from './emit/update.js';
22
- import { emitDmlExecutor } from './emit/dml-executor.js';
23
- import { emitDelete } from './emit/delete.js';
24
- import { emitProject } from './emit/project.js';
25
- import { emitColumnReference } from './emit/column-reference.js';
26
- import { emitArrayIndex } from './emit/array-index.js';
27
- import { emitValues, emitSingleRow, emitTableLiteral } from './emit/values.js';
28
- import { emitFilter } from './emit/filter.js';
29
- import { emitDistinct } from './emit/distinct.js';
30
- import { emitScalarFunctionCall } from './emit/scalar-function.js';
31
- import { emitLimitOffset } from './emit/limit-offset.js';
32
- import { emitStreamAggregate } from './emit/aggregate.js';
33
- import { emitCaseExpr } from './emit/case.js';
34
- import { emitCast } from './emit/cast.js';
35
- import { emitCollate } from "./emit/collate.js";
36
- import { emitTableValuedFunctionCall } from './emit/table-valued-function.js';
37
- import { emitTransaction } from './emit/transaction.js';
38
- import { emitPragma } from './emit/pragma.js';
39
- import { emitSort } from './emit/sort.js';
40
- import { emitWindow } from './emit/window.js';
41
- import { emitWindowFunctionCall } from './emit/window-function.js';
42
- import { emitSequencing } from './emit/sequencing.js';
43
- import { emitRecursiveCTE } from './emit/recursive-cte.js';
44
- import { emitSetOperation } from './emit/set-operation.js';
45
- import { emitConstraintCheck } from './emit/constraint-check.js';
46
- import { emitAddConstraint } from './emit/add-constraint.js';
47
- import { emitLoopJoin } from './emit/join.js';
48
- import { emitCache } from './emit/cache.js';
49
- import { emitReturning } from './emit/returning.js';
50
- import { emitSink } from './emit/sink.js';
51
- import { emitBetween } from './emit/between.js';
52
- import { emitRetrieve } from './emit/retrieve.js';
53
- import { emitRemoteQuery } from './emit/remote-query.js';
54
- import { emitDeclareSchema, emitDiffSchema, emitApplySchema, emitExplainSchema } from './emit/schema-declarative.js';
55
-
56
- let registered = false;
57
-
58
- export function registerEmitters() {
59
- if (registered) {
60
- return;
61
- }
62
- registered = true;
63
-
64
- // Scalar expression emitters
65
- registerEmitter(PlanNodeType.BinaryOp, emitBinaryOp as EmitterFunc);
66
- registerEmitter(PlanNodeType.UnaryOp, emitUnaryOp as EmitterFunc);
67
- registerEmitter(PlanNodeType.Literal, emitLiteral as EmitterFunc);
68
- registerEmitter(PlanNodeType.ColumnReference, emitColumnReference as EmitterFunc);
69
- registerEmitter(PlanNodeType.ArrayIndex, emitArrayIndex as EmitterFunc);
70
- registerEmitter(PlanNodeType.ParameterReference, emitParameterReference as EmitterFunc);
71
- registerEmitter(PlanNodeType.ScalarFunctionCall, emitScalarFunctionCall as EmitterFunc);
72
- registerEmitter(PlanNodeType.WindowFunctionCall, emitWindowFunctionCall as EmitterFunc);
73
- registerEmitter(PlanNodeType.CaseExpr, emitCaseExpr as EmitterFunc);
74
- registerEmitter(PlanNodeType.Cast, emitCast as EmitterFunc);
75
- registerEmitter(PlanNodeType.Collate, emitCollate as EmitterFunc);
76
- registerEmitter(PlanNodeType.Between, emitBetween as EmitterFunc);
77
- registerEmitter(PlanNodeType.ScalarSubquery, emitScalarSubquery as EmitterFunc);
78
- registerEmitter(PlanNodeType.Exists, emitExists as EmitterFunc);
79
-
80
- // Relational emitters (mix of logical and physical for now)
81
- registerEmitter(PlanNodeType.Block, emitBlock as EmitterFunc);
82
- registerEmitter(PlanNodeType.CTEReference, emitCTEReference as EmitterFunc);
83
- registerEmitter(PlanNodeType.InternalRecursiveCTERef, emitInternalRecursiveCTERef as EmitterFunc);
84
- registerEmitter(PlanNodeType.Retrieve, emitRetrieve as EmitterFunc);
85
-
86
- // Physical access node emitters (Phase 1)
87
- registerEmitter(PlanNodeType.SeqScan, emitSeqScan as EmitterFunc);
88
- registerEmitter(PlanNodeType.IndexScan, emitSeqScan as EmitterFunc); // Reuse for now
89
- registerEmitter(PlanNodeType.IndexSeek, emitSeqScan as EmitterFunc); // Reuse for now
90
- registerEmitter(PlanNodeType.RemoteQuery, emitRemoteQuery as EmitterFunc);
91
-
92
- registerEmitter(PlanNodeType.Values, emitValues as EmitterFunc);
93
- registerEmitter(PlanNodeType.TableLiteral, emitTableLiteral as EmitterFunc);
94
- registerEmitter(PlanNodeType.SingleRow, emitSingleRow as EmitterFunc);
95
- registerEmitter(PlanNodeType.Filter, emitFilter as EmitterFunc);
96
- registerEmitter(PlanNodeType.Project, emitProject as EmitterFunc);
97
- registerEmitter(PlanNodeType.Distinct, emitDistinct as EmitterFunc);
98
- registerEmitter(PlanNodeType.Sort, emitSort as EmitterFunc);
99
- registerEmitter(PlanNodeType.LimitOffset, emitLimitOffset as EmitterFunc);
100
- registerEmitter(PlanNodeType.TableFunctionCall, emitTableValuedFunctionCall as EmitterFunc);
101
- registerEmitter(PlanNodeType.In, emitIn as EmitterFunc);
102
- registerEmitter(PlanNodeType.Window, emitWindow as EmitterFunc);
103
- registerEmitter(PlanNodeType.Sequencing, emitSequencing as EmitterFunc);
104
- registerEmitter(PlanNodeType.CTE, emitCTE as EmitterFunc);
105
- registerEmitter(PlanNodeType.RecursiveCTE, emitRecursiveCTE as EmitterFunc);
106
-
107
- // Physical aggregate emitters
108
- registerEmitter(PlanNodeType.StreamAggregate, emitStreamAggregate as EmitterFunc);
109
- // Do not map the aggregate node to an emitter. It is logical only.
110
- // NO: registerEmitter(PlanNodeType.Aggregate, emitStreamAggregate as EmitterFunc);
111
- // TODO: registerEmitter(PlanNodeType.HashAggregate, emitHashAggregate as EmitterFunc);
112
-
113
- // DML/DDL emitters
114
- registerEmitter(PlanNodeType.CreateTable, emitCreateTable as EmitterFunc);
115
- registerEmitter(PlanNodeType.CreateIndex, emitCreateIndex as EmitterFunc);
116
- registerEmitter(PlanNodeType.DropTable, emitDropTable as EmitterFunc);
117
- registerEmitter(PlanNodeType.CreateView, emitCreateView as EmitterFunc);
118
- registerEmitter(PlanNodeType.DropView, emitDropView as EmitterFunc);
119
- registerEmitter(PlanNodeType.CreateAssertion, emitCreateAssertion as EmitterFunc);
120
- registerEmitter(PlanNodeType.DropAssertion, emitDropAssertion as EmitterFunc);
121
- registerEmitter(PlanNodeType.Insert, emitInsert as EmitterFunc);
122
- registerEmitter(PlanNodeType.Update, emitUpdate as EmitterFunc);
123
- registerEmitter(PlanNodeType.UpdateExecutor, emitDmlExecutor as EmitterFunc);
124
- registerEmitter(PlanNodeType.Delete, emitDelete as EmitterFunc);
125
- registerEmitter(PlanNodeType.ConstraintCheck, emitConstraintCheck as EmitterFunc);
126
- registerEmitter(PlanNodeType.AddConstraint, emitAddConstraint as EmitterFunc);
127
- registerEmitter(PlanNodeType.Returning, emitReturning as EmitterFunc);
128
-
129
- // Transaction control emitters
130
- registerEmitter(PlanNodeType.Transaction, emitTransaction as EmitterFunc);
131
- registerEmitter(PlanNodeType.Pragma, emitPragma as EmitterFunc);
132
-
133
- // Declarative schema
134
- registerEmitter(PlanNodeType.DeclareSchema, emitDeclareSchema as EmitterFunc);
135
- registerEmitter(PlanNodeType.DiffSchema, emitDiffSchema as EmitterFunc);
136
- registerEmitter(PlanNodeType.ApplySchema, emitApplySchema as EmitterFunc);
137
- registerEmitter(PlanNodeType.ExplainSchema, emitExplainSchema as EmitterFunc);
138
-
139
- // Set operation emitter
140
- registerEmitter(PlanNodeType.SetOperation, emitSetOperation as EmitterFunc);
141
-
142
- // Join emitters
143
- registerEmitter(PlanNodeType.Join, emitLoopJoin as EmitterFunc);
144
-
145
- // Cache emitter
146
- registerEmitter(PlanNodeType.Cache, emitCache as EmitterFunc);
147
-
148
- // Sink emitter
149
- registerEmitter(PlanNodeType.Sink, emitSink as EmitterFunc);
150
- }
@@ -1,488 +0,0 @@
1
- import type { Instruction, RuntimeContext, InstructionRuntimeStats } from "./types.js";
2
- import type { OutputValue, RuntimeValue, Row } from "../common/types.js";
3
- import { isAsyncIterable } from "./utils.js";
4
- import { createLogger } from "../common/logger.js";
5
- import { DefaultContextTracker } from './types.js';
6
-
7
- const log = createLogger('runtime:metrics');
8
- const contextLog = createLogger('runtime:context');
9
-
10
- type ResultDestination = number | null;
11
-
12
- /** Symbol to mark wrapped iterables to prevent double-wrapping */
13
- const TRACED_ITERABLE_SYMBOL = Symbol('tracedIterable');
14
-
15
- /**
16
- * Wraps an async iterable to emit row-level trace events
17
- */
18
- function wrapIterableForTracing<T>(
19
- src: AsyncIterable<T>,
20
- ctx: RuntimeContext,
21
- instructionIndex: number,
22
- instruction: Instruction
23
- ): AsyncIterable<T> {
24
- // Prevent double-wrapping
25
- if ((src as unknown as Record<symbol, boolean>)[TRACED_ITERABLE_SYMBOL]) {
26
- return src;
27
- }
28
-
29
- const tracer = ctx.tracer!;
30
- const wrapped = (async function* () {
31
- let rowIndex = 0;
32
- for await (const row of src) {
33
- // Only emit row trace events for valid rows (non-empty arrays)
34
- if (Array.isArray(row) && row.length > 0) {
35
- tracer.traceRow(instructionIndex, instruction, rowIndex++, row as Row);
36
- }
37
- yield row;
38
- }
39
- })();
40
-
41
- // Mark as already wrapped
42
- (wrapped as unknown as Record<symbol, boolean>)[TRACED_ITERABLE_SYMBOL] = true;
43
- return wrapped;
44
- }
45
-
46
- export class Scheduler {
47
- readonly instructions: Instruction[] = [];
48
- /** Index of the instruction that consumes the output of each instruction. */
49
- readonly destinations: ResultDestination[];
50
-
51
- constructor(root: Instruction) {
52
- const argIndexes: number[][] = [];
53
-
54
- const buildPlan = (inst: Instruction): number => {
55
- const instArgIndexes = inst.params.map(p => buildPlan(p));
56
- const currentIndex = this.instructions.push(inst) - 1;
57
- argIndexes[currentIndex] = instArgIndexes;
58
- return currentIndex;
59
- };
60
-
61
- buildPlan(root);
62
-
63
- this.destinations = new Array<ResultDestination>(this.instructions.length).fill(null);
64
-
65
- for (let instIndex = 0; instIndex < this.instructions.length; ++instIndex) {
66
- const instArgIndexes = argIndexes[instIndex];
67
- if (instArgIndexes) {
68
- for (let argIndex = 0; argIndex < instArgIndexes.length; ++argIndex) {
69
- this.destinations[instArgIndexes[argIndex]] = instIndex;
70
- }
71
- }
72
- }
73
- }
74
-
75
- run(ctx: RuntimeContext): OutputValue {
76
- // Initialize context tracker if not already present
77
- if (!ctx.contextTracker) {
78
- ctx.contextTracker = new DefaultContextTracker();
79
- }
80
-
81
- let result: OutputValue;
82
-
83
- if (ctx.enableMetrics) {
84
- result = this.runWithMetrics(ctx);
85
- } else if (!ctx.tracer) {
86
- result = this.runOptimized(ctx);
87
- } else {
88
- result = this.runWithTracing(ctx);
89
- }
90
-
91
- // Check for remaining contexts and warn rather than error
92
- if (ctx.contextTracker && ctx.contextTracker.hasRemainingContexts()) {
93
- const remaining = ctx.contextTracker.getRemainingContexts();
94
- contextLog('Context leak detected - remaining contexts:', remaining.map(c => c.source));
95
- }
96
-
97
- return result;
98
- }
99
-
100
- private runOptimized(ctx: RuntimeContext): OutputValue {
101
- // Argument lists for each instruction.
102
- const instrArgs = new Array(this.instructions.length).fill(null).map(() => [] as OutputValue[] | undefined);
103
- // Running output
104
- let output: OutputValue | undefined;
105
-
106
- // Run synchronously until we hit a promise
107
- for (let i = 0; i < this.instructions.length; ++i) {
108
- const args = instrArgs[i]!; // Guaranteed not to contain promises
109
- instrArgs[i] = undefined; // Clear args as we go to minimize memory usage.
110
-
111
- output = this.instructions[i].run(ctx, ...(args as RuntimeValue[]));
112
-
113
- // If the instruction returned a promise, switch to async mode for rest of instructions
114
- if (output instanceof Promise) {
115
- return this.runAsync(ctx, instrArgs, i, output);
116
- }
117
-
118
- // Store synchronous output
119
- const destination = this.destinations[i];
120
- if (destination !== null) {
121
- instrArgs[destination]!.push(output);
122
- }
123
- }
124
-
125
- return output as OutputValue;
126
- }
127
-
128
- private async runAsync(
129
- ctx: RuntimeContext,
130
- instrArgs: (OutputValue[] | undefined)[],
131
- startIndex: number,
132
- pendingOutput: OutputValue
133
- ): Promise<RuntimeValue> {
134
- // Instruction indexes that have promise arguments
135
- const hasPromise: boolean[] = [];
136
-
137
- let output: OutputValue | undefined = pendingOutput;
138
-
139
- // Store the output from the transition instruction
140
- const transitionDestination = this.destinations[startIndex];
141
- if (transitionDestination !== null) {
142
- instrArgs[transitionDestination]!.push(output);
143
- hasPromise[transitionDestination] = true;
144
- }
145
-
146
- // Continue with remaining instructions asynchronously
147
- for (let i = startIndex + 1; i < this.instructions.length; ++i) {
148
- let args = instrArgs[i]!;
149
- instrArgs[i] = undefined;
150
-
151
- // Resolve any promise arguments
152
- if (hasPromise[i]) {
153
- args = await Promise.all(args);
154
- }
155
-
156
- // Run the instruction
157
- output = this.instructions[i].run(ctx, ...(args as RuntimeValue[]));
158
-
159
- // Store the output
160
- const destination = this.destinations[i];
161
- if (destination !== null) {
162
- instrArgs[destination]!.push(output);
163
- if (output instanceof Promise) {
164
- hasPromise[destination] = true;
165
- }
166
- }
167
- }
168
-
169
- return output as OutputValue;
170
- }
171
-
172
- private runWithTracing(ctx: RuntimeContext): OutputValue {
173
- // Argument lists for each instruction.
174
- const instrArgs = new Array(this.instructions.length).fill(null).map(() => [] as OutputValue[] | undefined);
175
- // Running output
176
- let output: OutputValue | undefined;
177
-
178
- // Run synchronously until we hit a promise
179
- for (let i = 0; i < this.instructions.length; ++i) {
180
- const instruction = this.instructions[i];
181
- const args = instrArgs[i]!; // Guaranteed not to contain promises
182
- instrArgs[i] = undefined; // Clear args as we go to minimize memory usage.
183
-
184
- // Trace input
185
- ctx.tracer!.traceInput(i, instruction, args as RuntimeValue[]);
186
-
187
- try {
188
- output = instruction.run(ctx, ...(args as RuntimeValue[]));
189
-
190
- // If the instruction returned a promise, switch to async mode for rest of instructions
191
- if (output instanceof Promise) {
192
- return this.runAsyncWithTracing(ctx, instrArgs, i, output);
193
- }
194
-
195
- // Wrap async iterables for row-level tracing
196
- if (isAsyncIterable(output)) {
197
- output = wrapIterableForTracing(output, ctx, i, instruction);
198
- }
199
-
200
- // Trace output - handle promises properly
201
- ctx.tracer!.traceOutput(i, instruction, output);
202
-
203
- // Keep the original output (promise or value) for flow control
204
- } catch (error) {
205
- // Trace error
206
- ctx.tracer!.traceError(i, instruction, error as Error);
207
- throw error; // Re-throw the error
208
- }
209
-
210
- // Store synchronous output
211
- const destination = this.destinations[i];
212
- if (destination !== null) {
213
- instrArgs[destination]!.push(output);
214
- }
215
- }
216
-
217
- return output as OutputValue;
218
- }
219
-
220
- private async runAsyncWithTracing(
221
- ctx: RuntimeContext,
222
- instrArgs: (OutputValue[] | undefined)[],
223
- startIndex: number,
224
- pendingOutput: OutputValue
225
- ): Promise<RuntimeValue> {
226
- // Handle the initial pending output
227
- let resolvedPendingOutput = await pendingOutput;
228
- if (isAsyncIterable(resolvedPendingOutput)) {
229
- resolvedPendingOutput = wrapIterableForTracing(resolvedPendingOutput, ctx, startIndex, this.instructions[startIndex]);
230
- }
231
- ctx.tracer!.traceOutput(startIndex, this.instructions[startIndex], resolvedPendingOutput);
232
-
233
- // Instruction indexes that have promise arguments
234
- const hasPromise: boolean[] = [];
235
-
236
- let output: OutputValue | undefined = resolvedPendingOutput;
237
-
238
- // Store the output from the transition instruction
239
- const transitionDestination = this.destinations[startIndex];
240
- if (transitionDestination !== null) {
241
- instrArgs[transitionDestination]!.push(output);
242
- hasPromise[transitionDestination] = true;
243
- }
244
-
245
- // Continue with remaining instructions asynchronously
246
- for (let i = startIndex + 1; i < this.instructions.length; ++i) {
247
- const instruction = this.instructions[i];
248
- let args = instrArgs[i]!;
249
- instrArgs[i] = undefined;
250
-
251
- // Resolve any promise arguments
252
- if (hasPromise[i]) {
253
- args = await Promise.all(args);
254
- }
255
-
256
- // Trace input
257
- ctx.tracer!.traceInput(i, instruction, args as RuntimeValue[]);
258
-
259
- try {
260
- output = instruction.run(ctx, ...(args as RuntimeValue[]));
261
-
262
- // Resolve and wrap async output for tracing
263
- let resolvedOutput = output instanceof Promise ? await output : output;
264
- if (isAsyncIterable(resolvedOutput)) {
265
- resolvedOutput = wrapIterableForTracing(resolvedOutput, ctx, i, instruction);
266
- output = resolvedOutput; // Update output to the wrapped version
267
- }
268
-
269
- // Trace output
270
- ctx.tracer!.traceOutput(i, instruction, resolvedOutput);
271
-
272
- // Keep the original output (promise or value) for flow control
273
- } catch (error) {
274
- // Trace error
275
- ctx.tracer!.traceError(i, instruction, error as Error);
276
- throw error; // Re-throw the error
277
- }
278
-
279
- // Store the output
280
- const destination = this.destinations[i];
281
- if (destination !== null) {
282
- instrArgs[destination]!.push(output);
283
- if (output instanceof Promise) {
284
- hasPromise[destination] = true;
285
- }
286
- }
287
- }
288
-
289
- return output as OutputValue;
290
- }
291
-
292
- private runWithMetrics(ctx: RuntimeContext): OutputValue {
293
- // Initialize metrics for all instructions
294
- for (const instruction of this.instructions) {
295
- if (!instruction.runtimeStats) {
296
- instruction.runtimeStats = {
297
- in: 0,
298
- out: 0,
299
- elapsedNs: 0n,
300
- executions: 0
301
- };
302
- }
303
- }
304
-
305
- // Argument lists for each instruction.
306
- const instrArgs = new Array(this.instructions.length).fill(null).map(() => [] as OutputValue[] | undefined);
307
- // Running output
308
- let output: OutputValue | undefined;
309
-
310
- // Run synchronously until we hit a promise
311
- for (let i = 0; i < this.instructions.length; ++i) {
312
- const instruction = this.instructions[i];
313
- const args = instrArgs[i]!;
314
- instrArgs[i] = undefined; // Clear args as we go to minimize memory usage.
315
-
316
- // Run with metrics collection
317
- output = this.runInstructionWithMetrics(instruction, ctx, args as RuntimeValue[]);
318
-
319
- // If the instruction returned a promise, switch to async mode for rest of instructions
320
- if (output instanceof Promise) {
321
- return this.runAsyncWithMetrics(ctx, instrArgs, i, output);
322
- }
323
-
324
- // Store synchronous output
325
- const destination = this.destinations[i];
326
- if (destination !== null) {
327
- instrArgs[destination]!.push(output);
328
- }
329
- }
330
-
331
- // Log aggregate metrics if debugging is enabled
332
- this.logAggregateMetrics();
333
-
334
- return output as OutputValue;
335
- }
336
-
337
- private async runAsyncWithMetrics(
338
- ctx: RuntimeContext,
339
- instrArgs: (OutputValue[] | undefined)[],
340
- startIndex: number,
341
- pendingOutput: OutputValue
342
- ): Promise<RuntimeValue> {
343
- // Instruction indexes that have promise arguments
344
- const hasPromise: boolean[] = [];
345
-
346
- let output: OutputValue | undefined = pendingOutput;
347
-
348
- // Store the output from the transition instruction
349
- const transitionDestination = this.destinations[startIndex];
350
- if (transitionDestination !== null) {
351
- instrArgs[transitionDestination]!.push(output);
352
- hasPromise[transitionDestination] = true;
353
- }
354
-
355
- // Continue with remaining instructions asynchronously
356
- for (let i = startIndex + 1; i < this.instructions.length; ++i) {
357
- const instruction = this.instructions[i];
358
- let args = instrArgs[i]!;
359
- instrArgs[i] = undefined;
360
-
361
- // Resolve any promise arguments
362
- if (hasPromise[i]) {
363
- args = await Promise.all(args);
364
- }
365
-
366
- // Run with metrics collection
367
- output = await this.runInstructionWithMetricsAsync(instruction, ctx, args as RuntimeValue[]);
368
-
369
- // Store the output
370
- const destination = this.destinations[i];
371
- if (destination !== null) {
372
- instrArgs[destination]!.push(output);
373
- if (output instanceof Promise) {
374
- hasPromise[destination] = true;
375
- }
376
- }
377
- }
378
-
379
- // Log aggregate metrics if debugging is enabled
380
- this.logAggregateMetrics();
381
-
382
- return output as OutputValue;
383
- }
384
-
385
- private runInstructionWithMetrics(instruction: Instruction, ctx: RuntimeContext, args: RuntimeValue[]): OutputValue {
386
- const stats = instruction.runtimeStats!;
387
- const start = process.hrtime.bigint();
388
-
389
- stats.executions++;
390
- stats.in += this.countInputs(args);
391
-
392
- try {
393
- const result = instruction.run(ctx, ...args);
394
-
395
- if (result instanceof Promise) {
396
- // Handle async results separately
397
- return result.then(resolved => {
398
- stats.out += this.countOutputs(resolved);
399
- stats.elapsedNs += process.hrtime.bigint() - start;
400
- return resolved;
401
- }).catch(error => {
402
- stats.elapsedNs += process.hrtime.bigint() - start;
403
- throw error;
404
- });
405
- }
406
-
407
- stats.out += this.countOutputs(result);
408
- stats.elapsedNs += process.hrtime.bigint() - start;
409
-
410
- return result;
411
- } catch (error) {
412
- stats.elapsedNs += process.hrtime.bigint() - start;
413
- throw error;
414
- }
415
- }
416
-
417
- private async runInstructionWithMetricsAsync(instruction: Instruction, ctx: RuntimeContext, args: RuntimeValue[]): Promise<OutputValue> {
418
- const stats = instruction.runtimeStats!;
419
- const start = process.hrtime.bigint();
420
-
421
- stats.executions++;
422
- stats.in += this.countInputs(args);
423
-
424
- try {
425
- const result = await instruction.run(ctx, ...args);
426
- stats.out += this.countOutputs(result);
427
- stats.elapsedNs += process.hrtime.bigint() - start;
428
- return result;
429
- } catch (error) {
430
- stats.elapsedNs += process.hrtime.bigint() - start;
431
- throw error;
432
- }
433
- }
434
-
435
- private countInputs(args: RuntimeValue[]): number {
436
- return args.reduce((sum: number, arg) => {
437
- if (isAsyncIterable(arg)) {
438
- return sum + 1; // Count as 1 for async iterables (we don't know size)
439
- } else if (Array.isArray(arg)) {
440
- return sum + arg.length;
441
- } else {
442
- return sum + 1;
443
- }
444
- }, 0);
445
- }
446
-
447
- private countOutputs(result: OutputValue): number {
448
- if (isAsyncIterable(result)) {
449
- return 1; // Count as 1 for async iterables (we don't know size)
450
- } else if (Array.isArray(result)) {
451
- return result.length;
452
- } else {
453
- return 1;
454
- }
455
- }
456
-
457
- private logAggregateMetrics(): void {
458
- if (log.enabled) {
459
- let totalExecutions = 0;
460
- let totalElapsed = 0n;
461
- let totalIn = 0;
462
- let totalOut = 0;
463
-
464
- for (const instruction of this.instructions) {
465
- if (instruction.runtimeStats) {
466
- totalExecutions += instruction.runtimeStats.executions;
467
- totalElapsed += instruction.runtimeStats.elapsedNs;
468
- totalIn += instruction.runtimeStats.in;
469
- totalOut += instruction.runtimeStats.out;
470
- }
471
- }
472
-
473
- log(`Aggregate metrics: ${totalExecutions} executions, ${totalElapsed / 1000n}μs elapsed, ${totalIn} inputs, ${totalOut} outputs`);
474
- }
475
- }
476
-
477
- /**
478
- * Get runtime statistics for all instructions
479
- */
480
- getMetrics(): InstructionRuntimeStats[] {
481
- return this.instructions.map(instruction => instruction.runtimeStats || {
482
- in: 0,
483
- out: 0,
484
- elapsedNs: 0n,
485
- executions: 0
486
- });
487
- }
488
- }