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