@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,198 +0,0 @@
1
- import type { DmlExecutorNode } from '../../planner/nodes/dml-executor-node.js';
2
- import type { Instruction, RuntimeContext, InstructionRun, OutputValue } from '../types.js';
3
- import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
4
- import { QuereusError } from '../../common/errors.js';
5
- import { StatusCode, type Row, type SqlValue } from '../../common/types.js';
6
- import { getVTable, disconnectVTable } from '../utils.js';
7
- import { ConflictResolution } from '../../common/constants.js';
8
- import type { EmissionContext } from '../emission-context.js';
9
- import { extractOldRowFromFlat, extractNewRowFromFlat } from '../../util/row-descriptor.js';
10
- import { buildInsertStatement, buildUpdateStatement, buildDeleteStatement } from '../../util/mutation-statement.js';
11
- import type { UpdateArgs } from '../../vtab/table.js';
12
-
13
- export function emitDmlExecutor(plan: DmlExecutorNode, ctx: EmissionContext): Instruction {
14
- const tableSchema = plan.table.tableSchema;
15
-
16
- // Pre-calculate primary key column indices from schema (needed for update/delete)
17
- const pkColumnIndicesInSchema = tableSchema.primaryKeyDefinition.map(pkColDef => pkColDef.index);
18
-
19
- // Emit mutation context evaluators if present
20
- const contextEvaluatorInstructions: Instruction[] = [];
21
- if (plan.mutationContextValues && plan.contextAttributes) {
22
- for (const attr of plan.contextAttributes) {
23
- const valueNode = plan.mutationContextValues.get(attr.name);
24
- if (!valueNode) {
25
- throw new QuereusError(`Missing mutation context value for '${attr.name}'`, StatusCode.INTERNAL);
26
- }
27
- const instruction = emitCallFromPlan(valueNode, ctx);
28
- contextEvaluatorInstructions.push(instruction);
29
- }
30
- }
31
-
32
- // --- Operation-specific run generators ------------------------------------
33
-
34
- // INSERT ----------------------------------------------------
35
- async function* runInsert(ctx: RuntimeContext, rows: AsyncIterable<Row>, ...contextEvaluators: Array<(ctx: RuntimeContext) => OutputValue>): AsyncIterable<Row> {
36
- const vtab = await getVTable(ctx, tableSchema);
37
-
38
- // Evaluate mutation context once per statement
39
- let contextRow: Row | undefined;
40
- if (contextEvaluators.length > 0) {
41
- contextRow = [];
42
- for (const evaluator of contextEvaluators) {
43
- const value = await evaluator(ctx) as SqlValue;
44
- contextRow.push(value);
45
- }
46
- }
47
-
48
- try {
49
- for await (const flatRow of rows) {
50
- const newRow = extractNewRowFromFlat(flatRow, tableSchema.columns.length);
51
-
52
- // Build mutation statement if logging is enabled
53
- let mutationStatement: string | undefined;
54
- if (vtab.wantStatements) {
55
- mutationStatement = buildInsertStatement(tableSchema, newRow, contextRow);
56
- }
57
-
58
- const args: UpdateArgs = {
59
- operation: 'insert',
60
- values: newRow,
61
- oldKeyValues: undefined,
62
- onConflict: plan.onConflict ?? ConflictResolution.ABORT,
63
- mutationStatement
64
- };
65
-
66
- await vtab.update!(args);
67
-
68
- // Track change (INSERT): record NEW primary key
69
- const pkValues = tableSchema.primaryKeyDefinition.map(def => newRow[def.index]);
70
- ctx.db._recordInsert(`${tableSchema.schemaName}.${tableSchema.name}`, pkValues);
71
- yield flatRow; // make OLD/NEW available downstream (e.g. RETURNING)
72
- }
73
- } finally {
74
- await disconnectVTable(ctx, vtab);
75
- }
76
- }
77
-
78
- // UPDATE ----------------------------------------------------
79
- async function* runUpdate(ctx: RuntimeContext, rows: AsyncIterable<Row>, ...contextEvaluators: Array<(ctx: RuntimeContext) => OutputValue>): AsyncIterable<Row> {
80
- const vtab = await getVTable(ctx, tableSchema);
81
-
82
- // Evaluate mutation context once per statement
83
- let contextRow: Row | undefined;
84
- if (contextEvaluators.length > 0) {
85
- contextRow = [];
86
- for (const evaluator of contextEvaluators) {
87
- const value = await evaluator(ctx) as SqlValue;
88
- contextRow.push(value);
89
- }
90
- }
91
-
92
- try {
93
- for await (const flatRow of rows) {
94
- const oldRow = extractOldRowFromFlat(flatRow, tableSchema.columns.length);
95
- const newRow = extractNewRowFromFlat(flatRow, tableSchema.columns.length);
96
-
97
- // Extract primary key values from the OLD row (these identify which row to update)
98
- const keyValues: SqlValue[] = pkColumnIndicesInSchema.map(pkColIdx => {
99
- if (pkColIdx >= oldRow.length) {
100
- throw new QuereusError(`PK column index ${pkColIdx} out of bounds for OLD row length ${oldRow.length} in UPDATE on '${tableSchema.name}'.`, StatusCode.INTERNAL);
101
- }
102
- return oldRow[pkColIdx];
103
- });
104
-
105
- // Build mutation statement if logging is enabled
106
- let mutationStatement: string | undefined;
107
- if (vtab.wantStatements) {
108
- mutationStatement = buildUpdateStatement(tableSchema, newRow, keyValues, contextRow);
109
- }
110
-
111
- const args: UpdateArgs = {
112
- operation: 'update',
113
- values: newRow,
114
- oldKeyValues: keyValues,
115
- onConflict: ConflictResolution.ABORT,
116
- mutationStatement
117
- };
118
-
119
- await vtab.update!(args);
120
-
121
- // Track change (UPDATE): record OLD and NEW primary keys
122
- const newKeyValues: SqlValue[] = tableSchema.primaryKeyDefinition.map(pkColDef => newRow[pkColDef.index]);
123
- ctx.db._recordUpdate(`${tableSchema.schemaName}.${tableSchema.name}`, keyValues, newKeyValues);
124
- yield flatRow;
125
- }
126
- } finally {
127
- await disconnectVTable(ctx, vtab);
128
- }
129
- }
130
-
131
- // DELETE ----------------------------------------------------
132
- async function* runDelete(ctx: RuntimeContext, rows: AsyncIterable<Row>, ...contextEvaluators: Array<(ctx: RuntimeContext) => OutputValue>): AsyncIterable<Row> {
133
- const vtab = await getVTable(ctx, tableSchema);
134
-
135
- // Evaluate mutation context once per statement
136
- let contextRow: Row | undefined;
137
- if (contextEvaluators.length > 0) {
138
- contextRow = [];
139
- for (const evaluator of contextEvaluators) {
140
- const value = await evaluator(ctx) as SqlValue;
141
- contextRow.push(value);
142
- }
143
- }
144
-
145
- try {
146
- for await (const flatRow of rows) {
147
- const oldRow = extractOldRowFromFlat(flatRow, tableSchema.columns.length);
148
-
149
- const keyValues: SqlValue[] = pkColumnIndicesInSchema.map(pkColIdx => {
150
- if (pkColIdx >= oldRow.length) {
151
- throw new QuereusError(`PK column index ${pkColIdx} out of bounds for OLD row length ${oldRow.length} in DELETE on '${tableSchema.name}'.`, StatusCode.INTERNAL);
152
- }
153
- return oldRow[pkColIdx];
154
- });
155
-
156
- // Build mutation statement if logging is enabled
157
- let mutationStatement: string | undefined;
158
- if (vtab.wantStatements) {
159
- mutationStatement = buildDeleteStatement(tableSchema, keyValues, contextRow);
160
- }
161
-
162
- const args: UpdateArgs = {
163
- operation: 'delete',
164
- values: undefined,
165
- oldKeyValues: keyValues,
166
- onConflict: ConflictResolution.ABORT,
167
- mutationStatement
168
- };
169
-
170
- await vtab.update!(args);
171
-
172
- // Track change (DELETE): record OLD primary key
173
- ctx.db._recordDelete(`${tableSchema.schemaName}.${tableSchema.name}`, keyValues);
174
- yield flatRow;
175
- }
176
- } finally {
177
- await disconnectVTable(ctx, vtab);
178
- }
179
- }
180
-
181
- // Select the correct generator based on operation
182
- let run: InstructionRun;
183
- switch (plan.operation) {
184
- case 'insert': run = runInsert as InstructionRun; break;
185
- case 'update': run = runUpdate as InstructionRun; break;
186
- case 'delete': run = runDelete as InstructionRun; break;
187
- default:
188
- throw new QuereusError(`Unknown DML operation: ${plan.operation}`, StatusCode.INTERNAL);
189
- }
190
-
191
- const sourceInstruction = emitPlanNode(plan.source, ctx);
192
-
193
- return {
194
- params: [sourceInstruction, ...contextEvaluatorInstructions],
195
- run,
196
- note: `execute${plan.operation}(${plan.table.tableSchema.name})`
197
- };
198
- }
@@ -1,45 +0,0 @@
1
- import type { DropAssertionNode } from '../../planner/nodes/drop-assertion-node.js';
2
- import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
3
- import type { EmissionContext } from '../emission-context.js';
4
- import { QuereusError } from '../../common/errors.js';
5
- import { SqlValue, StatusCode } from '../../common/types.js';
6
- import { createLogger } from '../../common/logger.js';
7
-
8
- const log = createLogger('runtime:emit:drop-assertion');
9
-
10
- export function emitDropAssertion(plan: DropAssertionNode, _ctx: EmissionContext): Instruction {
11
-
12
- async function run(rctx: RuntimeContext): Promise<SqlValue> {
13
- const schemaManager = rctx.db.schemaManager;
14
- const schema = schemaManager.getMainSchema(); // Look in main schema for now
15
-
16
- const existing = schema.getAssertion(plan.name);
17
- if (!existing) {
18
- if (plan.ifExists) {
19
- log('Assertion %s not found, but IF EXISTS specified', plan.name);
20
- return null;
21
- }
22
- throw new QuereusError(
23
- `Assertion ${plan.name} not found`,
24
- StatusCode.NOTFOUND
25
- );
26
- }
27
-
28
- const removed = schema.removeAssertion(plan.name);
29
- if (!removed && !plan.ifExists) {
30
- throw new QuereusError(
31
- `Failed to remove assertion ${plan.name}`,
32
- StatusCode.INTERNAL
33
- );
34
- }
35
-
36
- log('Dropped assertion %s', plan.name);
37
- return null;
38
- }
39
-
40
- return {
41
- params: [],
42
- run: run as InstructionRun,
43
- note: `dropAssertion(${plan.name})`
44
- };
45
- }
@@ -1,27 +0,0 @@
1
- import type { DropTableNode } from '../../planner/nodes/drop-table-node.js';
2
- import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
3
- import { QuereusError } from '../../common/errors.js';
4
- import { StatusCode, type SqlValue } from '../../common/types.js';
5
- import type { EmissionContext } from '../emission-context.js';
6
-
7
- export function emitDropTable(plan: DropTableNode, ctx: EmissionContext): Instruction {
8
- const schemaManager = ctx.db.schemaManager;
9
- const stmt = plan.statementAst; // AST.DropStmt
10
-
11
- const targetSchemaName = stmt.name.schema || schemaManager.getCurrentSchemaName();
12
- const objectName = stmt.name.name;
13
-
14
- if (stmt.objectType !== 'table') {
15
- // This emitter is specifically for DROP TABLE.
16
- // DROP VIEW, DROP INDEX would need their own PlanNodes and emitters, or a more generic DDL DropNode.
17
- throw new QuereusError(`DROP for object type '${stmt.objectType}' is not supported by emitDropTable.`, StatusCode.UNSUPPORTED);
18
- }
19
-
20
- async function run(rctx: RuntimeContext): Promise<SqlValue | undefined> {
21
- await rctx.db.schemaManager.dropTable(targetSchemaName, objectName, stmt.ifExists);
22
-
23
- return null;
24
- }
25
-
26
- return { params: [], run: run as InstructionRun };
27
- }
@@ -1,49 +0,0 @@
1
- import type { DropViewNode } from '../../planner/nodes/drop-view-node.js';
2
- import type { Instruction, RuntimeContext } from '../types.js';
3
- import type { EmissionContext } from '../emission-context.js';
4
- import { QuereusError } from '../../common/errors.js';
5
- import { StatusCode, type SqlValue } from '../../common/types.js';
6
-
7
- export function emitDropView(plan: DropViewNode, _ctx: EmissionContext): Instruction {
8
- async function run(rctx: RuntimeContext): Promise<SqlValue> {
9
- // Check if view exists
10
- const existingView = rctx.db.schemaManager.getView(plan.schemaName, plan.viewName);
11
-
12
- if (!existingView && !plan.ifExists) {
13
- throw new QuereusError(
14
- `View '${plan.schemaName}.${plan.viewName}' does not exist`,
15
- StatusCode.ERROR
16
- );
17
- }
18
-
19
- if (!existingView && plan.ifExists) {
20
- // View doesn't exist but IF EXISTS was specified, so this is a no-op
21
- return null;
22
- }
23
-
24
- // Remove the view from the schema manager
25
- const schema = rctx.db.schemaManager.getSchema(plan.schemaName);
26
- if (!schema) {
27
- throw new QuereusError(
28
- `Schema '${plan.schemaName}' does not exist`,
29
- StatusCode.ERROR
30
- );
31
- }
32
-
33
- const removed = schema.removeView(plan.viewName);
34
- if (!removed && !plan.ifExists) {
35
- throw new QuereusError(
36
- `View '${plan.schemaName}.${plan.viewName}' does not exist`,
37
- StatusCode.ERROR
38
- );
39
- }
40
-
41
- return null; // Explicitly return null for successful void operations
42
- }
43
-
44
- return {
45
- params: [],
46
- run,
47
- note: `dropView(${plan.schemaName}.${plan.viewName})`
48
- };
49
- }
@@ -1,30 +0,0 @@
1
- import type { FilterNode } from '../../planner/nodes/filter.js';
2
- import type { Instruction, InstructionRun, RuntimeContext } from '../types.js';
3
- import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
4
- import { OutputValue, type Row } from '../../common/types.js';
5
- import type { EmissionContext } from '../emission-context.js';
6
- import { buildRowDescriptor } from '../../util/row-descriptor.js';
7
- import { withRowContextGenerator } from '../context-helpers.js';
8
-
9
- export function emitFilter(plan: FilterNode, ctx: EmissionContext): Instruction {
10
- const sourceInstruction = emitPlanNode(plan.source, ctx);
11
- const predicateFunc = emitCallFromPlan(plan.predicate, ctx);
12
-
13
- // Create row descriptor for source attributes
14
- const sourceRowDescriptor = buildRowDescriptor(plan.source.getAttributes());
15
-
16
- async function* run(ctx: RuntimeContext, source: AsyncIterable<Row>, predicate: (ctx: RuntimeContext) => OutputValue): AsyncIterable<Row> {
17
- yield* withRowContextGenerator(ctx, sourceRowDescriptor, source, async function* (sourceRow) {
18
- const result = await predicate(ctx);
19
- if (result) {
20
- yield sourceRow;
21
- }
22
- });
23
- }
24
-
25
- return {
26
- params: [sourceInstruction, predicateFunc],
27
- run: run as InstructionRun,
28
- note: `filter(${plan.predicate.toString()})`
29
- };
30
- }
@@ -1,42 +0,0 @@
1
- import type { InsertNode } from '../../planner/nodes/insert-node.js';
2
- import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
3
- import { emitPlanNode } from '../emitters.js';
4
- import type { Row } from '../../common/types.js';
5
- import type { EmissionContext } from '../emission-context.js';
6
-
7
- export function emitInsert(plan: InsertNode, ctx: EmissionContext): Instruction {
8
- // INSERT node now only handles data transformations and passes flat rows through.
9
- // The actual database insert operations are handled by DmlExecutorNode.
10
- // Type conversion is handled by the table manager's validateAndParse in performInsert.
11
- async function* run(_ctx: RuntimeContext, sourceValue: AsyncIterable<Row>): AsyncIterable<Row> {
12
- const tableSchema = plan.table.tableSchema;
13
- const colCount = tableSchema.columns.length;
14
-
15
- for await (const sourceRow of sourceValue) {
16
- // Convert source row to flat OLD/NEW format
17
- // For INSERT: OLD values are all NULL, NEW values are from source
18
- const flatRow: Row = new Array(colCount * 2);
19
-
20
- // Fill OLD section with NULLs (indices 0..n-1)
21
- for (let i = 0; i < colCount; i++) {
22
- flatRow[i] = null;
23
- }
24
-
25
- // Fill NEW section with source values (indices n..2n-1)
26
- // No affinity conversion here - let the type system handle it
27
- for (let colIdx = 0; colIdx < colCount; colIdx++) {
28
- flatRow[colCount + colIdx] = sourceRow[colIdx];
29
- }
30
-
31
- yield flatRow;
32
- }
33
- }
34
-
35
- const sourceInstruction = emitPlanNode(plan.source, ctx);
36
-
37
- return {
38
- params: [sourceInstruction],
39
- run: run as InstructionRun,
40
- note: `insertPrep(${plan.table.tableSchema.name})`
41
- };
42
- }
@@ -1,37 +0,0 @@
1
- import type { Row } from '../../common/types.js';
2
- import type { InternalRecursiveCTERefNode } from '../../planner/nodes/internal-recursive-cte-ref-node.js';
3
- import type { EmissionContext } from '../emission-context.js';
4
- import { createValidatedInstruction } from '../emitters.js';
5
- import type { Instruction, RuntimeContext } from '../types.js';
6
- import { QuereusError } from '../../common/errors.js';
7
- import { StatusCode } from '../../common/types.js';
8
- import { buildRowDescriptor } from '../../util/row-descriptor.js';
9
- import { withRowContextGenerator } from '../context-helpers.js';
10
-
11
- export function emitInternalRecursiveCTERef(plan: InternalRecursiveCTERefNode, ctx: EmissionContext): Instruction {
12
- // Create row descriptor for output attributes
13
- const rowDescriptor = buildRowDescriptor(plan.getAttributes());
14
-
15
- async function* run(rctx: RuntimeContext): AsyncIterable<Row> {
16
- // Look up the working table from runtime context using the tableDescriptor
17
- const tableGetter = rctx.tableContexts.get(plan.workingTableDescriptor);
18
- if (!tableGetter) {
19
- throw new QuereusError(
20
- `Internal recursive CTE '${plan.cteName}' working table not found in context`,
21
- StatusCode.INTERNAL
22
- );
23
- }
24
-
25
- // Execute the working table and yield each row
26
- yield* withRowContextGenerator(rctx, rowDescriptor, tableGetter(), async function* (row) {
27
- yield row;
28
- });
29
- }
30
-
31
- return createValidatedInstruction(
32
- [], // No instruction parameters - data comes from table context
33
- run,
34
- ctx,
35
- `internal_recursive_ref(${plan.cteName}${plan.alias ? ` AS ${plan.alias}` : ''})`
36
- );
37
- }
@@ -1,148 +0,0 @@
1
- import type { JoinNode } from '../../planner/nodes/join-node.js';
2
- import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
3
- import { emitCallFromPlan, emitPlanNode } from '../emitters.js';
4
- import type { Row, OutputValue } from '../../common/types.js';
5
- import type { EmissionContext } from '../emission-context.js';
6
- import { createLogger } from '../../common/logger.js';
7
- import { compareSqlValues } from '../../util/comparison.js';
8
- import { buildRowDescriptor } from '../../util/row-descriptor.js';
9
- import { createRowSlot } from '../context-helpers.js';
10
- import type { Attribute } from '../../planner/nodes/plan-node.js';
11
-
12
- const log = createLogger('runtime:emit:join');
13
-
14
- /**
15
- * Emits a nested loop join instruction.
16
- * This is a simple nested loop implementation that can handle all join types.
17
- */
18
- export function emitLoopJoin(plan: JoinNode, ctx: EmissionContext): Instruction {
19
- // Create row descriptors for left and right inputs
20
- const leftAttributes = plan.left.getAttributes();
21
- const leftRowDescriptor = buildRowDescriptor(leftAttributes);
22
-
23
- const rightAttributes = plan.right.getAttributes();
24
- const rightRowDescriptor = buildRowDescriptor(rightAttributes);
25
-
26
- // NOTE: rightSource must be re-startable (optimizer facilitates through cache node)
27
- async function* run(rctx: RuntimeContext, leftSource: AsyncIterable<Row>, rightCallback: (ctx: RuntimeContext) => AsyncIterable<Row>, conditionCallback?: (ctx: RuntimeContext) => OutputValue): AsyncIterable<Row> {
28
- const joinType = plan.joinType;
29
-
30
- log('Starting %s join between %d left attrs and %d right attrs',
31
- joinType.toUpperCase(), leftAttributes.length, rightAttributes.length);
32
-
33
- // Create row slots for efficient context management
34
- const leftSlot = createRowSlot(rctx, leftRowDescriptor);
35
- const rightSlot = createRowSlot(rctx, rightRowDescriptor);
36
-
37
- try {
38
- // Process left side and join with right (pure streaming)
39
- for await (const leftRow of leftSource) {
40
- // Set up left context
41
- leftSlot.set(leftRow);
42
-
43
- let leftMatched = false;
44
-
45
- // Stream through right side for each left row
46
- for await (const rightRow of rightCallback(rctx)) {
47
- // Set up right context
48
- rightSlot.set(rightRow);
49
-
50
- // Evaluate join condition
51
- let conditionMet = true;
52
-
53
- if (conditionCallback) {
54
- // Evaluate the join condition using the callback provided by scheduler
55
- const conditionResult = await conditionCallback(rctx);
56
- conditionMet = !!conditionResult; // Convert to boolean
57
- } else if (plan.usingColumns) {
58
- // Handle USING condition: check equality of specified columns
59
- conditionMet = evaluateUsingCondition(leftRow, rightRow, plan.usingColumns, leftAttributes, rightAttributes);
60
- } else if (joinType === 'cross') {
61
- // Cross join - always true
62
- conditionMet = true;
63
- }
64
-
65
- if (conditionMet) {
66
- leftMatched = true;
67
- yield [...leftRow, ...rightRow] as Row;
68
- }
69
- }
70
-
71
- // Handle outer join semantics - null padding for unmatched left rows
72
- if (!leftMatched && (joinType === 'left' || joinType === 'full')) {
73
- // Create null-padded row for left outer join
74
- const nullPadding = new Array(rightAttributes.length).fill(null);
75
- const outputRow = [...leftRow, ...nullPadding] as Row;
76
- yield outputRow;
77
- }
78
- }
79
-
80
- // Handle right outer join semantics - we need to track which right rows were matched
81
- // For now, we'll handle this in a simpler way by iterating again for right/full outer joins
82
- if (joinType === 'right' || joinType === 'full') {
83
- // For right outer joins, we need to find unmatched right rows
84
- // This is more complex and less efficient - a real implementation would track matches
85
- // For now, we'll implement a simplified version
86
- log('Right/full outer join - checking for unmatched right rows');
87
-
88
- // We'd need to track which right rows were matched during the main loop
89
- // For now, we'll skip this implementation detail
90
- // TODO: Implement proper right outer join semantics
91
- }
92
- } finally {
93
- leftSlot.close();
94
- rightSlot.close();
95
- }
96
- }
97
-
98
- const leftInstruction = emitPlanNode(plan.left, ctx);
99
- const rightInstruction = emitCallFromPlan(plan.right, ctx);
100
-
101
- // Build the params array - include condition callback if present
102
- const params = [leftInstruction, rightInstruction];
103
- if (plan.condition) {
104
- const conditionInstruction = emitCallFromPlan(plan.condition, ctx);
105
- params.push(conditionInstruction);
106
- }
107
-
108
- return {
109
- params,
110
- run: run as InstructionRun,
111
- note: `${plan.joinType} join (nested loop)`
112
- };
113
- }
114
-
115
- /**
116
- * Evaluates USING condition by comparing specified columns from left and right rows
117
- */
118
- function evaluateUsingCondition(
119
- leftRow: Row,
120
- rightRow: Row,
121
- usingColumns: readonly string[],
122
- leftAttributes: readonly Attribute[],
123
- rightAttributes: readonly Attribute[]
124
- ): boolean {
125
- for (const columnName of usingColumns) {
126
- const leftColName = columnName.toLowerCase();
127
- const rightColName = columnName.toLowerCase();
128
-
129
- // Find column indices in left and right
130
- const leftIndex = leftAttributes.findIndex(attr => attr.name.toLowerCase() === leftColName);
131
- const rightIndex = rightAttributes.findIndex(attr => attr.name.toLowerCase() === rightColName);
132
-
133
- if (leftIndex === -1 || rightIndex === -1) {
134
- // Column not found - should not happen if planner is correct
135
- return false;
136
- }
137
-
138
- const leftValue = leftRow[leftIndex];
139
- const rightValue = rightRow[rightIndex];
140
-
141
- // Compare using SQL semantics
142
- if (compareSqlValues(leftValue, rightValue) !== 0) {
143
- return false;
144
- }
145
- }
146
-
147
- return true; // All USING columns match
148
- }
@@ -1,73 +0,0 @@
1
- import type { LimitOffsetNode } from '../../planner/nodes/limit-offset.js';
2
- import type { Instruction, RuntimeContext, InstructionRun } from '../types.js';
3
- import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
4
- import { type SqlValue, type Row, MaybePromise } from '../../common/types.js';
5
- import type { EmissionContext } from '../emission-context.js';
6
-
7
- export function emitLimitOffset(plan: LimitOffsetNode, ctx: EmissionContext): Instruction {
8
- async function* run(
9
- ctx: RuntimeContext,
10
- sourceRows: AsyncIterable<Row>,
11
- ...args: Array<(ctx: RuntimeContext) => MaybePromise<SqlValue>>
12
- ): AsyncIterable<Row> {
13
- // Determine which args we have
14
- let limitFn: ((ctx: RuntimeContext) => MaybePromise<SqlValue>) | undefined;
15
- let offsetFn: ((ctx: RuntimeContext) => MaybePromise<SqlValue>) | undefined;
16
-
17
- let argIndex = 0;
18
- if (plan.limit) {
19
- limitFn = args[argIndex++];
20
- }
21
- if (plan.offset) {
22
- offsetFn = args[argIndex++];
23
- }
24
-
25
- // Evaluate limit and offset
26
- const limitValue = limitFn ? await limitFn(ctx) : null;
27
- const offsetValue = offsetFn ? await offsetFn(ctx) : null;
28
-
29
- // Convert to numbers, with defaults
30
- let limit = limitValue !== null ? Number(limitValue) : Infinity;
31
- let offset = offsetValue !== null ? Number(offsetValue) : 0;
32
-
33
- // Validate values
34
- if (limit < 0 || !Number.isFinite(limit)) {
35
- limit = 0; // No rows if limit is negative or invalid
36
- }
37
- if (offset < 0 || !Number.isFinite(offset)) {
38
- offset = 0; // No offset if negative or invalid
39
- }
40
-
41
- // Skip offset rows
42
- let skipped = 0;
43
- let emitted = 0;
44
-
45
- for await (const row of sourceRows) {
46
- if (skipped < offset) {
47
- skipped++;
48
- continue;
49
- }
50
-
51
- if (emitted >= limit) {
52
- break;
53
- }
54
-
55
- yield row;
56
- emitted++;
57
- }
58
- }
59
-
60
- const sourceInstruction = emitPlanNode(plan.source, ctx);
61
- const limitInstruction = plan.limit ? emitCallFromPlan(plan.limit, ctx) : undefined;
62
- const offsetInstruction = plan.offset ? emitCallFromPlan(plan.offset, ctx) : undefined;
63
-
64
- const params: Instruction[] = [sourceInstruction];
65
- if (limitInstruction) params.push(limitInstruction);
66
- if (offsetInstruction) params.push(offsetInstruction);
67
-
68
- return {
69
- params,
70
- run: run as InstructionRun,
71
- note: `limit_offset(${plan.limit ? 'LIMIT' : ''}${plan.limit && plan.offset ? ',' : ''}${plan.offset ? 'OFFSET' : ''})`
72
- };
73
- }
@@ -1,17 +0,0 @@
1
- import type { MaybePromise, SqlValue } from "../../common/types.js";
2
- import type { Instruction, InstructionRun, RuntimeContext } from "../types.js";
3
- import type { LiteralNode } from "../../planner/nodes/scalar.js";
4
- import { safeJsonStringify } from "../../util/serialization.js";
5
- import type { EmissionContext } from "../emission-context.js";
6
-
7
- export function emitLiteral(plan: LiteralNode, _ctx: EmissionContext): Instruction {
8
- function run(_rctx: RuntimeContext): MaybePromise<SqlValue> {
9
- return plan.expression.value;
10
- }
11
-
12
- return {
13
- params: [],
14
- run: run as InstructionRun,
15
- note: `literal(${safeJsonStringify(plan.expression.value)})`
16
- };
17
- }