@quereus/quereus 0.17.0 → 0.18.0

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 (512) hide show
  1. package/README.md +372 -361
  2. package/dist/src/common/errors.d.ts +2 -18
  3. package/dist/src/common/errors.d.ts.map +1 -1
  4. package/dist/src/common/errors.js +6 -29
  5. package/dist/src/common/errors.js.map +1 -1
  6. package/dist/src/common/types.d.ts +8 -0
  7. package/dist/src/common/types.d.ts.map +1 -1
  8. package/dist/src/common/types.js +20 -0
  9. package/dist/src/common/types.js.map +1 -1
  10. package/dist/src/core/database-assertions.d.ts +19 -2
  11. package/dist/src/core/database-assertions.d.ts.map +1 -1
  12. package/dist/src/core/database-assertions.js +113 -32
  13. package/dist/src/core/database-assertions.js.map +1 -1
  14. package/dist/src/core/database-events.d.ts +17 -0
  15. package/dist/src/core/database-events.d.ts.map +1 -1
  16. package/dist/src/core/database-events.js +36 -0
  17. package/dist/src/core/database-events.js.map +1 -1
  18. package/dist/src/core/database.d.ts +11 -0
  19. package/dist/src/core/database.d.ts.map +1 -1
  20. package/dist/src/core/database.js +178 -85
  21. package/dist/src/core/database.js.map +1 -1
  22. package/dist/src/core/statement.d.ts +6 -0
  23. package/dist/src/core/statement.d.ts.map +1 -1
  24. package/dist/src/core/statement.js +42 -56
  25. package/dist/src/core/statement.js.map +1 -1
  26. package/dist/src/emit/ast-stringify.d.ts +1 -0
  27. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  28. package/dist/src/emit/ast-stringify.js +12 -2
  29. package/dist/src/emit/ast-stringify.js.map +1 -1
  30. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  31. package/dist/src/func/builtins/builtin-window-functions.js +75 -0
  32. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  33. package/dist/src/func/builtins/conversion.js +9 -12
  34. package/dist/src/func/builtins/conversion.js.map +1 -1
  35. package/dist/src/func/builtins/datetime.js +1 -1
  36. package/dist/src/func/builtins/datetime.js.map +1 -1
  37. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  38. package/dist/src/func/builtins/explain.js +15 -3
  39. package/dist/src/func/builtins/explain.js.map +1 -1
  40. package/dist/src/func/builtins/index.d.ts.map +1 -1
  41. package/dist/src/func/builtins/index.js +1 -11
  42. package/dist/src/func/builtins/index.js.map +1 -1
  43. package/dist/src/func/builtins/json-helpers.js +1 -1
  44. package/dist/src/func/builtins/json-helpers.js.map +1 -1
  45. package/dist/src/func/builtins/json.d.ts.map +1 -1
  46. package/dist/src/func/builtins/json.js +2 -5
  47. package/dist/src/func/builtins/json.js.map +1 -1
  48. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  49. package/dist/src/func/builtins/schema.js +30 -32
  50. package/dist/src/func/builtins/schema.js.map +1 -1
  51. package/dist/src/func/builtins/string.d.ts.map +1 -1
  52. package/dist/src/func/builtins/string.js +40 -64
  53. package/dist/src/func/builtins/string.js.map +1 -1
  54. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  55. package/dist/src/func/builtins/timespan.js.map +1 -1
  56. package/dist/src/index.d.ts +2 -2
  57. package/dist/src/index.d.ts.map +1 -1
  58. package/dist/src/index.js +2 -2
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/parser/ast.d.ts +9 -2
  61. package/dist/src/parser/ast.d.ts.map +1 -1
  62. package/dist/src/parser/lexer.d.ts +1 -0
  63. package/dist/src/parser/lexer.d.ts.map +1 -1
  64. package/dist/src/parser/lexer.js +3 -0
  65. package/dist/src/parser/lexer.js.map +1 -1
  66. package/dist/src/parser/parser.d.ts +11 -1
  67. package/dist/src/parser/parser.d.ts.map +1 -1
  68. package/dist/src/parser/parser.js +75 -135
  69. package/dist/src/parser/parser.js.map +1 -1
  70. package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -1
  71. package/dist/src/planner/analysis/const-evaluator.js +6 -3
  72. package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
  73. package/dist/src/planner/analysis/constraint-extractor.d.ts +2 -1
  74. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  75. package/dist/src/planner/analysis/constraint-extractor.js +154 -22
  76. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  77. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  78. package/dist/src/planner/building/alter-table.js +18 -1
  79. package/dist/src/planner/building/alter-table.js.map +1 -1
  80. package/dist/src/planner/building/analyze.d.ts +5 -0
  81. package/dist/src/planner/building/analyze.d.ts.map +1 -0
  82. package/dist/src/planner/building/analyze.js +5 -0
  83. package/dist/src/planner/building/analyze.js.map +1 -0
  84. package/dist/src/planner/building/block.d.ts.map +1 -1
  85. package/dist/src/planner/building/block.js +3 -0
  86. package/dist/src/planner/building/block.js.map +1 -1
  87. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  88. package/dist/src/planner/building/constraint-builder.js +25 -3
  89. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  90. package/dist/src/planner/building/delete.d.ts.map +1 -1
  91. package/dist/src/planner/building/delete.js +11 -0
  92. package/dist/src/planner/building/delete.js.map +1 -1
  93. package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
  94. package/dist/src/planner/building/drop-assertion.js +2 -1
  95. package/dist/src/planner/building/drop-assertion.js.map +1 -1
  96. package/dist/src/planner/building/expression.d.ts.map +1 -1
  97. package/dist/src/planner/building/expression.js +55 -7
  98. package/dist/src/planner/building/expression.js.map +1 -1
  99. package/dist/src/planner/building/foreign-key-builder.d.ts +16 -0
  100. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -0
  101. package/dist/src/planner/building/foreign-key-builder.js +269 -0
  102. package/dist/src/planner/building/foreign-key-builder.js.map +1 -0
  103. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  104. package/dist/src/planner/building/function-call.js +3 -2
  105. package/dist/src/planner/building/function-call.js.map +1 -1
  106. package/dist/src/planner/building/insert.d.ts.map +1 -1
  107. package/dist/src/planner/building/insert.js +91 -10
  108. package/dist/src/planner/building/insert.js.map +1 -1
  109. package/dist/src/planner/building/schema-resolution.d.ts +4 -0
  110. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  111. package/dist/src/planner/building/schema-resolution.js +14 -3
  112. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  113. package/dist/src/planner/building/select-aggregates.d.ts +1 -0
  114. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  115. package/dist/src/planner/building/select-aggregates.js +118 -3
  116. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  117. package/dist/src/planner/building/select-modifiers.js +3 -3
  118. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  119. package/dist/src/planner/building/select-window.js +9 -8
  120. package/dist/src/planner/building/select-window.js.map +1 -1
  121. package/dist/src/planner/building/select.d.ts.map +1 -1
  122. package/dist/src/planner/building/select.js +21 -10
  123. package/dist/src/planner/building/select.js.map +1 -1
  124. package/dist/src/planner/building/table.d.ts.map +1 -1
  125. package/dist/src/planner/building/table.js +5 -3
  126. package/dist/src/planner/building/table.js.map +1 -1
  127. package/dist/src/planner/building/update.d.ts.map +1 -1
  128. package/dist/src/planner/building/update.js +30 -1
  129. package/dist/src/planner/building/update.js.map +1 -1
  130. package/dist/src/planner/building/with.js +1 -1
  131. package/dist/src/planner/building/with.js.map +1 -1
  132. package/dist/src/planner/cache/reference-graph.d.ts +1 -1
  133. package/dist/src/planner/cache/reference-graph.js +1 -1
  134. package/dist/src/planner/cost/index.d.ts +10 -3
  135. package/dist/src/planner/cost/index.d.ts.map +1 -1
  136. package/dist/src/planner/cost/index.js +17 -3
  137. package/dist/src/planner/cost/index.js.map +1 -1
  138. package/dist/src/planner/debug.js +1 -1
  139. package/dist/src/planner/debug.js.map +1 -1
  140. package/dist/src/planner/framework/characteristics.d.ts +1 -1
  141. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  142. package/dist/src/planner/framework/pass.d.ts +3 -1
  143. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  144. package/dist/src/planner/framework/pass.js +62 -18
  145. package/dist/src/planner/framework/pass.js.map +1 -1
  146. package/dist/src/planner/framework/physical-utils.d.ts +5 -0
  147. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  148. package/dist/src/planner/framework/physical-utils.js +19 -0
  149. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  150. package/dist/src/planner/framework/trace.d.ts.map +1 -1
  151. package/dist/src/planner/framework/trace.js +3 -2
  152. package/dist/src/planner/framework/trace.js.map +1 -1
  153. package/dist/src/planner/nodes/alias-node.d.ts +2 -1
  154. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  155. package/dist/src/planner/nodes/alias-node.js +8 -0
  156. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  157. package/dist/src/planner/nodes/alter-table-node.d.ts +42 -0
  158. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -0
  159. package/dist/src/planner/nodes/alter-table-node.js +55 -0
  160. package/dist/src/planner/nodes/alter-table-node.js.map +1 -0
  161. package/dist/src/planner/nodes/analyze-node.d.ts +25 -0
  162. package/dist/src/planner/nodes/analyze-node.d.ts.map +1 -0
  163. package/dist/src/planner/nodes/analyze-node.js +83 -0
  164. package/dist/src/planner/nodes/analyze-node.js.map +1 -0
  165. package/dist/src/planner/nodes/bloom-join-node.d.ts +66 -0
  166. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -0
  167. package/dist/src/planner/nodes/bloom-join-node.js +200 -0
  168. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -0
  169. package/dist/src/planner/nodes/constraint-check-node.d.ts +1 -1
  170. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  171. package/dist/src/planner/nodes/cte-reference-node.js +7 -7
  172. package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
  173. package/dist/src/planner/nodes/join-node.d.ts +9 -1
  174. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  175. package/dist/src/planner/nodes/join-node.js +69 -79
  176. package/dist/src/planner/nodes/join-node.js.map +1 -1
  177. package/dist/src/planner/nodes/merge-join-node.d.ts +60 -0
  178. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -0
  179. package/dist/src/planner/nodes/merge-join-node.js +207 -0
  180. package/dist/src/planner/nodes/merge-join-node.js.map +1 -0
  181. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  182. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  183. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  184. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  185. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  186. package/dist/src/planner/nodes/project-node.js +3 -2
  187. package/dist/src/planner/nodes/project-node.js.map +1 -1
  188. package/dist/src/planner/nodes/reference.d.ts +2 -1
  189. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  190. package/dist/src/planner/nodes/reference.js +6 -2
  191. package/dist/src/planner/nodes/reference.js.map +1 -1
  192. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  193. package/dist/src/planner/nodes/returning-node.js +3 -2
  194. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  195. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/subquery.js.map +1 -1
  197. package/dist/src/planner/nodes/table-access-nodes.js +1 -1
  198. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  199. package/dist/src/planner/nodes/update-node.d.ts +2 -0
  200. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  201. package/dist/src/planner/nodes/update-node.js +2 -1
  202. package/dist/src/planner/nodes/update-node.js.map +1 -1
  203. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  204. package/dist/src/planner/nodes/window-function.js +7 -7
  205. package/dist/src/planner/nodes/window-function.js.map +1 -1
  206. package/dist/src/planner/nodes/window-node.d.ts +2 -2
  207. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  208. package/dist/src/planner/nodes/window-node.js +9 -14
  209. package/dist/src/planner/nodes/window-node.js.map +1 -1
  210. package/dist/src/planner/optimizer.d.ts.map +1 -1
  211. package/dist/src/planner/optimizer.js +40 -2
  212. package/dist/src/planner/optimizer.js.map +1 -1
  213. package/dist/src/planner/planning-context.d.ts.map +1 -1
  214. package/dist/src/planner/planning-context.js +1 -6
  215. package/dist/src/planner/planning-context.js.map +1 -1
  216. package/dist/src/planner/resolve.d.ts.map +1 -1
  217. package/dist/src/planner/resolve.js.map +1 -1
  218. package/dist/src/planner/rules/access/rule-select-access-path.js +157 -28
  219. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  220. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
  221. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +27 -6
  222. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
  223. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +19 -0
  224. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +1 -0
  225. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +53 -0
  226. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +1 -0
  227. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
  228. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +5 -0
  229. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
  230. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +18 -0
  231. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -0
  232. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +37 -0
  233. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -0
  234. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +8 -3
  235. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
  236. package/dist/src/planner/rules/join/rule-join-key-inference.js +28 -17
  237. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
  238. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +16 -0
  239. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -0
  240. package/dist/src/planner/rules/join/rule-join-physical-selection.js +216 -0
  241. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -0
  242. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  243. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +34 -4
  244. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  245. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +23 -0
  246. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -0
  247. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +293 -0
  248. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -0
  249. package/dist/src/planner/scopes/multi.d.ts +3 -2
  250. package/dist/src/planner/scopes/multi.d.ts.map +1 -1
  251. package/dist/src/planner/scopes/multi.js +32 -7
  252. package/dist/src/planner/scopes/multi.js.map +1 -1
  253. package/dist/src/planner/scopes/shadow.d.ts +20 -0
  254. package/dist/src/planner/scopes/shadow.d.ts.map +1 -0
  255. package/dist/src/planner/scopes/shadow.js +31 -0
  256. package/dist/src/planner/scopes/shadow.js.map +1 -0
  257. package/dist/src/planner/stats/analyze.d.ts +17 -0
  258. package/dist/src/planner/stats/analyze.d.ts.map +1 -0
  259. package/dist/src/planner/stats/analyze.js +114 -0
  260. package/dist/src/planner/stats/analyze.js.map +1 -0
  261. package/dist/src/planner/stats/catalog-stats.d.ts +80 -0
  262. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -0
  263. package/dist/src/planner/stats/catalog-stats.js +248 -0
  264. package/dist/src/planner/stats/catalog-stats.js.map +1 -0
  265. package/dist/src/planner/stats/histogram.d.ts +24 -0
  266. package/dist/src/planner/stats/histogram.d.ts.map +1 -0
  267. package/dist/src/planner/stats/histogram.js +142 -0
  268. package/dist/src/planner/stats/histogram.js.map +1 -0
  269. package/dist/src/planner/type-utils.d.ts.map +1 -1
  270. package/dist/src/planner/type-utils.js +8 -2
  271. package/dist/src/planner/type-utils.js.map +1 -1
  272. package/dist/src/planner/util/key-utils.d.ts +48 -2
  273. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  274. package/dist/src/planner/util/key-utils.js +123 -0
  275. package/dist/src/planner/util/key-utils.js.map +1 -1
  276. package/dist/src/planner/validation/determinism-validator.d.ts +9 -0
  277. package/dist/src/planner/validation/determinism-validator.d.ts.map +1 -1
  278. package/dist/src/planner/validation/determinism-validator.js +11 -0
  279. package/dist/src/planner/validation/determinism-validator.js.map +1 -1
  280. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  281. package/dist/src/planner/validation/plan-validator.js +1 -0
  282. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  283. package/dist/src/runtime/context-helpers.d.ts +34 -10
  284. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  285. package/dist/src/runtime/context-helpers.js +115 -39
  286. package/dist/src/runtime/context-helpers.js.map +1 -1
  287. package/dist/src/runtime/deferred-constraint-queue.d.ts +0 -1
  288. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  289. package/dist/src/runtime/deferred-constraint-queue.js +10 -23
  290. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  291. package/dist/src/runtime/descriptor-helpers.d.ts +7 -0
  292. package/dist/src/runtime/descriptor-helpers.d.ts.map +1 -0
  293. package/dist/src/runtime/descriptor-helpers.js +24 -0
  294. package/dist/src/runtime/descriptor-helpers.js.map +1 -0
  295. package/dist/src/runtime/emission-context.d.ts +7 -1
  296. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  297. package/dist/src/runtime/emission-context.js +16 -0
  298. package/dist/src/runtime/emission-context.js.map +1 -1
  299. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  300. package/dist/src/runtime/emit/aggregate.js +97 -93
  301. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  302. package/dist/src/runtime/emit/alter-table.d.ts +5 -0
  303. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -0
  304. package/dist/src/runtime/emit/alter-table.js +209 -0
  305. package/dist/src/runtime/emit/alter-table.js.map +1 -0
  306. package/dist/src/runtime/emit/analyze.d.ts +9 -0
  307. package/dist/src/runtime/emit/analyze.d.ts.map +1 -0
  308. package/dist/src/runtime/emit/analyze.js +72 -0
  309. package/dist/src/runtime/emit/analyze.js.map +1 -0
  310. package/dist/src/runtime/emit/array-index.d.ts.map +1 -1
  311. package/dist/src/runtime/emit/array-index.js +4 -2
  312. package/dist/src/runtime/emit/array-index.js.map +1 -1
  313. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  314. package/dist/src/runtime/emit/between.js +8 -20
  315. package/dist/src/runtime/emit/between.js.map +1 -1
  316. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  317. package/dist/src/runtime/emit/binary.js +155 -126
  318. package/dist/src/runtime/emit/binary.js.map +1 -1
  319. package/dist/src/runtime/emit/bloom-join.d.ts +12 -0
  320. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -0
  321. package/dist/src/runtime/emit/bloom-join.js +114 -0
  322. package/dist/src/runtime/emit/bloom-join.js.map +1 -0
  323. package/dist/src/runtime/emit/cache.js +2 -2
  324. package/dist/src/runtime/emit/cache.js.map +1 -1
  325. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  326. package/dist/src/runtime/emit/cast.js +31 -117
  327. package/dist/src/runtime/emit/cast.js.map +1 -1
  328. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  329. package/dist/src/runtime/emit/constraint-check.js +2 -24
  330. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  331. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  332. package/dist/src/runtime/emit/cte-reference.js +11 -5
  333. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  334. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  335. package/dist/src/runtime/emit/distinct.js +21 -12
  336. package/dist/src/runtime/emit/distinct.js.map +1 -1
  337. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  338. package/dist/src/runtime/emit/dml-executor.js +5 -1
  339. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  340. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  341. package/dist/src/runtime/emit/drop-assertion.js +2 -0
  342. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  343. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  344. package/dist/src/runtime/emit/filter.js +26 -7
  345. package/dist/src/runtime/emit/filter.js.map +1 -1
  346. package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts.map +1 -1
  347. package/dist/src/runtime/emit/internal-recursive-cte-ref.js +11 -5
  348. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +1 -1
  349. package/dist/src/runtime/emit/join.d.ts +1 -1
  350. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  351. package/dist/src/runtime/emit/join.js +44 -33
  352. package/dist/src/runtime/emit/join.js.map +1 -1
  353. package/dist/src/runtime/emit/merge-join.d.ts +14 -0
  354. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -0
  355. package/dist/src/runtime/emit/merge-join.js +152 -0
  356. package/dist/src/runtime/emit/merge-join.js.map +1 -0
  357. package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
  358. package/dist/src/runtime/emit/parameter.js +10 -32
  359. package/dist/src/runtime/emit/parameter.js.map +1 -1
  360. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  361. package/dist/src/runtime/emit/project.js +22 -12
  362. package/dist/src/runtime/emit/project.js.map +1 -1
  363. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  364. package/dist/src/runtime/emit/recursive-cte.js +5 -9
  365. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  366. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  367. package/dist/src/runtime/emit/returning.js +14 -8
  368. package/dist/src/runtime/emit/returning.js.map +1 -1
  369. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  370. package/dist/src/runtime/emit/scan.js +4 -1
  371. package/dist/src/runtime/emit/scan.js.map +1 -1
  372. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  373. package/dist/src/runtime/emit/set-operation.js +8 -5
  374. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  375. package/dist/src/runtime/emit/sort.js +2 -2
  376. package/dist/src/runtime/emit/sort.js.map +1 -1
  377. package/dist/src/runtime/emit/subquery.js +2 -2
  378. package/dist/src/runtime/emit/subquery.js.map +1 -1
  379. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  380. package/dist/src/runtime/emit/table-valued-function.js +21 -7
  381. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  382. package/dist/src/runtime/emit/unary.js +2 -2
  383. package/dist/src/runtime/emit/unary.js.map +1 -1
  384. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  385. package/dist/src/runtime/emit/update.js +43 -21
  386. package/dist/src/runtime/emit/update.js.map +1 -1
  387. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  388. package/dist/src/runtime/emit/window.js +368 -126
  389. package/dist/src/runtime/emit/window.js.map +1 -1
  390. package/dist/src/runtime/foreign-key-actions.d.ts +15 -0
  391. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -0
  392. package/dist/src/runtime/foreign-key-actions.js +109 -0
  393. package/dist/src/runtime/foreign-key-actions.js.map +1 -0
  394. package/dist/src/runtime/register.d.ts.map +1 -1
  395. package/dist/src/runtime/register.js +8 -0
  396. package/dist/src/runtime/register.js.map +1 -1
  397. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  398. package/dist/src/runtime/scheduler.js +4 -1
  399. package/dist/src/runtime/scheduler.js.map +1 -1
  400. package/dist/src/runtime/types.d.ts +6 -5
  401. package/dist/src/runtime/types.d.ts.map +1 -1
  402. package/dist/src/runtime/types.js.map +1 -1
  403. package/dist/src/schema/change-events.d.ts +36 -8
  404. package/dist/src/schema/change-events.d.ts.map +1 -1
  405. package/dist/src/schema/change-events.js.map +1 -1
  406. package/dist/src/schema/column.d.ts +5 -1
  407. package/dist/src/schema/column.d.ts.map +1 -1
  408. package/dist/src/schema/column.js +1 -2
  409. package/dist/src/schema/column.js.map +1 -1
  410. package/dist/src/schema/manager.d.ts +54 -4
  411. package/dist/src/schema/manager.d.ts.map +1 -1
  412. package/dist/src/schema/manager.js +353 -313
  413. package/dist/src/schema/manager.js.map +1 -1
  414. package/dist/src/schema/schema-differ.js +3 -3
  415. package/dist/src/schema/schema-differ.js.map +1 -1
  416. package/dist/src/schema/schema.d.ts +1 -1
  417. package/dist/src/schema/schema.js +2 -2
  418. package/dist/src/schema/schema.js.map +1 -1
  419. package/dist/src/schema/table.d.ts +49 -0
  420. package/dist/src/schema/table.d.ts.map +1 -1
  421. package/dist/src/schema/table.js +30 -11
  422. package/dist/src/schema/table.js.map +1 -1
  423. package/dist/src/types/builtin-types.d.ts.map +1 -1
  424. package/dist/src/types/builtin-types.js +26 -95
  425. package/dist/src/types/builtin-types.js.map +1 -1
  426. package/dist/src/types/index.d.ts +1 -1
  427. package/dist/src/types/index.d.ts.map +1 -1
  428. package/dist/src/types/index.js +1 -1
  429. package/dist/src/types/index.js.map +1 -1
  430. package/dist/src/types/json-type.d.ts.map +1 -1
  431. package/dist/src/types/json-type.js +28 -40
  432. package/dist/src/types/json-type.js.map +1 -1
  433. package/dist/src/types/logical-type.d.ts +6 -0
  434. package/dist/src/types/logical-type.d.ts.map +1 -1
  435. package/dist/src/types/logical-type.js +12 -0
  436. package/dist/src/types/logical-type.js.map +1 -1
  437. package/dist/src/types/temporal-types.d.ts.map +1 -1
  438. package/dist/src/types/temporal-types.js +8 -37
  439. package/dist/src/types/temporal-types.js.map +1 -1
  440. package/dist/src/util/coercion.d.ts +4 -5
  441. package/dist/src/util/coercion.d.ts.map +1 -1
  442. package/dist/src/util/coercion.js +10 -14
  443. package/dist/src/util/coercion.js.map +1 -1
  444. package/dist/src/util/comparison.d.ts +34 -21
  445. package/dist/src/util/comparison.d.ts.map +1 -1
  446. package/dist/src/util/comparison.js +77 -43
  447. package/dist/src/util/comparison.js.map +1 -1
  448. package/dist/src/util/environment.d.ts +0 -8
  449. package/dist/src/util/environment.d.ts.map +1 -1
  450. package/dist/src/util/environment.js +0 -12
  451. package/dist/src/util/environment.js.map +1 -1
  452. package/dist/src/util/key-serializer.d.ts +33 -0
  453. package/dist/src/util/key-serializer.d.ts.map +1 -0
  454. package/dist/src/util/key-serializer.js +95 -0
  455. package/dist/src/util/key-serializer.js.map +1 -0
  456. package/dist/src/util/plugin-helper.d.ts.map +1 -1
  457. package/dist/src/util/plugin-helper.js +21 -45
  458. package/dist/src/util/plugin-helper.js.map +1 -1
  459. package/dist/src/util/serialization.d.ts +1 -0
  460. package/dist/src/util/serialization.d.ts.map +1 -1
  461. package/dist/src/util/serialization.js +8 -1
  462. package/dist/src/util/serialization.js.map +1 -1
  463. package/dist/src/util/working-table-iterable.d.ts +6 -5
  464. package/dist/src/util/working-table-iterable.d.ts.map +1 -1
  465. package/dist/src/util/working-table-iterable.js +8 -15
  466. package/dist/src/util/working-table-iterable.js.map +1 -1
  467. package/dist/src/vtab/best-access-plan.d.ts +12 -0
  468. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  469. package/dist/src/vtab/best-access-plan.js +22 -0
  470. package/dist/src/vtab/best-access-plan.js.map +1 -1
  471. package/dist/src/vtab/manifest.d.ts +3 -1
  472. package/dist/src/vtab/manifest.d.ts.map +1 -1
  473. package/dist/src/vtab/memory/index.d.ts +2 -2
  474. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  475. package/dist/src/vtab/memory/index.js +4 -7
  476. package/dist/src/vtab/memory/index.js.map +1 -1
  477. package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -1
  478. package/dist/src/vtab/memory/layer/base-cursor.js +37 -9
  479. package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -1
  480. package/dist/src/vtab/memory/layer/base.js +1 -1
  481. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  482. package/dist/src/vtab/memory/layer/manager.d.ts +15 -3
  483. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  484. package/dist/src/vtab/memory/layer/manager.js +85 -37
  485. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  486. package/dist/src/vtab/memory/layer/scan-plan.d.ts +2 -0
  487. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  488. package/dist/src/vtab/memory/layer/scan-plan.js +153 -78
  489. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  490. package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -1
  491. package/dist/src/vtab/memory/layer/transaction-cursor.js +39 -9
  492. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -1
  493. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  494. package/dist/src/vtab/memory/layer/transaction.js +1 -5
  495. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  496. package/dist/src/vtab/memory/module.d.ts +14 -24
  497. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  498. package/dist/src/vtab/memory/module.js +88 -283
  499. package/dist/src/vtab/memory/module.js.map +1 -1
  500. package/dist/src/vtab/memory/table.d.ts +9 -0
  501. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  502. package/dist/src/vtab/memory/table.js +121 -18
  503. package/dist/src/vtab/memory/table.js.map +1 -1
  504. package/dist/src/vtab/memory/types.d.ts +1 -0
  505. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  506. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  507. package/dist/src/vtab/module.d.ts +13 -0
  508. package/dist/src/vtab/module.d.ts.map +1 -1
  509. package/dist/src/vtab/table.d.ts +9 -0
  510. package/dist/src/vtab/table.d.ts.map +1 -1
  511. package/dist/src/vtab/table.js.map +1 -1
  512. package/package.json +2 -2
@@ -1,7 +1,6 @@
1
1
  import { QuereusError } from '../../common/errors.js';
2
2
  import { StatusCode } from '../../common/types.js';
3
3
  import { MemoryTable } from './table.js';
4
- import { IndexConstraintOp } from '../../common/constants.js';
5
4
  import { MemoryTableManager } from './layer/manager.js';
6
5
  import { createMemoryTableLoggers } from './utils/logging.js';
7
6
  import { AccessPlanBuilder, validateAccessPlan } from '../best-access-plan.js';
@@ -67,7 +66,7 @@ export class MemoryTableModule {
67
66
  /**
68
67
  * Connects to an existing memory table definition
69
68
  */
70
- async connect(db, pAux, moduleName, schemaName, tableName, _options, _tableSchema) {
69
+ async connect(db, pAux, moduleName, schemaName, tableName, options, _tableSchema) {
71
70
  const tableKey = `${schemaName}.${tableName}`.toLowerCase();
72
71
  const existingManager = this.tables.get(tableKey);
73
72
  if (!existingManager) {
@@ -75,15 +74,17 @@ export class MemoryTableModule {
75
74
  }
76
75
  logger.operation('Connect Table', tableName, { schema: schemaName });
77
76
  // Create a new MemoryTable instance connected to the existing manager
78
- return new MemoryTable(db, this, existingManager);
77
+ return new MemoryTable(db, this, existingManager, options._readCommitted);
79
78
  }
80
79
  /**
81
80
  * Modern, type-safe access planning interface
82
81
  */
83
82
  getBestAccessPlan(db, tableInfo, request) {
84
83
  logger.debugLog(`[getBestAccessPlan] Planning access for ${tableInfo.name} with ${request.filters.length} filters`);
85
- // Get table size estimate for cost calculations
86
- const estimatedTableSize = request.estimatedRows ?? 1000;
84
+ // Get table size estimate for cost calculations.
85
+ // The schema defaults estimatedRows to 0 at creation time, so treat 0 as
86
+ // "unknown" and fall back to a reasonable default to avoid degenerate costs.
87
+ const estimatedTableSize = request.estimatedRows || 1000;
87
88
  // Find the best access strategy
88
89
  const bestPlan = this.findBestAccessPlan(tableInfo, request, estimatedTableSize);
89
90
  // Validate the plan before returning
@@ -91,22 +92,17 @@ export class MemoryTableModule {
91
92
  logger.debugLog(`[getBestAccessPlan] Selected plan: ${bestPlan.explains} (cost: ${bestPlan.cost}, rows: ${bestPlan.rows})`);
92
93
  return bestPlan;
93
94
  }
94
- /**
95
- * Build column metadata for access planning
96
- */
97
- buildColumnMetadata(tableInfo) {
98
- return tableInfo.columns.map((col, index) => ({
99
- index,
100
- name: col.name,
101
- type: col.logicalType,
102
- isPrimaryKey: tableInfo.primaryKeyDefinition.some(pk => pk.index === index),
103
- isUnique: col.primaryKey // Primary key columns are unique, others would be determined by constraints/indexes
104
- }));
105
- }
106
95
  /**
107
96
  * Find the best access plan for the given request
108
97
  */
109
98
  findBestAccessPlan(tableInfo, request, estimatedTableSize) {
99
+ // NOTE: IS NULL / IS NOT NULL optimization is not yet wired up.
100
+ // The constraint extractor produces these as unary expressions which
101
+ // are not currently extracted as PredicateConstraints. When that support
102
+ // is added, a handleNullConstraints pre-pass should be re-introduced
103
+ // here — but it must also produce a proper empty-result physical node
104
+ // (not just rows=0 on a plan lacking indexName/seekColumnIndexes, which
105
+ // would fall through to SeqScan and return all rows).
110
106
  const availableIndexes = this.gatherAvailableIndexes(tableInfo);
111
107
  let bestPlan;
112
108
  // Try to find an index-based plan
@@ -144,24 +140,36 @@ export class MemoryTableModule {
144
140
  .setHandledFilters(new Array(request.filters.length).fill(false))
145
141
  .build();
146
142
  }
147
- // Check for equality constraints on index columns
143
+ // Check for equality constraints on index columns (prefix matching)
148
144
  const equalityMatches = this.findEqualityMatches(indexCols, request.filters);
149
145
  if (equalityMatches.matchCount === indexCols.length) {
150
- // Perfect equality match - index seek
146
+ // Perfect equality match on all index columns - index seek (or multi-seek for IN)
147
+ const seekCols = indexCols.slice(0, equalityMatches.matchCount).map(c => c.index);
148
+ const { inCardinality } = equalityMatches;
149
+ const isMultiSeek = inCardinality > 1;
151
150
  return AccessPlanBuilder
152
- .eqMatch(1) // Assuming unique index access
151
+ .eqMatch(inCardinality)
153
152
  .setHandledFilters(equalityMatches.handledFilters)
154
- .setIsSet(true)
155
- .setExplanation(`Index seek on ${index.name}`)
153
+ .setIsSet(!isMultiSeek)
154
+ .setIndexName(index.name)
155
+ .setSeekColumns(seekCols)
156
+ .setExplanation(`Index ${isMultiSeek ? `multi-seek(${inCardinality})` : 'seek'} on ${index.name}`)
156
157
  .build();
157
158
  }
159
+ // NOTE: Prefix-equality + trailing-range on composite indexes is not yet
160
+ // supported at the physical scan level (partial prefix seek on composite
161
+ // B-tree keys requires composite range bounds). Fall through to
162
+ // range-on-first-column check, which the runtime can execute correctly.
158
163
  // Check for range constraints on first index column
159
164
  const rangeMatch = this.findRangeMatch(indexCols[0], request.filters);
160
165
  if (rangeMatch.hasRange) {
161
166
  const estimatedRangeRows = Math.max(1, Math.floor(estimatedTableSize / 4));
167
+ const seekCols = [indexCols[0].index];
162
168
  return AccessPlanBuilder
163
169
  .rangeScan(estimatedRangeRows)
164
170
  .setHandledFilters(rangeMatch.handledFilters)
171
+ .setIndexName(index.name)
172
+ .setSeekColumns(seekCols)
165
173
  .setExplanation(`Index range scan on ${index.name}`)
166
174
  .build();
167
175
  }
@@ -172,30 +180,42 @@ export class MemoryTableModule {
172
180
  .build();
173
181
  }
174
182
  /**
175
- * Find equality matches for index columns
183
+ * Find equality matches for index columns (prefix matching).
184
+ * Handles `=`, single-value `IN`, and multi-value `IN` as equality constraints.
185
+ * Returns the total cardinality (product of IN list sizes) for cost estimation.
176
186
  */
177
187
  findEqualityMatches(indexCols, filters) {
178
188
  const handledFilters = new Array(filters.length).fill(false);
179
189
  let matchCount = 0;
190
+ let inCardinality = 1;
180
191
  for (const indexCol of indexCols) {
181
192
  let foundMatch = false;
182
193
  for (let i = 0; i < filters.length; i++) {
183
194
  const filter = filters[i];
184
- if (filter.columnIndex === indexCol.index &&
185
- filter.op === '=' &&
186
- filter.usable &&
187
- filter.value !== undefined) {
195
+ if (filter.columnIndex !== indexCol.index || !filter.usable)
196
+ continue;
197
+ // Direct equality (value may be undefined for parameter bindings —
198
+ // the actual value is supplied at runtime via seek key expressions)
199
+ if (filter.op === '=') {
188
200
  handledFilters[i] = true;
189
201
  foundMatch = true;
190
202
  matchCount++;
191
203
  break;
192
204
  }
205
+ // IN constraint — treat as equality for prefix matching
206
+ if (filter.op === 'IN' && Array.isArray(filter.value) && filter.value.length > 0) {
207
+ handledFilters[i] = true;
208
+ foundMatch = true;
209
+ matchCount++;
210
+ inCardinality *= filter.value.length;
211
+ break;
212
+ }
193
213
  }
194
214
  if (!foundMatch) {
195
215
  break; // Can't use remaining index columns
196
216
  }
197
217
  }
198
- return { matchCount, handledFilters };
218
+ return { matchCount, handledFilters, inCardinality };
199
219
  }
200
220
  /**
201
221
  * Find range match for a column
@@ -206,7 +226,7 @@ export class MemoryTableModule {
206
226
  let hasUpper = false;
207
227
  for (let i = 0; i < filters.length; i++) {
208
228
  const filter = filters[i];
209
- if (filter.columnIndex === indexCol.index && filter.usable && filter.value !== undefined) {
229
+ if (filter.columnIndex === indexCol.index && filter.usable) {
210
230
  if (filter.op === '>' || filter.op === '>=') {
211
231
  handledFilters[i] = true;
212
232
  hasLower = true;
@@ -257,22 +277,6 @@ export class MemoryTableModule {
257
277
  }
258
278
  return true;
259
279
  }
260
- createPlanningContext(_tableInfo, _indexInfo) {
261
- return {
262
- // Plan type constants
263
- PLAN_TYPE_FULL_ASC: 0,
264
- PLAN_TYPE_FULL_DESC: 1,
265
- PLAN_TYPE_EQ: 2,
266
- PLAN_TYPE_RANGE_ASC: 3,
267
- PLAN_TYPE_RANGE_DESC: 4,
268
- // Utility functions
269
- encodeIdxNum: (indexId, planType) => {
270
- return (indexId << 3) | planType;
271
- },
272
- // Table size estimate for costing
273
- tableSize: 1000,
274
- };
275
- }
276
280
  gatherAvailableIndexes(tableInfo) {
277
281
  const availableIndexes = [];
278
282
  // Add pseudo-index for primary key
@@ -285,244 +289,6 @@ export class MemoryTableModule {
285
289
  availableIndexes.push(...(tableInfo.indexes ?? []));
286
290
  return availableIndexes;
287
291
  }
288
- findBestPlan(context, availableIndexes, indexInfo) {
289
- let bestPlan = this.createInitialPlan(context);
290
- for (const [indexId, index] of availableIndexes.entries()) {
291
- const indexPlan = this.evaluateIndexPlan(context, index, indexId, indexInfo);
292
- if (indexPlan.cost < bestPlan.cost) {
293
- bestPlan = indexPlan;
294
- }
295
- }
296
- return this.ensureFallbackPlan(bestPlan, context, availableIndexes);
297
- }
298
- createInitialPlan(context) {
299
- return {
300
- indexId: -1,
301
- planType: context.PLAN_TYPE_FULL_ASC,
302
- cost: context.tableSize * 10.0,
303
- rows: BigInt(context.tableSize),
304
- usedConstraintIndices: new Set(),
305
- orderByConsumed: false,
306
- isDesc: false,
307
- };
308
- }
309
- evaluateIndexPlan(context, index, indexId, indexInfo) {
310
- let currentPlan = this.createInitialPlan(context);
311
- currentPlan.indexId = indexId;
312
- // Evaluate equality plan
313
- const equalityPlan = this.evaluateEqualityPlan(context, index, indexId, indexInfo);
314
- if (equalityPlan && equalityPlan.cost < currentPlan.cost) {
315
- currentPlan = equalityPlan;
316
- }
317
- // Evaluate range plan
318
- const rangePlan = this.evaluateRangePlan(context, index, indexId, indexInfo, currentPlan);
319
- if (rangePlan && rangePlan.cost < currentPlan.cost) {
320
- currentPlan = rangePlan;
321
- }
322
- // Check ORDER BY consumption
323
- const orderOptimizedPlan = this.evaluateOrderByConsumption(context, index, indexInfo, currentPlan);
324
- if (orderOptimizedPlan) {
325
- currentPlan = orderOptimizedPlan;
326
- }
327
- return currentPlan;
328
- }
329
- evaluateEqualityPlan(context, index, indexId, indexInfo) {
330
- const indexCols = index.columns;
331
- const eqConstraints = this.findEqualityConstraints(indexCols, indexInfo);
332
- if (!this.canUseEqualityPlan(indexCols, eqConstraints)) {
333
- logger.debugLog(`[xBestIndex] Cannot use EQ plan for index ${index.name} - missing constraints`);
334
- return null;
335
- }
336
- const planEqCost = Math.log2(context.tableSize + 1) + 1.0;
337
- const planEqRows = BigInt(1);
338
- logger.debugLog(`[xBestIndex] EQ Plan viable for index ${index.name}. Cost: ${planEqCost}`);
339
- return {
340
- indexId: indexId,
341
- planType: context.PLAN_TYPE_EQ,
342
- cost: planEqCost,
343
- rows: planEqRows,
344
- usedConstraintIndices: new Set(eqConstraints.values()),
345
- orderByConsumed: true,
346
- isDesc: false
347
- };
348
- }
349
- findEqualityConstraints(indexCols, indexInfo) {
350
- const eqConstraints = new Map();
351
- for (const [k, indexCol] of indexCols.entries()) {
352
- const colIndex = indexCol.index;
353
- let foundConstraint = false;
354
- for (let i = 0; i < indexInfo.nConstraint; i++) {
355
- const constraint = indexInfo.aConstraint[i];
356
- if (constraint.iColumn === colIndex &&
357
- constraint.op === IndexConstraintOp.EQ &&
358
- constraint.usable) {
359
- eqConstraints.set(colIndex, i);
360
- foundConstraint = true;
361
- logger.debugLog(`[xBestIndex] Found EQ constraint ${i} for column ${colIndex}`);
362
- break;
363
- }
364
- }
365
- if (!foundConstraint) {
366
- logger.debugLog(`[xBestIndex] No EQ constraint for index column ${k} (schema idx ${colIndex})`);
367
- return new Map(); // Can't use equality plan without all columns
368
- }
369
- }
370
- return eqConstraints;
371
- }
372
- canUseEqualityPlan(indexCols, eqConstraints) {
373
- return indexCols.length > 0 && eqConstraints.size === indexCols.length;
374
- }
375
- evaluateRangePlan(context, index, indexId, indexInfo, currentPlan) {
376
- const indexCols = index.columns;
377
- const firstIndexColIdx = indexCols[0]?.index ?? -2;
378
- const rangeBounds = this.findRangeBounds(firstIndexColIdx, indexInfo);
379
- if (!rangeBounds.lowerBound && !rangeBounds.upperBound) {
380
- return null;
381
- }
382
- const planRangeRows = BigInt(Math.max(1, Math.floor(context.tableSize / 4)));
383
- const planRangeCost = Math.log2(context.tableSize + 1) * 2.0 + Number(planRangeRows);
384
- if (planRangeCost >= currentPlan.cost) {
385
- return null;
386
- }
387
- const usedIndices = new Set();
388
- if (rangeBounds.lowerBound)
389
- usedIndices.add(rangeBounds.lowerBound.index);
390
- if (rangeBounds.upperBound)
391
- usedIndices.add(rangeBounds.upperBound.index);
392
- return {
393
- ...currentPlan,
394
- planType: context.PLAN_TYPE_RANGE_ASC,
395
- cost: planRangeCost,
396
- rows: planRangeRows,
397
- usedConstraintIndices: usedIndices,
398
- orderByConsumed: false
399
- };
400
- }
401
- findRangeBounds(firstColIndex, indexInfo) {
402
- let lowerBound = null;
403
- let upperBound = null;
404
- for (let i = 0; i < indexInfo.nConstraint; i++) {
405
- const constraint = indexInfo.aConstraint[i];
406
- if (constraint.iColumn === firstColIndex && constraint.usable) {
407
- if (constraint.op === IndexConstraintOp.GT || constraint.op === IndexConstraintOp.GE) {
408
- if (!lowerBound || constraint.op > lowerBound.op) {
409
- lowerBound = { index: i, op: constraint.op };
410
- }
411
- }
412
- else if (constraint.op === IndexConstraintOp.LT || constraint.op === IndexConstraintOp.LE) {
413
- if (!upperBound || constraint.op < upperBound.op) {
414
- upperBound = { index: i, op: constraint.op };
415
- }
416
- }
417
- }
418
- }
419
- return { lowerBound, upperBound };
420
- }
421
- evaluateOrderByConsumption(context, index, indexInfo, currentPlan) {
422
- if (indexInfo.nOrderBy === 0) {
423
- return null;
424
- }
425
- const indexCols = index.columns;
426
- const orderByConsumption = this.checkOrderByConsumption(indexCols, indexInfo);
427
- if (!orderByConsumption.canConsume) {
428
- return null;
429
- }
430
- const indexScanIsDesc = indexCols[0]?.desc ?? false;
431
- const requiresDescScan = orderByConsumption.isDesc !== indexScanIsDesc;
432
- const basePlanType = currentPlan.planType;
433
- if (basePlanType === context.PLAN_TYPE_FULL_ASC || basePlanType === context.PLAN_TYPE_RANGE_ASC) {
434
- return {
435
- ...currentPlan,
436
- orderByConsumed: true,
437
- isDesc: orderByConsumption.isDesc,
438
- planType: this.adjustPlanTypeForOrder(context, basePlanType, requiresDescScan),
439
- cost: currentPlan.cost * 0.9 // Prefer consuming order
440
- };
441
- }
442
- return null;
443
- }
444
- checkOrderByConsumption(indexCols, indexInfo) {
445
- if (indexInfo.nOrderBy === 0 || indexCols.length < indexInfo.nOrderBy) {
446
- return { canConsume: false, isDesc: false };
447
- }
448
- const isOrderDesc = indexInfo.aOrderBy[0].desc;
449
- for (let k = 0; k < indexInfo.nOrderBy; k++) {
450
- const orderByCol = indexInfo.aOrderBy[k];
451
- const indexCol = indexCols[k];
452
- if (orderByCol.iColumn !== indexCol.index || orderByCol.desc !== isOrderDesc) {
453
- return { canConsume: false, isDesc: false };
454
- }
455
- }
456
- return { canConsume: true, isDesc: isOrderDesc };
457
- }
458
- adjustPlanTypeForOrder(context, basePlanType, requiresDescScan) {
459
- if (basePlanType === context.PLAN_TYPE_FULL_ASC) {
460
- return requiresDescScan ? context.PLAN_TYPE_FULL_DESC : context.PLAN_TYPE_FULL_ASC;
461
- }
462
- else { // RANGE_ASC
463
- return requiresDescScan ? context.PLAN_TYPE_RANGE_DESC : context.PLAN_TYPE_RANGE_ASC;
464
- }
465
- }
466
- ensureFallbackPlan(bestPlan, context, availableIndexes) {
467
- if (bestPlan.indexId === -1) {
468
- const primaryIndex = availableIndexes.findIndex(idx => idx.name === '_primary_');
469
- bestPlan.indexId = primaryIndex >= 0 ? primaryIndex : 0;
470
- bestPlan.planType = context.PLAN_TYPE_FULL_ASC;
471
- bestPlan.cost = context.tableSize * 10.0;
472
- bestPlan.rows = BigInt(context.tableSize);
473
- bestPlan.usedConstraintIndices.clear();
474
- bestPlan.orderByConsumed = false;
475
- }
476
- return bestPlan;
477
- }
478
- populateIndexInfoOutput(indexInfo, bestPlan, availableIndexes) {
479
- const context = this.createPlanningContext({}, indexInfo);
480
- indexInfo.idxNum = context.encodeIdxNum(bestPlan.indexId, bestPlan.planType);
481
- indexInfo.estimatedCost = bestPlan.cost;
482
- indexInfo.estimatedRows = bestPlan.rows;
483
- indexInfo.orderByConsumed = bestPlan.orderByConsumed;
484
- indexInfo.idxFlags = (bestPlan.planType === context.PLAN_TYPE_EQ) ? 1 : 0;
485
- this.buildConstraintUsage(indexInfo, bestPlan);
486
- this.buildIndexString(indexInfo, bestPlan, availableIndexes);
487
- }
488
- buildConstraintUsage(indexInfo, bestPlan) {
489
- const constraintUsage = Array.from({ length: indexInfo.nConstraint }, () => ({
490
- argvIndex: 0,
491
- omit: false
492
- }));
493
- let currentArg = 1;
494
- bestPlan.usedConstraintIndices.forEach((constraintIndex) => {
495
- constraintUsage[constraintIndex].argvIndex = currentArg++;
496
- constraintUsage[constraintIndex].omit = (bestPlan.planType === 2); // PLAN_TYPE_EQ
497
- });
498
- indexInfo.aConstraintUsage = constraintUsage;
499
- }
500
- buildIndexString(indexInfo, bestPlan, availableIndexes) {
501
- const chosenIndex = availableIndexes[bestPlan.indexId];
502
- const idxStrParts = [
503
- `idx=${chosenIndex?.name ?? 'unknown'}(${bestPlan.indexId})`,
504
- `plan=${bestPlan.planType}`
505
- ];
506
- if (bestPlan.orderByConsumed) {
507
- idxStrParts.push(`ordCons=${bestPlan.isDesc ? 'DESC' : 'ASC'}`);
508
- }
509
- if (bestPlan.usedConstraintIndices.size > 0) {
510
- const argvMapping = this.createArgvMapping(indexInfo.aConstraintUsage);
511
- if (argvMapping.length > 0) {
512
- idxStrParts.push(`argvMap=[${argvMapping.join(',')}]`);
513
- }
514
- }
515
- indexInfo.idxStr = idxStrParts.join(';');
516
- }
517
- createArgvMapping(constraintUsage) {
518
- return constraintUsage
519
- .map((usage, constraintIdx) => ({
520
- argIdx: usage.argvIndex,
521
- constraintIdx
522
- }))
523
- .filter(item => item.argIdx > 0)
524
- .map(item => `[${item.argIdx},${item.constraintIdx}]`);
525
- }
526
292
  /**
527
293
  * Destroys a memory table and frees associated resources
528
294
  */
@@ -543,6 +309,45 @@ export class MemoryTableModule {
543
309
  logger.operation('Destroy Table', tableName, { schema: schemaName });
544
310
  }
545
311
  }
312
+ /**
313
+ * Renames a memory table's internal registration key.
314
+ * Called by the ALTER TABLE RENAME TO emitter after schema update.
315
+ */
316
+ renameTable(schemaName, oldName, newName) {
317
+ const oldKey = `${schemaName}.${oldName}`.toLowerCase();
318
+ const newKey = `${schemaName}.${newName}`.toLowerCase();
319
+ const manager = this.tables.get(oldKey);
320
+ if (manager) {
321
+ manager.renameTable(newName);
322
+ this.tables.delete(oldKey);
323
+ this.tables.set(newKey, manager);
324
+ }
325
+ }
326
+ /**
327
+ * Alters an existing memory table's structure (ADD/DROP/RENAME COLUMN).
328
+ */
329
+ async alterTable(db, schemaName, tableName, change) {
330
+ const tableKey = `${schemaName}.${tableName}`.toLowerCase();
331
+ const manager = this.tables.get(tableKey);
332
+ if (!manager) {
333
+ throw new QuereusError(`Memory table '${tableName}' not found in schema '${schemaName}'. Cannot alter.`, StatusCode.ERROR);
334
+ }
335
+ switch (change.type) {
336
+ case 'addColumn':
337
+ await manager.addColumn(change.columnDef);
338
+ break;
339
+ case 'dropColumn':
340
+ await manager.dropColumn(change.columnName);
341
+ break;
342
+ case 'renameColumn':
343
+ if (!change.newColumnDefAst) {
344
+ throw new QuereusError('RENAME COLUMN requires a new column definition AST', StatusCode.INTERNAL);
345
+ }
346
+ await manager.renameColumn(change.oldName, change.newColumnDefAst);
347
+ break;
348
+ }
349
+ return manager.tableSchema;
350
+ }
546
351
  /**
547
352
  * Creates an index on a memory table
548
353
  */
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/vtab/memory/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../../src/vtab/memory/module.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import type { MemoryTableConnection } from './layer/connection.js';
6
6
  import type { FilterInfo } from '../filter-info.js';
7
7
  import type { VirtualTableConnection } from '../connection.js';
8
8
  import type { VTableEventEmitter } from '../events.js';
9
+ import type { TableStatistics } from '../../planner/stats/catalog-stats.js';
9
10
  /**
10
11
  * Represents a connection-specific instance of an in-memory table using the layer-based MVCC model.
11
12
  * This class acts as a thin wrapper around the shared MemoryTableManager,
@@ -28,6 +29,12 @@ export declare class MemoryTable extends VirtualTable {
28
29
  * Get the event emitter for mutation and schema hooks.
29
30
  */
30
31
  getEventEmitter(): VTableEventEmitter | undefined;
32
+ /**
33
+ * Returns statistics for this memory table.
34
+ * Provides exact row count from BTree metadata, column-level distinct counts,
35
+ * min/max values, null counts, and optional histograms.
36
+ */
37
+ getStatistics(): TableStatistics;
31
38
  query(filterInfo: FilterInfo): AsyncIterable<Row>;
32
39
  /** Performs mutation through the connection's transaction layer */
33
40
  update(args: import('../table.js').UpdateArgs): Promise<UpdateResult>;
@@ -48,6 +55,8 @@ export declare class MemoryTable extends VirtualTable {
48
55
  alterSchema(changeInfo: SchemaChangeInfo): Promise<void>;
49
56
  /** Disconnects this connection instance from the manager */
50
57
  disconnect(): Promise<void>;
58
+ /** Returns true if this table is in committed-snapshot (read-only) mode */
59
+ isCommittedSnapshot(): boolean;
51
60
  createIndex(indexSchema: IndexSchema): Promise<void>;
52
61
  dropIndex(indexName: string): Promise<void>;
53
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvD;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAuB5C,oDAAoD;IACpD,SAAS,IAAI,WAAW,GAAG,SAAS;IAKpC,8CAA8C;IAC9C,UAAU,IAAI,OAAO;IAKrB,2DAA2D;YAC7C,gBAAgB;IAsB9B,kFAAkF;IAClF,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,IAAI;IAK5D,mEAAmE;IACnE,gBAAgB,IAAI,sBAAsB;IAK1C,yEAAyE;IACzE,aAAa,IAAI,sBAAsB,GAAG,SAAS;IAOnD;;OAEG;IACH,eAAe,IAAI,kBAAkB,GAAG,SAAS;IAK1C,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;IAoBxD,mEAAmE;IAC7D,MAAM,CAAC,IAAI,EAAE,OAAO,aAAa,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAO3E,+CAA+C;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,4CAA4C;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B,+CAA+C;IACzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,+DAA+D;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,mDAAmD;IAC7C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,6CAA6C;IACvC,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9D,4DAA4D;IACtD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE;IAKvC;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM;IAQvD;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAMhC;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAU5D"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/vtab/memory/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,sCAAsC,CAAC;AAK9F;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,YAAY;IA6B5C,oDAAoD;IACpD,SAAS,IAAI,WAAW,GAAG,SAAS;IAKpC,8CAA8C;IAC9C,UAAU,IAAI,OAAO;IAKrB,2DAA2D;YAC7C,gBAAgB;IA0C9B,kFAAkF;IAClF,aAAa,CAAC,gBAAgB,EAAE,qBAAqB,GAAG,IAAI;IAK5D,mEAAmE;IACnE,gBAAgB,IAAI,sBAAsB;IAK1C,yEAAyE;IACzE,aAAa,IAAI,sBAAsB,GAAG,SAAS;IAUnD;;OAEG;IACH,eAAe,IAAI,kBAAkB,GAAG,SAAS;IAIjD;;;;OAIG;IACH,aAAa,IAAI,eAAe;IAqEzB,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;IAwBxD,mEAAmE;IAC7D,MAAM,CAAC,IAAI,EAAE,OAAO,aAAa,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAU3E,+CAA+C;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,4CAA4C;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B,+CAA+C;IACzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B,+DAA+D;IACzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,mDAAmD;IAC7C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtC,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,6CAA6C;IACvC,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9D,4DAA4D;IACtD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,2EAA2E;IAC3E,mBAAmB,IAAI,OAAO;IAKxB,WAAW,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE;IAKvC;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM;IAQvD;;;OAGG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAMhC;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAU5D"}