@quereus/quereus 0.7.3 → 0.7.5

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 (568) hide show
  1. package/dist/src/schema/manager.d.ts.map +1 -1
  2. package/dist/src/schema/manager.js +19 -18
  3. package/package.json +3 -3
  4. package/dist/src/common/constants.js.map +0 -1
  5. package/dist/src/common/datatype.js.map +0 -1
  6. package/dist/src/common/errors.js.map +0 -1
  7. package/dist/src/common/json-types.js.map +0 -1
  8. package/dist/src/common/logger.js.map +0 -1
  9. package/dist/src/common/type-inference.js.map +0 -1
  10. package/dist/src/common/types.js.map +0 -1
  11. package/dist/src/core/database-options.js.map +0 -1
  12. package/dist/src/core/database.js.map +0 -1
  13. package/dist/src/core/param.js.map +0 -1
  14. package/dist/src/core/statement.js.map +0 -1
  15. package/dist/src/func/builtins/aggregate.js.map +0 -1
  16. package/dist/src/func/builtins/builtin-window-functions.js.map +0 -1
  17. package/dist/src/func/builtins/conversion.js.map +0 -1
  18. package/dist/src/func/builtins/datetime.js.map +0 -1
  19. package/dist/src/func/builtins/explain.js.map +0 -1
  20. package/dist/src/func/builtins/generation.js.map +0 -1
  21. package/dist/src/func/builtins/index.js.map +0 -1
  22. package/dist/src/func/builtins/json-helpers.js.map +0 -1
  23. package/dist/src/func/builtins/json-tvf.js.map +0 -1
  24. package/dist/src/func/builtins/json.js.map +0 -1
  25. package/dist/src/func/builtins/scalar.js.map +0 -1
  26. package/dist/src/func/builtins/schema.js.map +0 -1
  27. package/dist/src/func/builtins/string.js.map +0 -1
  28. package/dist/src/func/builtins/timespan.js.map +0 -1
  29. package/dist/src/func/context.js.map +0 -1
  30. package/dist/src/func/registration.js.map +0 -1
  31. package/dist/src/index.js.map +0 -1
  32. package/dist/src/parser/ast.js.map +0 -1
  33. package/dist/src/parser/index.js.map +0 -1
  34. package/dist/src/parser/lexer.js.map +0 -1
  35. package/dist/src/parser/parser.js.map +0 -1
  36. package/dist/src/parser/utils.js.map +0 -1
  37. package/dist/src/parser/visitor.js.map +0 -1
  38. package/dist/src/planner/analysis/binding-collector.js.map +0 -1
  39. package/dist/src/planner/analysis/const-evaluator.js.map +0 -1
  40. package/dist/src/planner/analysis/const-pass.js.map +0 -1
  41. package/dist/src/planner/analysis/constraint-extractor.js.map +0 -1
  42. package/dist/src/planner/analysis/predicate-normalizer.js.map +0 -1
  43. package/dist/src/planner/building/alter-table.js.map +0 -1
  44. package/dist/src/planner/building/block.js.map +0 -1
  45. package/dist/src/planner/building/constraint-builder.js.map +0 -1
  46. package/dist/src/planner/building/create-assertion.js.map +0 -1
  47. package/dist/src/planner/building/create-view.js.map +0 -1
  48. package/dist/src/planner/building/ddl.js.map +0 -1
  49. package/dist/src/planner/building/declare-schema.js.map +0 -1
  50. package/dist/src/planner/building/delete.js.map +0 -1
  51. package/dist/src/planner/building/drop-assertion.js.map +0 -1
  52. package/dist/src/planner/building/drop-table.js.map +0 -1
  53. package/dist/src/planner/building/drop-view.js.map +0 -1
  54. package/dist/src/planner/building/expression.js.map +0 -1
  55. package/dist/src/planner/building/function-call.js.map +0 -1
  56. package/dist/src/planner/building/insert.js.map +0 -1
  57. package/dist/src/planner/building/pragma.js.map +0 -1
  58. package/dist/src/planner/building/schema-resolution.js.map +0 -1
  59. package/dist/src/planner/building/select-aggregates.js.map +0 -1
  60. package/dist/src/planner/building/select-compound.js.map +0 -1
  61. package/dist/src/planner/building/select-context.js.map +0 -1
  62. package/dist/src/planner/building/select-modifiers.js.map +0 -1
  63. package/dist/src/planner/building/select-projections.js.map +0 -1
  64. package/dist/src/planner/building/select-window.js.map +0 -1
  65. package/dist/src/planner/building/select.js.map +0 -1
  66. package/dist/src/planner/building/table-function.js.map +0 -1
  67. package/dist/src/planner/building/table.js.map +0 -1
  68. package/dist/src/planner/building/transaction.js.map +0 -1
  69. package/dist/src/planner/building/update.js.map +0 -1
  70. package/dist/src/planner/building/with.js.map +0 -1
  71. package/dist/src/planner/cache/correlation-detector.js.map +0 -1
  72. package/dist/src/planner/cache/materialization-advisory.js.map +0 -1
  73. package/dist/src/planner/cache/reference-graph.js.map +0 -1
  74. package/dist/src/planner/cost/index.js.map +0 -1
  75. package/dist/src/planner/debug/logger-utils.js.map +0 -1
  76. package/dist/src/planner/debug.js.map +0 -1
  77. package/dist/src/planner/framework/characteristics.js.map +0 -1
  78. package/dist/src/planner/framework/context.js.map +0 -1
  79. package/dist/src/planner/framework/pass.js.map +0 -1
  80. package/dist/src/planner/framework/physical-utils.js.map +0 -1
  81. package/dist/src/planner/framework/registry.js.map +0 -1
  82. package/dist/src/planner/framework/trace.js.map +0 -1
  83. package/dist/src/planner/nodes/add-constraint-node.js.map +0 -1
  84. package/dist/src/planner/nodes/aggregate-function.js.map +0 -1
  85. package/dist/src/planner/nodes/aggregate-node.js.map +0 -1
  86. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  87. package/dist/src/planner/nodes/block.js.map +0 -1
  88. package/dist/src/planner/nodes/cache-node.js.map +0 -1
  89. package/dist/src/planner/nodes/constraint-check-node.js.map +0 -1
  90. package/dist/src/planner/nodes/create-assertion-node.js.map +0 -1
  91. package/dist/src/planner/nodes/create-index-node.js.map +0 -1
  92. package/dist/src/planner/nodes/create-table-node.js.map +0 -1
  93. package/dist/src/planner/nodes/create-view-node.js.map +0 -1
  94. package/dist/src/planner/nodes/cte-node.js.map +0 -1
  95. package/dist/src/planner/nodes/cte-reference-node.js.map +0 -1
  96. package/dist/src/planner/nodes/declarative-schema.js.map +0 -1
  97. package/dist/src/planner/nodes/delete-node.js.map +0 -1
  98. package/dist/src/planner/nodes/distinct-node.js.map +0 -1
  99. package/dist/src/planner/nodes/dml-executor-node.js.map +0 -1
  100. package/dist/src/planner/nodes/drop-assertion-node.js.map +0 -1
  101. package/dist/src/planner/nodes/drop-table-node.js.map +0 -1
  102. package/dist/src/planner/nodes/drop-view-node.js.map +0 -1
  103. package/dist/src/planner/nodes/filter.js.map +0 -1
  104. package/dist/src/planner/nodes/function.js.map +0 -1
  105. package/dist/src/planner/nodes/insert-node.js.map +0 -1
  106. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +0 -1
  107. package/dist/src/planner/nodes/join-node.js.map +0 -1
  108. package/dist/src/planner/nodes/limit-offset.js.map +0 -1
  109. package/dist/src/planner/nodes/plan-node-type.js.map +0 -1
  110. package/dist/src/planner/nodes/plan-node.js.map +0 -1
  111. package/dist/src/planner/nodes/pragma.js.map +0 -1
  112. package/dist/src/planner/nodes/project-node.js.map +0 -1
  113. package/dist/src/planner/nodes/recursive-cte-node.js.map +0 -1
  114. package/dist/src/planner/nodes/reference.js.map +0 -1
  115. package/dist/src/planner/nodes/remote-query-node.js.map +0 -1
  116. package/dist/src/planner/nodes/retrieve-node.js.map +0 -1
  117. package/dist/src/planner/nodes/returning-node.js.map +0 -1
  118. package/dist/src/planner/nodes/scalar.js.map +0 -1
  119. package/dist/src/planner/nodes/sequencing-node.js.map +0 -1
  120. package/dist/src/planner/nodes/set-operation-node.js.map +0 -1
  121. package/dist/src/planner/nodes/single-row.js.map +0 -1
  122. package/dist/src/planner/nodes/sink-node.js.map +0 -1
  123. package/dist/src/planner/nodes/sort.js.map +0 -1
  124. package/dist/src/planner/nodes/stream-aggregate.js.map +0 -1
  125. package/dist/src/planner/nodes/subquery.js.map +0 -1
  126. package/dist/src/planner/nodes/table-access-nodes.js.map +0 -1
  127. package/dist/src/planner/nodes/table-function-call.js.map +0 -1
  128. package/dist/src/planner/nodes/transaction-node.js.map +0 -1
  129. package/dist/src/planner/nodes/update-node.js.map +0 -1
  130. package/dist/src/planner/nodes/values-node.js.map +0 -1
  131. package/dist/src/planner/nodes/view-reference-node.js.map +0 -1
  132. package/dist/src/planner/nodes/window-function.js.map +0 -1
  133. package/dist/src/planner/nodes/window-node.js.map +0 -1
  134. package/dist/src/planner/optimizer-tuning.js.map +0 -1
  135. package/dist/src/planner/optimizer.js.map +0 -1
  136. package/dist/src/planner/planning-context.js.map +0 -1
  137. package/dist/src/planner/resolve.js.map +0 -1
  138. package/dist/src/planner/rules/access/rule-select-access-path.js.map +0 -1
  139. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +0 -1
  140. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +0 -1
  141. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
  142. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +0 -1
  143. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +0 -1
  144. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +0 -1
  145. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +0 -1
  146. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +0 -1
  147. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +0 -1
  148. package/dist/src/planner/scopes/aliased.js.map +0 -1
  149. package/dist/src/planner/scopes/base.js.map +0 -1
  150. package/dist/src/planner/scopes/empty.js.map +0 -1
  151. package/dist/src/planner/scopes/global.js.map +0 -1
  152. package/dist/src/planner/scopes/multi.js.map +0 -1
  153. package/dist/src/planner/scopes/param.js.map +0 -1
  154. package/dist/src/planner/scopes/registered.js.map +0 -1
  155. package/dist/src/planner/scopes/scope.js.map +0 -1
  156. package/dist/src/planner/stats/basic-estimates.js.map +0 -1
  157. package/dist/src/planner/stats/index.js.map +0 -1
  158. package/dist/src/planner/type-utils.js.map +0 -1
  159. package/dist/src/planner/util/key-utils.js.map +0 -1
  160. package/dist/src/planner/validation/determinism-validator.js.map +0 -1
  161. package/dist/src/planner/validation/plan-validator.js.map +0 -1
  162. package/dist/src/runtime/async-util.js.map +0 -1
  163. package/dist/src/runtime/cache/shared-cache.js.map +0 -1
  164. package/dist/src/runtime/context-helpers.js.map +0 -1
  165. package/dist/src/runtime/deferred-constraint-queue.js.map +0 -1
  166. package/dist/src/runtime/emission-context.js.map +0 -1
  167. package/dist/src/runtime/emit/add-constraint.js.map +0 -1
  168. package/dist/src/runtime/emit/aggregate.js.map +0 -1
  169. package/dist/src/runtime/emit/array-index.js.map +0 -1
  170. package/dist/src/runtime/emit/between.js.map +0 -1
  171. package/dist/src/runtime/emit/binary.js.map +0 -1
  172. package/dist/src/runtime/emit/block.js.map +0 -1
  173. package/dist/src/runtime/emit/cache.js.map +0 -1
  174. package/dist/src/runtime/emit/case.js.map +0 -1
  175. package/dist/src/runtime/emit/cast.js.map +0 -1
  176. package/dist/src/runtime/emit/collate.js.map +0 -1
  177. package/dist/src/runtime/emit/column-reference.js.map +0 -1
  178. package/dist/src/runtime/emit/constraint-check.js.map +0 -1
  179. package/dist/src/runtime/emit/create-assertion.js.map +0 -1
  180. package/dist/src/runtime/emit/create-index.js.map +0 -1
  181. package/dist/src/runtime/emit/create-table.js.map +0 -1
  182. package/dist/src/runtime/emit/create-view.js.map +0 -1
  183. package/dist/src/runtime/emit/cte-reference.js.map +0 -1
  184. package/dist/src/runtime/emit/cte.js.map +0 -1
  185. package/dist/src/runtime/emit/delete.js.map +0 -1
  186. package/dist/src/runtime/emit/distinct.js.map +0 -1
  187. package/dist/src/runtime/emit/dml-executor.js.map +0 -1
  188. package/dist/src/runtime/emit/drop-assertion.js.map +0 -1
  189. package/dist/src/runtime/emit/drop-table.js.map +0 -1
  190. package/dist/src/runtime/emit/drop-view.js.map +0 -1
  191. package/dist/src/runtime/emit/filter.js.map +0 -1
  192. package/dist/src/runtime/emit/insert.js.map +0 -1
  193. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +0 -1
  194. package/dist/src/runtime/emit/join.js.map +0 -1
  195. package/dist/src/runtime/emit/limit-offset.js.map +0 -1
  196. package/dist/src/runtime/emit/literal.js.map +0 -1
  197. package/dist/src/runtime/emit/parameter.js.map +0 -1
  198. package/dist/src/runtime/emit/pragma.js.map +0 -1
  199. package/dist/src/runtime/emit/project.js.map +0 -1
  200. package/dist/src/runtime/emit/recursive-cte.js.map +0 -1
  201. package/dist/src/runtime/emit/remote-query.js.map +0 -1
  202. package/dist/src/runtime/emit/retrieve.js.map +0 -1
  203. package/dist/src/runtime/emit/returning.js.map +0 -1
  204. package/dist/src/runtime/emit/scalar-function.js.map +0 -1
  205. package/dist/src/runtime/emit/scan.js.map +0 -1
  206. package/dist/src/runtime/emit/schema-declarative.js.map +0 -1
  207. package/dist/src/runtime/emit/sequencing.js.map +0 -1
  208. package/dist/src/runtime/emit/set-operation.js.map +0 -1
  209. package/dist/src/runtime/emit/sink.js.map +0 -1
  210. package/dist/src/runtime/emit/sort.js.map +0 -1
  211. package/dist/src/runtime/emit/subquery.js.map +0 -1
  212. package/dist/src/runtime/emit/table-valued-function.js.map +0 -1
  213. package/dist/src/runtime/emit/temporal-arithmetic.js.map +0 -1
  214. package/dist/src/runtime/emit/transaction.js.map +0 -1
  215. package/dist/src/runtime/emit/unary.js.map +0 -1
  216. package/dist/src/runtime/emit/update.js.map +0 -1
  217. package/dist/src/runtime/emit/values.js.map +0 -1
  218. package/dist/src/runtime/emit/window-function.js.map +0 -1
  219. package/dist/src/runtime/emit/window.js.map +0 -1
  220. package/dist/src/runtime/emitters.js.map +0 -1
  221. package/dist/src/runtime/register.js.map +0 -1
  222. package/dist/src/runtime/scheduler.js.map +0 -1
  223. package/dist/src/runtime/types.js.map +0 -1
  224. package/dist/src/runtime/utils.js.map +0 -1
  225. package/dist/src/schema/assertion.js.map +0 -1
  226. package/dist/src/schema/catalog.js.map +0 -1
  227. package/dist/src/schema/change-events.js.map +0 -1
  228. package/dist/src/schema/column.js.map +0 -1
  229. package/dist/src/schema/declared-schema-manager.js.map +0 -1
  230. package/dist/src/schema/function.js.map +0 -1
  231. package/dist/src/schema/manager.js.map +0 -1
  232. package/dist/src/schema/schema-differ.js.map +0 -1
  233. package/dist/src/schema/schema-hasher.js.map +0 -1
  234. package/dist/src/schema/schema.js.map +0 -1
  235. package/dist/src/schema/table.js.map +0 -1
  236. package/dist/src/schema/view.js.map +0 -1
  237. package/dist/src/schema/window-function.js.map +0 -1
  238. package/dist/src/types/builtin-types.js.map +0 -1
  239. package/dist/src/types/index.js.map +0 -1
  240. package/dist/src/types/json-type.js.map +0 -1
  241. package/dist/src/types/logical-type.js.map +0 -1
  242. package/dist/src/types/plugin-interface.js.map +0 -1
  243. package/dist/src/types/registry.js.map +0 -1
  244. package/dist/src/types/temporal-types.js.map +0 -1
  245. package/dist/src/types/validation.js.map +0 -1
  246. package/dist/src/util/affinity.js.map +0 -1
  247. package/dist/src/util/ast-stringify.js.map +0 -1
  248. package/dist/src/util/cached.js.map +0 -1
  249. package/dist/src/util/coercion.js.map +0 -1
  250. package/dist/src/util/comparison.js.map +0 -1
  251. package/dist/src/util/environment.js.map +0 -1
  252. package/dist/src/util/hash.js.map +0 -1
  253. package/dist/src/util/latches.js.map +0 -1
  254. package/dist/src/util/mutation-statement.js.map +0 -1
  255. package/dist/src/util/patterns.js.map +0 -1
  256. package/dist/src/util/plan-formatter.js.map +0 -1
  257. package/dist/src/util/plugin-helper.js.map +0 -1
  258. package/dist/src/util/row-descriptor.js.map +0 -1
  259. package/dist/src/util/serialization.js.map +0 -1
  260. package/dist/src/util/sql-literal.js.map +0 -1
  261. package/dist/src/util/working-table-iterable.js.map +0 -1
  262. package/dist/src/vtab/best-access-plan.js.map +0 -1
  263. package/dist/src/vtab/connection.js.map +0 -1
  264. package/dist/src/vtab/filter-info.js.map +0 -1
  265. package/dist/src/vtab/index-info.js.map +0 -1
  266. package/dist/src/vtab/manifest.js.map +0 -1
  267. package/dist/src/vtab/memory/connection.js.map +0 -1
  268. package/dist/src/vtab/memory/index.js.map +0 -1
  269. package/dist/src/vtab/memory/layer/base-cursor.js.map +0 -1
  270. package/dist/src/vtab/memory/layer/base.js.map +0 -1
  271. package/dist/src/vtab/memory/layer/connection.js.map +0 -1
  272. package/dist/src/vtab/memory/layer/interface.js.map +0 -1
  273. package/dist/src/vtab/memory/layer/manager.js.map +0 -1
  274. package/dist/src/vtab/memory/layer/safe-iterate.js.map +0 -1
  275. package/dist/src/vtab/memory/layer/scan-plan.js.map +0 -1
  276. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +0 -1
  277. package/dist/src/vtab/memory/layer/transaction.js.map +0 -1
  278. package/dist/src/vtab/memory/module.js.map +0 -1
  279. package/dist/src/vtab/memory/table.js.map +0 -1
  280. package/dist/src/vtab/memory/types.js.map +0 -1
  281. package/dist/src/vtab/memory/utils/logging.js.map +0 -1
  282. package/dist/src/vtab/memory/utils/primary-key.js.map +0 -1
  283. package/dist/src/vtab/module.js.map +0 -1
  284. package/dist/src/vtab/table.js.map +0 -1
  285. package/src/common/constants.ts +0 -60
  286. package/src/common/datatype.ts +0 -85
  287. package/src/common/errors.ts +0 -189
  288. package/src/common/json-types.ts +0 -16
  289. package/src/common/logger.ts +0 -97
  290. package/src/common/type-inference.ts +0 -39
  291. package/src/common/types.ts +0 -151
  292. package/src/core/database-options.ts +0 -258
  293. package/src/core/database.ts +0 -1461
  294. package/src/core/param.ts +0 -56
  295. package/src/core/statement.ts +0 -528
  296. package/src/func/builtins/aggregate.ts +0 -269
  297. package/src/func/builtins/builtin-window-functions.ts +0 -166
  298. package/src/func/builtins/conversion.ts +0 -226
  299. package/src/func/builtins/datetime.ts +0 -500
  300. package/src/func/builtins/explain.ts +0 -779
  301. package/src/func/builtins/generation.ts +0 -43
  302. package/src/func/builtins/index.ts +0 -167
  303. package/src/func/builtins/json-helpers.ts +0 -237
  304. package/src/func/builtins/json-tvf.ts +0 -224
  305. package/src/func/builtins/json.ts +0 -588
  306. package/src/func/builtins/scalar.ts +0 -423
  307. package/src/func/builtins/schema.ts +0 -213
  308. package/src/func/builtins/string.ts +0 -306
  309. package/src/func/builtins/timespan.ts +0 -179
  310. package/src/func/context.ts +0 -258
  311. package/src/func/registration.ts +0 -201
  312. package/src/index.ts +0 -172
  313. package/src/parser/ast.ts +0 -581
  314. package/src/parser/index.ts +0 -65
  315. package/src/parser/lexer.ts +0 -806
  316. package/src/parser/parser.ts +0 -3352
  317. package/src/parser/utils.ts +0 -10
  318. package/src/parser/visitor.ts +0 -188
  319. package/src/planner/analysis/README.md +0 -93
  320. package/src/planner/analysis/binding-collector.ts +0 -83
  321. package/src/planner/analysis/const-evaluator.ts +0 -63
  322. package/src/planner/analysis/const-pass.ts +0 -282
  323. package/src/planner/analysis/constraint-extractor.ts +0 -764
  324. package/src/planner/analysis/predicate-normalizer.ts +0 -237
  325. package/src/planner/building/alter-table.ts +0 -49
  326. package/src/planner/building/block.ts +0 -93
  327. package/src/planner/building/constraint-builder.ts +0 -178
  328. package/src/planner/building/create-assertion.ts +0 -7
  329. package/src/planner/building/create-view.ts +0 -29
  330. package/src/planner/building/ddl.ts +0 -24
  331. package/src/planner/building/declare-schema.ts +0 -22
  332. package/src/planner/building/delete.ts +0 -218
  333. package/src/planner/building/drop-assertion.ts +0 -11
  334. package/src/planner/building/drop-table.ts +0 -13
  335. package/src/planner/building/drop-view.ts +0 -19
  336. package/src/planner/building/expression.ts +0 -205
  337. package/src/planner/building/function-call.ts +0 -129
  338. package/src/planner/building/insert.ts +0 -435
  339. package/src/planner/building/pragma.ts +0 -34
  340. package/src/planner/building/schema-resolution.ts +0 -176
  341. package/src/planner/building/select-aggregates.ts +0 -318
  342. package/src/planner/building/select-compound.ts +0 -119
  343. package/src/planner/building/select-context.ts +0 -85
  344. package/src/planner/building/select-modifiers.ts +0 -236
  345. package/src/planner/building/select-projections.ts +0 -177
  346. package/src/planner/building/select-window.ts +0 -259
  347. package/src/planner/building/select.ts +0 -567
  348. package/src/planner/building/table-function.ts +0 -49
  349. package/src/planner/building/table.ts +0 -40
  350. package/src/planner/building/transaction.ts +0 -23
  351. package/src/planner/building/update.ts +0 -331
  352. package/src/planner/building/with.ts +0 -180
  353. package/src/planner/cache/correlation-detector.ts +0 -83
  354. package/src/planner/cache/materialization-advisory.ts +0 -265
  355. package/src/planner/cache/reference-graph.ts +0 -196
  356. package/src/planner/cost/index.ts +0 -169
  357. package/src/planner/debug/logger-utils.ts +0 -68
  358. package/src/planner/debug.ts +0 -480
  359. package/src/planner/framework/README.md +0 -132
  360. package/src/planner/framework/characteristics.ts +0 -503
  361. package/src/planner/framework/context.ts +0 -239
  362. package/src/planner/framework/pass.ts +0 -354
  363. package/src/planner/framework/physical-utils.ts +0 -210
  364. package/src/planner/framework/registry.ts +0 -261
  365. package/src/planner/framework/trace.ts +0 -259
  366. package/src/planner/nodes/add-constraint-node.ts +0 -62
  367. package/src/planner/nodes/aggregate-function.ts +0 -155
  368. package/src/planner/nodes/aggregate-node.ts +0 -267
  369. package/src/planner/nodes/array-index-node.ts +0 -50
  370. package/src/planner/nodes/block.ts +0 -80
  371. package/src/planner/nodes/cache-node.ts +0 -103
  372. package/src/planner/nodes/constraint-check-node.ts +0 -138
  373. package/src/planner/nodes/create-assertion-node.ts +0 -51
  374. package/src/planner/nodes/create-index-node.ts +0 -41
  375. package/src/planner/nodes/create-table-node.ts +0 -35
  376. package/src/planner/nodes/create-view-node.ts +0 -44
  377. package/src/planner/nodes/cte-node.ts +0 -168
  378. package/src/planner/nodes/cte-reference-node.ts +0 -125
  379. package/src/planner/nodes/declarative-schema.ts +0 -221
  380. package/src/planner/nodes/delete-node.ts +0 -102
  381. package/src/planner/nodes/distinct-node.ts +0 -107
  382. package/src/planner/nodes/dml-executor-node.ts +0 -104
  383. package/src/planner/nodes/drop-assertion-node.ts +0 -50
  384. package/src/planner/nodes/drop-table-node.ts +0 -36
  385. package/src/planner/nodes/drop-view-node.ts +0 -37
  386. package/src/planner/nodes/filter.ts +0 -144
  387. package/src/planner/nodes/function.ts +0 -98
  388. package/src/planner/nodes/insert-node.ts +0 -126
  389. package/src/planner/nodes/internal-recursive-cte-ref-node.ts +0 -61
  390. package/src/planner/nodes/join-node.ts +0 -336
  391. package/src/planner/nodes/limit-offset.ts +0 -144
  392. package/src/planner/nodes/plan-node-type.ts +0 -95
  393. package/src/planner/nodes/plan-node.ts +0 -503
  394. package/src/planner/nodes/pragma.ts +0 -98
  395. package/src/planner/nodes/project-node.ts +0 -337
  396. package/src/planner/nodes/recursive-cte-node.ts +0 -158
  397. package/src/planner/nodes/reference.ts +0 -334
  398. package/src/planner/nodes/remote-query-node.ts +0 -73
  399. package/src/planner/nodes/retrieve-node.ts +0 -86
  400. package/src/planner/nodes/returning-node.ts +0 -269
  401. package/src/planner/nodes/scalar.ts +0 -772
  402. package/src/planner/nodes/sequencing-node.ts +0 -113
  403. package/src/planner/nodes/set-operation-node.ts +0 -87
  404. package/src/planner/nodes/single-row.ts +0 -85
  405. package/src/planner/nodes/sink-node.ts +0 -61
  406. package/src/planner/nodes/sort.ts +0 -166
  407. package/src/planner/nodes/stream-aggregate.ts +0 -293
  408. package/src/planner/nodes/subquery.ts +0 -268
  409. package/src/planner/nodes/table-access-nodes.ts +0 -323
  410. package/src/planner/nodes/table-function-call.ts +0 -134
  411. package/src/planner/nodes/transaction-node.ts +0 -55
  412. package/src/planner/nodes/update-node.ts +0 -138
  413. package/src/planner/nodes/values-node.ts +0 -244
  414. package/src/planner/nodes/view-reference-node.ts +0 -97
  415. package/src/planner/nodes/window-function.ts +0 -73
  416. package/src/planner/nodes/window-node.ts +0 -199
  417. package/src/planner/optimizer-tuning.ts +0 -105
  418. package/src/planner/optimizer.ts +0 -332
  419. package/src/planner/planning-context.ts +0 -190
  420. package/src/planner/resolve.ts +0 -101
  421. package/src/planner/rules/README.md +0 -96
  422. package/src/planner/rules/access/rule-select-access-path.ts +0 -399
  423. package/src/planner/rules/aggregate/rule-aggregate-streaming.ts +0 -162
  424. package/src/planner/rules/cache/rule-cte-optimization.ts +0 -79
  425. package/src/planner/rules/cache/rule-materialization-advisory.ts +0 -77
  426. package/src/planner/rules/cache/rule-mutating-subquery-cache.ts +0 -104
  427. package/src/planner/rules/join/rule-join-greedy-commute.ts +0 -48
  428. package/src/planner/rules/join/rule-join-key-inference.ts +0 -35
  429. package/src/planner/rules/join/rule-quickpick-enumeration.ts +0 -267
  430. package/src/planner/rules/predicate/rule-predicate-pushdown.ts +0 -144
  431. package/src/planner/rules/retrieve/rule-grow-retrieve.ts +0 -337
  432. package/src/planner/scopes/aliased.ts +0 -50
  433. package/src/planner/scopes/base.ts +0 -10
  434. package/src/planner/scopes/empty.ts +0 -12
  435. package/src/planner/scopes/global.ts +0 -73
  436. package/src/planner/scopes/multi.ts +0 -40
  437. package/src/planner/scopes/param.ts +0 -95
  438. package/src/planner/scopes/registered.ts +0 -67
  439. package/src/planner/scopes/scope.ts +0 -16
  440. package/src/planner/stats/basic-estimates.ts +0 -107
  441. package/src/planner/stats/index.ts +0 -158
  442. package/src/planner/type-utils.ts +0 -87
  443. package/src/planner/util/key-utils.ts +0 -46
  444. package/src/planner/validation/determinism-validator.ts +0 -104
  445. package/src/planner/validation/plan-validator.ts +0 -335
  446. package/src/runtime/async-util.ts +0 -283
  447. package/src/runtime/cache/shared-cache.ts +0 -169
  448. package/src/runtime/context-helpers.ts +0 -191
  449. package/src/runtime/deferred-constraint-queue.ts +0 -196
  450. package/src/runtime/emission-context.ts +0 -319
  451. package/src/runtime/emit/add-constraint.ts +0 -78
  452. package/src/runtime/emit/aggregate.ts +0 -581
  453. package/src/runtime/emit/array-index.ts +0 -25
  454. package/src/runtime/emit/between.ts +0 -51
  455. package/src/runtime/emit/binary.ts +0 -357
  456. package/src/runtime/emit/block.ts +0 -23
  457. package/src/runtime/emit/cache.ts +0 -64
  458. package/src/runtime/emit/case.ts +0 -87
  459. package/src/runtime/emit/cast.ts +0 -151
  460. package/src/runtime/emit/collate.ts +0 -9
  461. package/src/runtime/emit/column-reference.ts +0 -17
  462. package/src/runtime/emit/constraint-check.ts +0 -290
  463. package/src/runtime/emit/create-assertion.ts +0 -82
  464. package/src/runtime/emit/create-index.ts +0 -15
  465. package/src/runtime/emit/create-table.ts +0 -15
  466. package/src/runtime/emit/create-view.ts +0 -52
  467. package/src/runtime/emit/cte-reference.ts +0 -38
  468. package/src/runtime/emit/cte.ts +0 -39
  469. package/src/runtime/emit/delete.ts +0 -24
  470. package/src/runtime/emit/distinct.ts +0 -40
  471. package/src/runtime/emit/dml-executor.ts +0 -198
  472. package/src/runtime/emit/drop-assertion.ts +0 -45
  473. package/src/runtime/emit/drop-table.ts +0 -27
  474. package/src/runtime/emit/drop-view.ts +0 -49
  475. package/src/runtime/emit/filter.ts +0 -30
  476. package/src/runtime/emit/insert.ts +0 -42
  477. package/src/runtime/emit/internal-recursive-cte-ref.ts +0 -37
  478. package/src/runtime/emit/join.ts +0 -148
  479. package/src/runtime/emit/limit-offset.ts +0 -73
  480. package/src/runtime/emit/literal.ts +0 -17
  481. package/src/runtime/emit/parameter.ts +0 -59
  482. package/src/runtime/emit/pragma.ts +0 -56
  483. package/src/runtime/emit/project.ts +0 -46
  484. package/src/runtime/emit/recursive-cte.ts +0 -111
  485. package/src/runtime/emit/remote-query.ts +0 -47
  486. package/src/runtime/emit/retrieve.ts +0 -15
  487. package/src/runtime/emit/returning.ts +0 -41
  488. package/src/runtime/emit/scalar-function.ts +0 -69
  489. package/src/runtime/emit/scan.ts +0 -106
  490. package/src/runtime/emit/schema-declarative.ts +0 -215
  491. package/src/runtime/emit/sequencing.ts +0 -24
  492. package/src/runtime/emit/set-operation.ts +0 -141
  493. package/src/runtime/emit/sink.ts +0 -27
  494. package/src/runtime/emit/sort.ts +0 -75
  495. package/src/runtime/emit/subquery.ts +0 -203
  496. package/src/runtime/emit/table-valued-function.ts +0 -106
  497. package/src/runtime/emit/temporal-arithmetic.ts +0 -302
  498. package/src/runtime/emit/transaction.ts +0 -205
  499. package/src/runtime/emit/unary.ts +0 -101
  500. package/src/runtime/emit/update.ts +0 -66
  501. package/src/runtime/emit/values.ts +0 -66
  502. package/src/runtime/emit/window-function.ts +0 -42
  503. package/src/runtime/emit/window.ts +0 -458
  504. package/src/runtime/emitters.ts +0 -183
  505. package/src/runtime/register.ts +0 -150
  506. package/src/runtime/scheduler.ts +0 -488
  507. package/src/runtime/types.ts +0 -242
  508. package/src/runtime/utils.ts +0 -177
  509. package/src/schema/assertion.ts +0 -21
  510. package/src/schema/catalog.ts +0 -269
  511. package/src/schema/change-events.ts +0 -80
  512. package/src/schema/column.ts +0 -51
  513. package/src/schema/declared-schema-manager.ts +0 -82
  514. package/src/schema/function.ts +0 -188
  515. package/src/schema/manager.ts +0 -1034
  516. package/src/schema/schema-differ.ts +0 -214
  517. package/src/schema/schema-hasher.ts +0 -26
  518. package/src/schema/schema.ts +0 -222
  519. package/src/schema/table.ts +0 -409
  520. package/src/schema/view.ts +0 -19
  521. package/src/schema/window-function.ts +0 -56
  522. package/src/types/builtin-types.ts +0 -350
  523. package/src/types/index.ts +0 -17
  524. package/src/types/json-type.ts +0 -152
  525. package/src/types/logical-type.ts +0 -91
  526. package/src/types/plugin-interface.ts +0 -10
  527. package/src/types/registry.ts +0 -204
  528. package/src/types/temporal-types.ts +0 -290
  529. package/src/types/validation.ts +0 -120
  530. package/src/util/affinity.ts +0 -151
  531. package/src/util/ast-stringify.ts +0 -887
  532. package/src/util/cached.ts +0 -25
  533. package/src/util/coercion.ts +0 -113
  534. package/src/util/comparison.ts +0 -510
  535. package/src/util/environment.ts +0 -52
  536. package/src/util/hash.ts +0 -90
  537. package/src/util/latches.ts +0 -47
  538. package/src/util/mutation-statement.ts +0 -135
  539. package/src/util/patterns.ts +0 -56
  540. package/src/util/plan-formatter.ts +0 -48
  541. package/src/util/plugin-helper.ts +0 -110
  542. package/src/util/row-descriptor.ts +0 -105
  543. package/src/util/serialization.ts +0 -47
  544. package/src/util/sql-literal.ts +0 -22
  545. package/src/util/working-table-iterable.ts +0 -38
  546. package/src/vtab/best-access-plan.ts +0 -244
  547. package/src/vtab/connection.ts +0 -36
  548. package/src/vtab/filter-info.ts +0 -23
  549. package/src/vtab/index-info.ts +0 -84
  550. package/src/vtab/manifest.ts +0 -86
  551. package/src/vtab/memory/connection.ts +0 -73
  552. package/src/vtab/memory/index.ts +0 -191
  553. package/src/vtab/memory/layer/base-cursor.ts +0 -124
  554. package/src/vtab/memory/layer/base.ts +0 -275
  555. package/src/vtab/memory/layer/connection.ts +0 -203
  556. package/src/vtab/memory/layer/interface.ts +0 -47
  557. package/src/vtab/memory/layer/manager.ts +0 -909
  558. package/src/vtab/memory/layer/safe-iterate.ts +0 -49
  559. package/src/vtab/memory/layer/scan-plan.ts +0 -84
  560. package/src/vtab/memory/layer/transaction-cursor.ts +0 -162
  561. package/src/vtab/memory/layer/transaction.ts +0 -229
  562. package/src/vtab/memory/module.ts +0 -667
  563. package/src/vtab/memory/table.ts +0 -251
  564. package/src/vtab/memory/types.ts +0 -23
  565. package/src/vtab/memory/utils/logging.ts +0 -36
  566. package/src/vtab/memory/utils/primary-key.ts +0 -163
  567. package/src/vtab/module.ts +0 -162
  568. 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
- }