@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,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
-