@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,242 +0,0 @@
1
- import type { RuntimeValue, SqlParameters, OutputValue, Row } from "../common/types.js";
2
- import type { Database } from "../core/database.js";
3
- import type { Statement } from "../core/statement.js";
4
- import type { RowDescriptor, RowGetter, TableDescriptor, TableGetter } from "../planner/nodes/plan-node.js";
5
- import type { Scheduler } from "./scheduler.js";
6
- import type { EmissionContext } from "./emission-context.js";
7
- import type { VirtualTableConnection } from "../vtab/connection.js";
8
- import type { PlanNode } from '../planner/nodes/plan-node.js';
9
-
10
- // Re-export types from common/types.js for convenience
11
- export type { OutputValue };
12
-
13
- export type RuntimeContext = {
14
- db: Database;
15
- stmt: Statement | undefined; // Undefined for transient exec statements
16
- params: SqlParameters; // User-provided values for the current execution
17
- /** Row contexts by row descriptor */
18
- context: Map<RowDescriptor, RowGetter>;
19
- /** Table contexts by table name, used for recursive CTEs or other temporary table situations */
20
- tableContexts: Map<TableDescriptor, TableGetter>;
21
- /** Debug tracer for instruction execution, if enabled */
22
- tracer?: InstructionTracer;
23
- /** Active connection for the current transaction context */
24
- activeConnection?: VirtualTableConnection;
25
- /** Whether to collect runtime execution metrics */
26
- enableMetrics: boolean;
27
- /** Context tracking for debugging context leaks */
28
- contextTracker?: ContextTracker;
29
- /** Stack of currently executing plan nodes (only when tracing enabled) */
30
- planStack?: PlanNode[];
31
- };
32
-
33
- export type InstructionRun = (ctx: RuntimeContext, ...args: RuntimeValue[]) => OutputValue;
34
-
35
- export type Instruction = {
36
- params: Instruction[];
37
- run: InstructionRun;
38
- /** Optional human-readable note about what this instruction does */
39
- note?: string;
40
- /** Optional sub-programs used to execute this instruction - this is here for tracing purposes */
41
- programs?: Scheduler[];
42
- /** Optional emission context for schema validation */
43
- emissionContext?: EmissionContext;
44
- /** Optional runtime statistics collected during execution */
45
- runtimeStats?: InstructionRuntimeStats;
46
- };
47
-
48
- /**
49
- * Runtime statistics for instruction execution
50
- */
51
- export interface InstructionRuntimeStats {
52
- /** Number of input values/rows processed */
53
- in: number;
54
- /** Number of output values/rows produced */
55
- out: number;
56
- /** Total execution time in nanoseconds */
57
- elapsedNs: bigint;
58
- /** Number of times this instruction was executed */
59
- executions: number;
60
- }
61
-
62
- /** * Trace event for instruction execution. */
63
- export interface InstructionTraceEvent {
64
- instructionIndex: number;
65
- note?: string;
66
- type: 'input' | 'output' | 'row' | 'error';
67
- timestamp: number;
68
- args?: RuntimeValue[];
69
- result?: OutputValue;
70
- error?: string;
71
- /** Information about sub-programs if this instruction has any */
72
- subPrograms?: SubProgramInfo[];
73
- /** Row index within the async iterable (for 'row' type events) */
74
- rowIndex?: number;
75
- /** Row data (for 'row' type events) */
76
- row?: Row;
77
- }
78
-
79
- /** Information about a sub-program for tracing purposes */
80
- export interface SubProgramInfo {
81
- programIndex: number;
82
- instructionCount: number;
83
- rootNote?: string;
84
- }
85
-
86
- /** * Interface for tracing instruction execution. */
87
- export interface InstructionTracer {
88
- /** Called before an instruction executes */
89
- traceInput(instructionIndex: number, instruction: Instruction, args: RuntimeValue[]): void;
90
- /** Called after an instruction executes */
91
- traceOutput(instructionIndex: number, instruction: Instruction, result: OutputValue): void;
92
- /** Called when an instruction throws an error */
93
- traceError(instructionIndex: number, instruction: Instruction, error: Error): void;
94
- /** Called for each row emitted by an async iterable instruction */
95
- traceRow(instructionIndex: number, instruction: Instruction, rowIndex: number, row: Row): void;
96
- /** Gets collected trace events (if supported by the tracer) */
97
- getTraceEvents?(): InstructionTraceEvent[];
98
- /** Gets information about all sub-programs encountered during tracing */
99
- getSubPrograms?(): Map<number, { scheduler: Scheduler; parentInstructionIndex: number }>;
100
- }
101
-
102
- /** * Tracer that collects execution events for later analysis. */
103
- export class CollectingInstructionTracer implements InstructionTracer {
104
- private events: InstructionTraceEvent[] = [];
105
- private subPrograms = new Map<number, { scheduler: Scheduler; parentInstructionIndex: number }>();
106
- private nextSubProgramId = 0;
107
-
108
- traceInput(instructionIndex: number, instruction: Instruction, args: RuntimeValue[]): void {
109
- const subPrograms = this.collectSubProgramInfo(instructionIndex, instruction);
110
-
111
- this.events.push({
112
- instructionIndex,
113
- note: instruction.note,
114
- type: 'input',
115
- timestamp: Date.now(),
116
- args: this.cloneArgs(args),
117
- subPrograms
118
- });
119
- }
120
-
121
- traceOutput(instructionIndex: number, instruction: Instruction, result: OutputValue): void {
122
- this.events.push({
123
- instructionIndex,
124
- note: instruction.note,
125
- type: 'output',
126
- timestamp: Date.now(),
127
- result: this.cloneResult(result)
128
- });
129
- }
130
-
131
- traceError(instructionIndex: number, instruction: Instruction, error: Error): void {
132
- this.events.push({
133
- instructionIndex,
134
- note: instruction.note,
135
- type: 'error',
136
- timestamp: Date.now(),
137
- error: error.message
138
- });
139
- }
140
-
141
- traceRow(instructionIndex: number, instruction: Instruction, rowIndex: number, row: Row): void {
142
- this.events.push({
143
- instructionIndex,
144
- note: instruction.note,
145
- type: 'row',
146
- timestamp: Date.now(),
147
- rowIndex,
148
- row
149
- });
150
- }
151
-
152
- getTraceEvents(): InstructionTraceEvent[] {
153
- return [...this.events];
154
- }
155
-
156
- getSubPrograms(): Map<number, { scheduler: Scheduler; parentInstructionIndex: number }> {
157
- return new Map(this.subPrograms);
158
- }
159
-
160
- clear(): void {
161
- this.events = [];
162
- this.subPrograms.clear();
163
- this.nextSubProgramId = 0;
164
- }
165
-
166
- private collectSubProgramInfo(instructionIndex: number, instruction: Instruction): SubProgramInfo[] | undefined {
167
- if (!instruction.programs || instruction.programs.length === 0) {
168
- return undefined;
169
- }
170
-
171
- return instruction.programs.map(scheduler => {
172
- const programId = this.nextSubProgramId++;
173
- this.subPrograms.set(programId, { scheduler, parentInstructionIndex: instructionIndex });
174
-
175
- return {
176
- programIndex: programId,
177
- instructionCount: scheduler.instructions.length,
178
- rootNote: scheduler.instructions[scheduler.instructions.length - 1]?.note
179
- };
180
- });
181
- }
182
-
183
- private cloneArgs(args: RuntimeValue[]): RuntimeValue[] {
184
- return args.map(arg => this.cloneValue(arg));
185
- }
186
-
187
- private cloneResult(result: OutputValue): OutputValue {
188
- if (result instanceof Promise) {
189
- return result.then(resolved => this.cloneValue(resolved as RuntimeValue));
190
- }
191
- return this.cloneValue(result as RuntimeValue);
192
- }
193
-
194
- private cloneValue(value: RuntimeValue): RuntimeValue {
195
- if (value === null || value === undefined) return value;
196
- if (typeof value === 'function') return '[Function]';
197
- if (typeof value === 'object' && value && Symbol.asyncIterator in value) return '[AsyncIterable]';
198
- if (Array.isArray(value)) return value.map(v => this.cloneValue(v as RuntimeValue)) as RuntimeValue;
199
- if (typeof value === 'object') return '[Object]';
200
- return value as RuntimeValue;
201
- }
202
- }
203
-
204
- /**
205
- * Tracks context additions and removals for debugging context leaks
206
- */
207
- export interface ContextTracker {
208
- /** Record that a context was added */
209
- addContext(descriptor: RowDescriptor, source: string): void;
210
- /** Record that a context was removed */
211
- removeContext(descriptor: RowDescriptor): void;
212
- /** Get all remaining contexts with their sources */
213
- getRemainingContexts(): Array<{ descriptor: RowDescriptor; source: string }>;
214
- /** Check if there are any remaining contexts */
215
- hasRemainingContexts(): boolean;
216
- }
217
-
218
- /**
219
- * Default implementation of ContextTracker
220
- */
221
- export class DefaultContextTracker implements ContextTracker {
222
- private contexts = new Map<RowDescriptor, string>();
223
-
224
- addContext(descriptor: RowDescriptor, source: string): void {
225
- this.contexts.set(descriptor, source);
226
- }
227
-
228
- removeContext(descriptor: RowDescriptor): void {
229
- this.contexts.delete(descriptor);
230
- }
231
-
232
- getRemainingContexts(): Array<{ descriptor: RowDescriptor; source: string }> {
233
- return Array.from(this.contexts.entries()).map(([descriptor, source]) => ({
234
- descriptor,
235
- source
236
- }));
237
- }
238
-
239
- hasRemainingContexts(): boolean {
240
- return this.contexts.size > 0;
241
- }
242
- }
@@ -1,177 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { QuereusError } from '../common/errors.js';
3
- import { StatusCode } from '../common/types.js';
4
- import type { TableSchema } from '../schema/table.js';
5
- import type { VirtualTable } from '../vtab/table.js';
6
- import type { RuntimeContext } from './types.js';
7
- import type { VirtualTableConnection } from '../vtab/connection.js';
8
- import { createLogger } from '../common/logger.js';
9
- import type { MemoryVirtualTableConnection } from '../vtab/memory/connection.js';
10
- import type { MemoryTable } from '../vtab/memory/table.js';
11
- import type { RowDescriptor, Attribute } from '../planner/nodes/plan-node.js';
12
-
13
- const log = createLogger('runtime:utils');
14
- const errorLog = log.extend('error');
15
- export const ctxLog = createLogger('runtime:context');
16
-
17
- /**
18
- * Check if a value is an AsyncIterable.
19
- *
20
- * NOTE: Hermes (React Native's JS engine) has a bug where AsyncGenerator objects
21
- * don't have Symbol.asyncIterator as an own or inherited property, even though
22
- * they are valid async iterables. We work around this by also checking for
23
- * the presence of a .next() method (duck typing for async iterators).
24
- */
25
- export function isAsyncIterable<T>(value: unknown): value is AsyncIterable<T> {
26
- if (typeof value !== 'object' || value === null) {
27
- return false;
28
- }
29
- // Standard check: Symbol.asyncIterator
30
- if (Symbol.asyncIterator in value) {
31
- return true;
32
- }
33
- // Hermes workaround: AsyncGenerator has .next() but not Symbol.asyncIterator
34
- const maybeAsyncGen = value as { next?: unknown; constructor?: { name?: string } };
35
- if (typeof maybeAsyncGen.next === 'function' &&
36
- maybeAsyncGen.constructor?.name === 'AsyncGenerator') {
37
- return true;
38
- }
39
- return false;
40
- }
41
-
42
- /**
43
- * Get an AsyncIterator from an AsyncIterable, handling Hermes's missing Symbol.asyncIterator.
44
- *
45
- * @throws TypeError if value is not a valid async iterable
46
- */
47
- export function getAsyncIterator<T>(value: AsyncIterable<T>): AsyncIterator<T> {
48
- // Standard path: use Symbol.asyncIterator
49
- if (Symbol.asyncIterator in value) {
50
- return value[Symbol.asyncIterator]();
51
- }
52
- // Hermes workaround: AsyncGenerator is its own iterator
53
- const maybeAsyncGen = value as unknown as { next?: () => Promise<IteratorResult<T>>; constructor?: { name?: string } };
54
- if (typeof maybeAsyncGen.next === 'function' &&
55
- maybeAsyncGen.constructor?.name === 'AsyncGenerator') {
56
- return maybeAsyncGen as AsyncIterator<T>;
57
- }
58
- throw new TypeError('Value is not async iterable');
59
- }
60
-
61
- export async function asyncIterableToArray<T>(iterable: AsyncIterable<T>): Promise<T[]> {
62
- const result: T[] = [];
63
- for await (const item of iterable) {
64
- result.push(item);
65
- }
66
- return result;
67
- }
68
-
69
- /**
70
- * Helper to get or create a VirtualTable connection for a given table.
71
- * This ensures transaction consistency by reusing connections within the same context.
72
- */
73
- export async function getVTableConnection(ctx: RuntimeContext, tableSchema: TableSchema): Promise<VirtualTableConnection> {
74
- const tableName = tableSchema.name; // Use just the table name, not fully qualified
75
-
76
- // Check if we already have an active connection for this table
77
- const existingConnections = ctx.db.getConnectionsForTable(tableName);
78
- if (existingConnections.length > 0) {
79
- log(`Reusing existing connection for table ${tableName}`);
80
- return existingConnections[0];
81
- }
82
-
83
- // Create a new VirtualTable instance
84
- const vtab = await getVTable(ctx, tableSchema);
85
-
86
- // Try to create a connection if the table supports it
87
- let connection: VirtualTableConnection;
88
- if (vtab.createConnection) {
89
- connection = await vtab.createConnection();
90
- log(`Created new connection ${connection.connectionId} for table ${tableName}`);
91
- } else if (vtab.getConnection) {
92
- const existingConn = vtab.getConnection();
93
- if (existingConn) {
94
- connection = existingConn;
95
- log(`Using existing internal connection ${connection.connectionId} for table ${tableName}`);
96
- } else {
97
- throw new QuereusError(`Table '${tableName}' does not support connections`, StatusCode.INTERNAL);
98
- }
99
- } else {
100
- throw new QuereusError(`Table '${tableName}' does not support connections`, StatusCode.INTERNAL);
101
- }
102
-
103
- // Register the connection with the database
104
- await ctx.db.registerConnection(connection);
105
-
106
- // Set as the active connection in the runtime context if none is set
107
- if (!ctx.activeConnection) {
108
- ctx.activeConnection = connection;
109
- }
110
-
111
- return connection;
112
- }
113
-
114
- /**
115
- * Helper to get the VirtualTable instance for a given TableReferenceNode.
116
- * This is the legacy method that creates ephemeral instances.
117
- * When reusing connections, this will also inject the existing connection into the VirtualTable.
118
- */
119
- export async function getVTable(ctx: RuntimeContext, tableSchema: TableSchema): Promise<VirtualTable> {
120
- // All tables are virtual, so vtabModuleName should always be present.
121
- if (!tableSchema.vtabModuleName) {
122
- throw new QuereusError(`Table schema for '${tableSchema.name}' is missing vtabModuleName.`, StatusCode.INTERNAL);
123
- }
124
- const moduleInfo = ctx.db._getVtabModule(tableSchema.vtabModuleName);
125
- if (!moduleInfo) {
126
- throw new QuereusError(`Virtual table module '${tableSchema.vtabModuleName}' not found for table '${tableSchema.name}'`, StatusCode.ERROR);
127
- }
128
- const module = moduleInfo.module;
129
- if (typeof module.connect !== 'function') {
130
- throw new QuereusError(`Virtual table module '${tableSchema.vtabModuleName}' does not implement connect`, StatusCode.MISUSE);
131
- }
132
- const vtabArgs = tableSchema.vtabArgs || {};
133
- const vtabInstance = module.connect(ctx.db, moduleInfo.auxData, tableSchema.vtabModuleName, tableSchema.schemaName, tableSchema.name, vtabArgs);
134
-
135
- // If we have an active connection for this table, inject it into the VirtualTable
136
- const tableName = tableSchema.name;
137
- const existingConnections = ctx.db.getConnectionsForTable(tableName);
138
- if (existingConnections.length > 0 && tableSchema.vtabModuleName === 'memory') {
139
- const memoryConnection = existingConnections[0] as MemoryVirtualTableConnection;
140
- const memoryTable = vtabInstance as MemoryTable;
141
- if (memoryConnection.getMemoryConnection && memoryTable.setConnection) {
142
- memoryTable.setConnection(memoryConnection.getMemoryConnection());
143
- log(`Injected existing connection into VirtualTable for table ${tableName}`);
144
- }
145
- }
146
-
147
- return vtabInstance;
148
- }
149
-
150
- /**
151
- * Helper to properly disconnect and unregister a VirtualTable instance.
152
- */
153
- export async function disconnectVTable(ctx: RuntimeContext, vtab: VirtualTable): Promise<void> {
154
- // Disconnect the VirtualTable instance
155
- if (typeof vtab.disconnect === 'function') {
156
- await vtab.disconnect().catch((e: any) => {
157
- errorLog(`Error during disconnect for table '${vtab.tableName}': ${e}`);
158
- });
159
- }
160
- }
161
-
162
- /**
163
- * Helper function to log context push operations
164
- */
165
- export function logContextPush(descriptor: RowDescriptor, note: string, attributes?: readonly Attribute[]) {
166
- const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
167
- const attrNames = attributes ? attributes.map(attr => `${attr.name}(#${attr.id})`).join(',') : 'unknown';
168
- ctxLog('PUSH context %s: attrs=[%s] names=[%s]', note, attrs.join(','), attrNames);
169
- }
170
-
171
- /**
172
- * Helper function to log context pop operations
173
- */
174
- export function logContextPop(descriptor: RowDescriptor, note: string) {
175
- const attrs = Object.keys(descriptor).filter(k => descriptor[parseInt(k)] !== undefined);
176
- ctxLog('POP context %s: attrs=[%s]', note, attrs.join(','));
177
- }
@@ -1,21 +0,0 @@
1
- export interface AssertionDependentTable {
2
- /** Instance-unique table reference key, e.g. schema.table#nodeId */
3
- relationKey: string;
4
- /** Base table identifier, e.g. schema.table */
5
- base: string;
6
- }
7
-
8
- export interface IntegrityAssertionSchema {
9
- /** Unique assertion name */
10
- name: string;
11
- /** SQL text of the violation-producing query. Any returned row indicates a violation. */
12
- violationSql: string;
13
- /** Whether the assertion is deferrable. Currently always enforced at COMMIT. */
14
- deferrable: boolean;
15
- /** If true, initially deferred. Currently informational. */
16
- initiallyDeferred: boolean;
17
- /** Base tables referenced; filled during assertion preparation/creation. */
18
- dependentTables?: AssertionDependentTable[];
19
- }
20
-
21
-
@@ -1,269 +0,0 @@
1
- import type { Database } from '../core/database.js';
2
- import type { TableSchema, IndexSchema } from './table.js';
3
- import type { ViewSchema } from './view.js';
4
- import type { IntegrityAssertionSchema } from './assertion.js';
5
- import { createTableToString, createViewToString, createIndexToString } from '../util/ast-stringify.js';
6
- import type * as AST from '../parser/ast.js';
7
-
8
- /**
9
- * Represents a catalog snapshot of the current database schema state
10
- */
11
- export interface SchemaCatalog {
12
- schemaName: string;
13
- tables: CatalogTable[];
14
- views: CatalogView[];
15
- indexes: CatalogIndex[];
16
- assertions: CatalogAssertion[];
17
- }
18
-
19
- export interface CatalogTable {
20
- name: string;
21
- ddl: string;
22
- columns: Array<{ name: string; type: string; notNull: boolean; primaryKey: boolean }>;
23
- }
24
-
25
- export interface CatalogView {
26
- name: string;
27
- ddl: string;
28
- }
29
-
30
- export interface CatalogIndex {
31
- name: string;
32
- tableName: string;
33
- ddl: string;
34
- }
35
-
36
- export interface CatalogAssertion {
37
- name: string;
38
- ddl: string;
39
- }
40
-
41
- /**
42
- * Collects current schema state from the database into a catalog representation
43
- */
44
- export function collectSchemaCatalog(db: Database, schemaName: string = 'main'): SchemaCatalog {
45
- const schema = db.schemaManager.getSchema(schemaName);
46
- if (!schema) {
47
- return {
48
- schemaName,
49
- tables: [],
50
- views: [],
51
- indexes: [],
52
- assertions: []
53
- };
54
- }
55
-
56
- const tables: CatalogTable[] = [];
57
- const views: CatalogView[] = [];
58
- const indexes: CatalogIndex[] = [];
59
- const assertions: CatalogAssertion[] = [];
60
-
61
- // Collect tables
62
- for (const tableSchema of schema.getAllTables()) {
63
- if (!tableSchema.isView) {
64
- tables.push(tableSchemaToCatalog(tableSchema));
65
-
66
- // Collect indexes for this table
67
- if (tableSchema.indexes && tableSchema.indexes.length > 0) {
68
- for (const indexSchema of tableSchema.indexes) {
69
- indexes.push({
70
- name: indexSchema.name,
71
- tableName: tableSchema.name,
72
- ddl: generateIndexDDL(indexSchema, tableSchema)
73
- });
74
- }
75
- }
76
- }
77
- }
78
-
79
- // Collect views
80
- for (const viewSchema of schema.getAllViews()) {
81
- views.push(viewSchemaToCatalog(viewSchema));
82
- }
83
-
84
- // Collect assertions
85
- for (const assertionSchema of schema.getAllAssertions()) {
86
- assertions.push(assertionSchemaToCatalog(assertionSchema));
87
- }
88
-
89
- return {
90
- schemaName,
91
- tables,
92
- views,
93
- indexes,
94
- assertions
95
- };
96
- }
97
-
98
- function tableSchemaToCatalog(tableSchema: TableSchema): CatalogTable {
99
- // Generate canonical DDL from TableSchema
100
- const ddl = generateTableDDL(tableSchema);
101
-
102
- const columns = tableSchema.columns.map(col => ({
103
- name: col.name,
104
- type: col.logicalType.name,
105
- notNull: col.notNull,
106
- primaryKey: col.primaryKey
107
- }));
108
-
109
- return {
110
- name: tableSchema.name,
111
- ddl,
112
- columns
113
- };
114
- }
115
-
116
- function viewSchemaToCatalog(viewSchema: ViewSchema): CatalogView {
117
- return {
118
- name: viewSchema.name,
119
- ddl: viewSchema.sql
120
- };
121
- }
122
-
123
- function assertionSchemaToCatalog(assertionSchema: IntegrityAssertionSchema): CatalogAssertion {
124
- return {
125
- name: assertionSchema.name,
126
- ddl: `CREATE ASSERTION ${assertionSchema.name} CHECK (${assertionSchema.violationSql})`
127
- };
128
- }
129
-
130
- /**
131
- * Generates canonical DDL for an index from its schema
132
- */
133
- function generateIndexDDL(indexSchema: IndexSchema, tableSchema: TableSchema): string {
134
- // Convert IndexSchema back to AST CreateIndexStmt for stringification
135
- const indexStmt: AST.CreateIndexStmt = {
136
- type: 'createIndex',
137
- index: { type: 'identifier', name: indexSchema.name },
138
- table: { type: 'identifier', name: tableSchema.name },
139
- ifNotExists: false,
140
- isUnique: false,
141
- columns: indexSchema.columns.map(col => ({
142
- name: tableSchema.columns[col.index].name,
143
- expr: undefined,
144
- collation: col.collation,
145
- direction: col.desc ? 'desc' : 'asc'
146
- }))
147
- };
148
-
149
- return createIndexToString(indexStmt);
150
- }
151
-
152
- /**
153
- * Generates canonical DDL for a table from its schema
154
- */
155
- function generateTableDDL(tableSchema: TableSchema): string {
156
- const parts: string[] = ['CREATE TABLE'];
157
-
158
- if (tableSchema.isTemporary) {
159
- parts.push('TEMP');
160
- }
161
-
162
- parts.push(`"${tableSchema.name}"`);
163
-
164
- // Generate column definitions
165
- const columnDefs: string[] = [];
166
- for (const col of tableSchema.columns) {
167
- let colDef = `"${col.name}"`;
168
- if (col.logicalType) {
169
- colDef += ` ${col.logicalType.name}`;
170
- }
171
- if (col.notNull) {
172
- colDef += ' NOT NULL';
173
- }
174
- if (col.primaryKey && tableSchema.primaryKeyDefinition.length === 1) {
175
- colDef += ' PRIMARY KEY';
176
- }
177
- columnDefs.push(colDef);
178
- }
179
-
180
- // Add table-level PRIMARY KEY if composite
181
- if (tableSchema.primaryKeyDefinition.length > 1) {
182
- const pkCols = tableSchema.primaryKeyDefinition
183
- .map(pk => `"${tableSchema.columns[pk.index].name}"`)
184
- .join(', ');
185
- columnDefs.push(`PRIMARY KEY (${pkCols})`);
186
- }
187
-
188
- parts.push(`(${columnDefs.join(', ')})`);
189
-
190
- // Add USING clause
191
- if (tableSchema.vtabModuleName) {
192
- parts.push(`USING ${tableSchema.vtabModuleName}`);
193
- if (tableSchema.vtabArgs && Object.keys(tableSchema.vtabArgs).length > 0) {
194
- const args = Object.entries(tableSchema.vtabArgs)
195
- .map(([key, value]) => `${key} = ${JSON.stringify(value)}`)
196
- .join(', ');
197
- parts.push(`(${args})`);
198
- }
199
- }
200
-
201
- return parts.join(' ');
202
- }
203
-
204
- /**
205
- * Generates canonical DDL from a declared schema AST
206
- */
207
- export function generateDeclaredDDL(declaredSchema: AST.DeclareSchemaStmt, targetSchema?: string): string[] {
208
- const ddlStatements: string[] = [];
209
-
210
- for (const item of declaredSchema.items) {
211
- switch (item.type) {
212
- case 'declaredTable': {
213
- // Qualify table name with schema if specified
214
- const tableStmt = item.tableStmt;
215
- if (targetSchema && targetSchema !== 'main' && !tableStmt.table.schema) {
216
- const qualifiedStmt: AST.CreateTableStmt = {
217
- ...tableStmt,
218
- table: {
219
- ...tableStmt.table,
220
- schema: targetSchema
221
- }
222
- };
223
- ddlStatements.push(createTableToString(qualifiedStmt));
224
- } else {
225
- ddlStatements.push(createTableToString(tableStmt));
226
- }
227
- break;
228
- }
229
- case 'declaredIndex': {
230
- // Generate index DDL using AST stringifier
231
- const indexStmt = item.indexStmt;
232
- if (targetSchema && targetSchema !== 'main' && !indexStmt.table.schema) {
233
- const qualifiedStmt: AST.CreateIndexStmt = {
234
- ...indexStmt,
235
- table: {
236
- ...indexStmt.table,
237
- schema: targetSchema
238
- }
239
- };
240
- ddlStatements.push(createIndexToString(qualifiedStmt));
241
- } else {
242
- ddlStatements.push(createIndexToString(indexStmt));
243
- }
244
- break;
245
- }
246
- case 'declaredView': {
247
- // Qualify view name with schema if specified
248
- const viewStmt = item.viewStmt;
249
- if (targetSchema && targetSchema !== 'main' && !viewStmt.view.schema) {
250
- const qualifiedStmt: AST.CreateViewStmt = {
251
- ...viewStmt,
252
- view: {
253
- ...viewStmt.view,
254
- schema: targetSchema
255
- }
256
- };
257
- ddlStatements.push(createViewToString(qualifiedStmt));
258
- } else {
259
- ddlStatements.push(createViewToString(viewStmt));
260
- }
261
- break;
262
- }
263
- }
264
- }
265
-
266
- return ddlStatements;
267
- }
268
-
269
-