@quereus/quereus 0.16.4 → 0.17.1

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 (533) hide show
  1. package/README.md +372 -345
  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 +39 -2
  17. package/dist/src/core/database-events.js.map +1 -1
  18. package/dist/src/core/database-transaction.d.ts +31 -4
  19. package/dist/src/core/database-transaction.d.ts.map +1 -1
  20. package/dist/src/core/database-transaction.js +68 -2
  21. package/dist/src/core/database-transaction.js.map +1 -1
  22. package/dist/src/core/database.d.ts +17 -4
  23. package/dist/src/core/database.d.ts.map +1 -1
  24. package/dist/src/core/database.js +189 -154
  25. package/dist/src/core/database.js.map +1 -1
  26. package/dist/src/core/statement.d.ts +8 -2
  27. package/dist/src/core/statement.d.ts.map +1 -1
  28. package/dist/src/core/statement.js +54 -71
  29. package/dist/src/core/statement.js.map +1 -1
  30. package/dist/src/emit/ast-stringify.d.ts +1 -0
  31. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  32. package/dist/src/emit/ast-stringify.js +12 -2
  33. package/dist/src/emit/ast-stringify.js.map +1 -1
  34. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  35. package/dist/src/func/builtins/builtin-window-functions.js +75 -0
  36. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  37. package/dist/src/func/builtins/conversion.js +9 -12
  38. package/dist/src/func/builtins/conversion.js.map +1 -1
  39. package/dist/src/func/builtins/datetime.d.ts +21 -0
  40. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  41. package/dist/src/func/builtins/datetime.js +452 -368
  42. package/dist/src/func/builtins/datetime.js.map +1 -1
  43. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  44. package/dist/src/func/builtins/explain.js +15 -3
  45. package/dist/src/func/builtins/explain.js.map +1 -1
  46. package/dist/src/func/builtins/index.d.ts.map +1 -1
  47. package/dist/src/func/builtins/index.js +5 -12
  48. package/dist/src/func/builtins/index.js.map +1 -1
  49. package/dist/src/func/builtins/json-helpers.js +1 -1
  50. package/dist/src/func/builtins/json-helpers.js.map +1 -1
  51. package/dist/src/func/builtins/json.d.ts.map +1 -1
  52. package/dist/src/func/builtins/json.js +2 -5
  53. package/dist/src/func/builtins/json.js.map +1 -1
  54. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  55. package/dist/src/func/builtins/schema.js +30 -32
  56. package/dist/src/func/builtins/schema.js.map +1 -1
  57. package/dist/src/func/builtins/string.d.ts.map +1 -1
  58. package/dist/src/func/builtins/string.js +40 -64
  59. package/dist/src/func/builtins/string.js.map +1 -1
  60. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  61. package/dist/src/func/builtins/timespan.js.map +1 -1
  62. package/dist/src/index.d.ts +2 -2
  63. package/dist/src/index.d.ts.map +1 -1
  64. package/dist/src/index.js +2 -2
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/parser/ast.d.ts +9 -2
  67. package/dist/src/parser/ast.d.ts.map +1 -1
  68. package/dist/src/parser/lexer.d.ts +1 -0
  69. package/dist/src/parser/lexer.d.ts.map +1 -1
  70. package/dist/src/parser/lexer.js +3 -0
  71. package/dist/src/parser/lexer.js.map +1 -1
  72. package/dist/src/parser/parser.d.ts +11 -1
  73. package/dist/src/parser/parser.d.ts.map +1 -1
  74. package/dist/src/parser/parser.js +75 -135
  75. package/dist/src/parser/parser.js.map +1 -1
  76. package/dist/src/planner/analysis/const-evaluator.d.ts.map +1 -1
  77. package/dist/src/planner/analysis/const-evaluator.js +6 -3
  78. package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
  79. package/dist/src/planner/analysis/constraint-extractor.d.ts +2 -1
  80. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  81. package/dist/src/planner/analysis/constraint-extractor.js +154 -22
  82. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  83. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  84. package/dist/src/planner/building/alter-table.js +18 -1
  85. package/dist/src/planner/building/alter-table.js.map +1 -1
  86. package/dist/src/planner/building/analyze.d.ts +5 -0
  87. package/dist/src/planner/building/analyze.d.ts.map +1 -0
  88. package/dist/src/planner/building/analyze.js +5 -0
  89. package/dist/src/planner/building/analyze.js.map +1 -0
  90. package/dist/src/planner/building/block.d.ts.map +1 -1
  91. package/dist/src/planner/building/block.js +3 -0
  92. package/dist/src/planner/building/block.js.map +1 -1
  93. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  94. package/dist/src/planner/building/constraint-builder.js +25 -3
  95. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  96. package/dist/src/planner/building/delete.d.ts.map +1 -1
  97. package/dist/src/planner/building/delete.js +11 -0
  98. package/dist/src/planner/building/delete.js.map +1 -1
  99. package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
  100. package/dist/src/planner/building/drop-assertion.js +2 -1
  101. package/dist/src/planner/building/drop-assertion.js.map +1 -1
  102. package/dist/src/planner/building/expression.d.ts.map +1 -1
  103. package/dist/src/planner/building/expression.js +55 -7
  104. package/dist/src/planner/building/expression.js.map +1 -1
  105. package/dist/src/planner/building/foreign-key-builder.d.ts +16 -0
  106. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -0
  107. package/dist/src/planner/building/foreign-key-builder.js +269 -0
  108. package/dist/src/planner/building/foreign-key-builder.js.map +1 -0
  109. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  110. package/dist/src/planner/building/function-call.js +3 -2
  111. package/dist/src/planner/building/function-call.js.map +1 -1
  112. package/dist/src/planner/building/insert.d.ts.map +1 -1
  113. package/dist/src/planner/building/insert.js +91 -10
  114. package/dist/src/planner/building/insert.js.map +1 -1
  115. package/dist/src/planner/building/schema-resolution.d.ts +4 -0
  116. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  117. package/dist/src/planner/building/schema-resolution.js +14 -3
  118. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  119. package/dist/src/planner/building/select-aggregates.d.ts +1 -0
  120. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  121. package/dist/src/planner/building/select-aggregates.js +118 -3
  122. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  123. package/dist/src/planner/building/select-modifiers.js +3 -3
  124. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  125. package/dist/src/planner/building/select-window.js +9 -8
  126. package/dist/src/planner/building/select-window.js.map +1 -1
  127. package/dist/src/planner/building/select.d.ts.map +1 -1
  128. package/dist/src/planner/building/select.js +21 -10
  129. package/dist/src/planner/building/select.js.map +1 -1
  130. package/dist/src/planner/building/table.d.ts.map +1 -1
  131. package/dist/src/planner/building/table.js +5 -3
  132. package/dist/src/planner/building/table.js.map +1 -1
  133. package/dist/src/planner/building/update.d.ts.map +1 -1
  134. package/dist/src/planner/building/update.js +30 -1
  135. package/dist/src/planner/building/update.js.map +1 -1
  136. package/dist/src/planner/building/with.js +1 -1
  137. package/dist/src/planner/building/with.js.map +1 -1
  138. package/dist/src/planner/cache/reference-graph.d.ts +1 -1
  139. package/dist/src/planner/cache/reference-graph.js +1 -1
  140. package/dist/src/planner/cost/index.d.ts +10 -3
  141. package/dist/src/planner/cost/index.d.ts.map +1 -1
  142. package/dist/src/planner/cost/index.js +17 -3
  143. package/dist/src/planner/cost/index.js.map +1 -1
  144. package/dist/src/planner/debug.js +1 -1
  145. package/dist/src/planner/debug.js.map +1 -1
  146. package/dist/src/planner/framework/characteristics.d.ts +1 -1
  147. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  148. package/dist/src/planner/framework/pass.d.ts +3 -1
  149. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  150. package/dist/src/planner/framework/pass.js +62 -18
  151. package/dist/src/planner/framework/pass.js.map +1 -1
  152. package/dist/src/planner/framework/physical-utils.d.ts +5 -0
  153. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  154. package/dist/src/planner/framework/physical-utils.js +19 -0
  155. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  156. package/dist/src/planner/framework/trace.d.ts.map +1 -1
  157. package/dist/src/planner/framework/trace.js +3 -2
  158. package/dist/src/planner/framework/trace.js.map +1 -1
  159. package/dist/src/planner/nodes/alias-node.d.ts +2 -1
  160. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  161. package/dist/src/planner/nodes/alias-node.js +8 -0
  162. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  163. package/dist/src/planner/nodes/alter-table-node.d.ts +42 -0
  164. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -0
  165. package/dist/src/planner/nodes/alter-table-node.js +55 -0
  166. package/dist/src/planner/nodes/alter-table-node.js.map +1 -0
  167. package/dist/src/planner/nodes/analyze-node.d.ts +25 -0
  168. package/dist/src/planner/nodes/analyze-node.d.ts.map +1 -0
  169. package/dist/src/planner/nodes/analyze-node.js +83 -0
  170. package/dist/src/planner/nodes/analyze-node.js.map +1 -0
  171. package/dist/src/planner/nodes/bloom-join-node.d.ts +66 -0
  172. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -0
  173. package/dist/src/planner/nodes/bloom-join-node.js +200 -0
  174. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -0
  175. package/dist/src/planner/nodes/constraint-check-node.d.ts +1 -1
  176. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  177. package/dist/src/planner/nodes/cte-reference-node.js +7 -7
  178. package/dist/src/planner/nodes/cte-reference-node.js.map +1 -1
  179. package/dist/src/planner/nodes/join-node.d.ts +9 -1
  180. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  181. package/dist/src/planner/nodes/join-node.js +69 -79
  182. package/dist/src/planner/nodes/join-node.js.map +1 -1
  183. package/dist/src/planner/nodes/merge-join-node.d.ts +60 -0
  184. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -0
  185. package/dist/src/planner/nodes/merge-join-node.js +207 -0
  186. package/dist/src/planner/nodes/merge-join-node.js.map +1 -0
  187. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  188. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  189. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  190. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  191. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/project-node.js +3 -2
  193. package/dist/src/planner/nodes/project-node.js.map +1 -1
  194. package/dist/src/planner/nodes/reference.d.ts +2 -1
  195. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/reference.js +6 -2
  197. package/dist/src/planner/nodes/reference.js.map +1 -1
  198. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/returning-node.js +3 -2
  200. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  201. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/subquery.js.map +1 -1
  203. package/dist/src/planner/nodes/table-access-nodes.js +1 -1
  204. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  205. package/dist/src/planner/nodes/update-node.d.ts +2 -0
  206. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  207. package/dist/src/planner/nodes/update-node.js +2 -1
  208. package/dist/src/planner/nodes/update-node.js.map +1 -1
  209. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  210. package/dist/src/planner/nodes/window-function.js +7 -7
  211. package/dist/src/planner/nodes/window-function.js.map +1 -1
  212. package/dist/src/planner/nodes/window-node.d.ts +2 -2
  213. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  214. package/dist/src/planner/nodes/window-node.js +9 -14
  215. package/dist/src/planner/nodes/window-node.js.map +1 -1
  216. package/dist/src/planner/optimizer.d.ts.map +1 -1
  217. package/dist/src/planner/optimizer.js +40 -2
  218. package/dist/src/planner/optimizer.js.map +1 -1
  219. package/dist/src/planner/planning-context.d.ts.map +1 -1
  220. package/dist/src/planner/planning-context.js +1 -6
  221. package/dist/src/planner/planning-context.js.map +1 -1
  222. package/dist/src/planner/resolve.d.ts.map +1 -1
  223. package/dist/src/planner/resolve.js.map +1 -1
  224. package/dist/src/planner/rules/access/rule-select-access-path.js +157 -28
  225. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  226. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
  227. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +27 -6
  228. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
  229. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +19 -0
  230. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +1 -0
  231. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +53 -0
  232. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +1 -0
  233. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
  234. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +5 -0
  235. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
  236. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +18 -0
  237. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -0
  238. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +37 -0
  239. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -0
  240. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +8 -3
  241. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
  242. package/dist/src/planner/rules/join/rule-join-key-inference.js +28 -17
  243. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
  244. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +16 -0
  245. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -0
  246. package/dist/src/planner/rules/join/rule-join-physical-selection.js +216 -0
  247. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -0
  248. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  249. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +34 -4
  250. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  251. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +23 -0
  252. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -0
  253. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +293 -0
  254. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -0
  255. package/dist/src/planner/scopes/multi.d.ts +3 -2
  256. package/dist/src/planner/scopes/multi.d.ts.map +1 -1
  257. package/dist/src/planner/scopes/multi.js +32 -7
  258. package/dist/src/planner/scopes/multi.js.map +1 -1
  259. package/dist/src/planner/scopes/shadow.d.ts +20 -0
  260. package/dist/src/planner/scopes/shadow.d.ts.map +1 -0
  261. package/dist/src/planner/scopes/shadow.js +31 -0
  262. package/dist/src/planner/scopes/shadow.js.map +1 -0
  263. package/dist/src/planner/stats/analyze.d.ts +17 -0
  264. package/dist/src/planner/stats/analyze.d.ts.map +1 -0
  265. package/dist/src/planner/stats/analyze.js +114 -0
  266. package/dist/src/planner/stats/analyze.js.map +1 -0
  267. package/dist/src/planner/stats/catalog-stats.d.ts +80 -0
  268. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -0
  269. package/dist/src/planner/stats/catalog-stats.js +248 -0
  270. package/dist/src/planner/stats/catalog-stats.js.map +1 -0
  271. package/dist/src/planner/stats/histogram.d.ts +24 -0
  272. package/dist/src/planner/stats/histogram.d.ts.map +1 -0
  273. package/dist/src/planner/stats/histogram.js +142 -0
  274. package/dist/src/planner/stats/histogram.js.map +1 -0
  275. package/dist/src/planner/type-utils.d.ts.map +1 -1
  276. package/dist/src/planner/type-utils.js +8 -2
  277. package/dist/src/planner/type-utils.js.map +1 -1
  278. package/dist/src/planner/util/key-utils.d.ts +48 -2
  279. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  280. package/dist/src/planner/util/key-utils.js +123 -0
  281. package/dist/src/planner/util/key-utils.js.map +1 -1
  282. package/dist/src/planner/validation/determinism-validator.d.ts +9 -0
  283. package/dist/src/planner/validation/determinism-validator.d.ts.map +1 -1
  284. package/dist/src/planner/validation/determinism-validator.js +11 -0
  285. package/dist/src/planner/validation/determinism-validator.js.map +1 -1
  286. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  287. package/dist/src/planner/validation/plan-validator.js +1 -0
  288. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  289. package/dist/src/runtime/context-helpers.d.ts +34 -10
  290. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  291. package/dist/src/runtime/context-helpers.js +115 -39
  292. package/dist/src/runtime/context-helpers.js.map +1 -1
  293. package/dist/src/runtime/deferred-constraint-queue.d.ts +0 -1
  294. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  295. package/dist/src/runtime/deferred-constraint-queue.js +10 -23
  296. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  297. package/dist/src/runtime/descriptor-helpers.d.ts +7 -0
  298. package/dist/src/runtime/descriptor-helpers.d.ts.map +1 -0
  299. package/dist/src/runtime/descriptor-helpers.js +24 -0
  300. package/dist/src/runtime/descriptor-helpers.js.map +1 -0
  301. package/dist/src/runtime/emission-context.d.ts +7 -1
  302. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  303. package/dist/src/runtime/emission-context.js +16 -0
  304. package/dist/src/runtime/emission-context.js.map +1 -1
  305. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  306. package/dist/src/runtime/emit/aggregate.js +97 -93
  307. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  308. package/dist/src/runtime/emit/alter-table.d.ts +5 -0
  309. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -0
  310. package/dist/src/runtime/emit/alter-table.js +209 -0
  311. package/dist/src/runtime/emit/alter-table.js.map +1 -0
  312. package/dist/src/runtime/emit/analyze.d.ts +9 -0
  313. package/dist/src/runtime/emit/analyze.d.ts.map +1 -0
  314. package/dist/src/runtime/emit/analyze.js +72 -0
  315. package/dist/src/runtime/emit/analyze.js.map +1 -0
  316. package/dist/src/runtime/emit/array-index.d.ts.map +1 -1
  317. package/dist/src/runtime/emit/array-index.js +4 -2
  318. package/dist/src/runtime/emit/array-index.js.map +1 -1
  319. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  320. package/dist/src/runtime/emit/between.js +8 -20
  321. package/dist/src/runtime/emit/between.js.map +1 -1
  322. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  323. package/dist/src/runtime/emit/binary.js +155 -126
  324. package/dist/src/runtime/emit/binary.js.map +1 -1
  325. package/dist/src/runtime/emit/bloom-join.d.ts +12 -0
  326. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -0
  327. package/dist/src/runtime/emit/bloom-join.js +114 -0
  328. package/dist/src/runtime/emit/bloom-join.js.map +1 -0
  329. package/dist/src/runtime/emit/cache.js +2 -2
  330. package/dist/src/runtime/emit/cache.js.map +1 -1
  331. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  332. package/dist/src/runtime/emit/cast.js +31 -117
  333. package/dist/src/runtime/emit/cast.js.map +1 -1
  334. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  335. package/dist/src/runtime/emit/constraint-check.js +2 -24
  336. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  337. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  338. package/dist/src/runtime/emit/cte-reference.js +11 -5
  339. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  340. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  341. package/dist/src/runtime/emit/distinct.js +21 -12
  342. package/dist/src/runtime/emit/distinct.js.map +1 -1
  343. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  344. package/dist/src/runtime/emit/dml-executor.js +5 -1
  345. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  346. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  347. package/dist/src/runtime/emit/drop-assertion.js +2 -0
  348. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  349. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  350. package/dist/src/runtime/emit/filter.js +26 -7
  351. package/dist/src/runtime/emit/filter.js.map +1 -1
  352. package/dist/src/runtime/emit/internal-recursive-cte-ref.d.ts.map +1 -1
  353. package/dist/src/runtime/emit/internal-recursive-cte-ref.js +11 -5
  354. package/dist/src/runtime/emit/internal-recursive-cte-ref.js.map +1 -1
  355. package/dist/src/runtime/emit/join.d.ts +1 -1
  356. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  357. package/dist/src/runtime/emit/join.js +44 -33
  358. package/dist/src/runtime/emit/join.js.map +1 -1
  359. package/dist/src/runtime/emit/merge-join.d.ts +14 -0
  360. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -0
  361. package/dist/src/runtime/emit/merge-join.js +152 -0
  362. package/dist/src/runtime/emit/merge-join.js.map +1 -0
  363. package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
  364. package/dist/src/runtime/emit/parameter.js +10 -32
  365. package/dist/src/runtime/emit/parameter.js.map +1 -1
  366. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  367. package/dist/src/runtime/emit/project.js +22 -12
  368. package/dist/src/runtime/emit/project.js.map +1 -1
  369. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  370. package/dist/src/runtime/emit/recursive-cte.js +5 -9
  371. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  372. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  373. package/dist/src/runtime/emit/returning.js +14 -8
  374. package/dist/src/runtime/emit/returning.js.map +1 -1
  375. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  376. package/dist/src/runtime/emit/scan.js +4 -1
  377. package/dist/src/runtime/emit/scan.js.map +1 -1
  378. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  379. package/dist/src/runtime/emit/set-operation.js +8 -5
  380. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  381. package/dist/src/runtime/emit/sort.js +2 -2
  382. package/dist/src/runtime/emit/sort.js.map +1 -1
  383. package/dist/src/runtime/emit/subquery.js +2 -2
  384. package/dist/src/runtime/emit/subquery.js.map +1 -1
  385. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  386. package/dist/src/runtime/emit/table-valued-function.js +21 -7
  387. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  388. package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
  389. package/dist/src/runtime/emit/transaction.js +18 -46
  390. package/dist/src/runtime/emit/transaction.js.map +1 -1
  391. package/dist/src/runtime/emit/unary.js +2 -2
  392. package/dist/src/runtime/emit/unary.js.map +1 -1
  393. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  394. package/dist/src/runtime/emit/update.js +43 -21
  395. package/dist/src/runtime/emit/update.js.map +1 -1
  396. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  397. package/dist/src/runtime/emit/window.js +368 -126
  398. package/dist/src/runtime/emit/window.js.map +1 -1
  399. package/dist/src/runtime/foreign-key-actions.d.ts +15 -0
  400. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -0
  401. package/dist/src/runtime/foreign-key-actions.js +109 -0
  402. package/dist/src/runtime/foreign-key-actions.js.map +1 -0
  403. package/dist/src/runtime/register.d.ts.map +1 -1
  404. package/dist/src/runtime/register.js +8 -0
  405. package/dist/src/runtime/register.js.map +1 -1
  406. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  407. package/dist/src/runtime/scheduler.js +4 -1
  408. package/dist/src/runtime/scheduler.js.map +1 -1
  409. package/dist/src/runtime/types.d.ts +6 -5
  410. package/dist/src/runtime/types.d.ts.map +1 -1
  411. package/dist/src/runtime/types.js.map +1 -1
  412. package/dist/src/schema/change-events.d.ts +36 -8
  413. package/dist/src/schema/change-events.d.ts.map +1 -1
  414. package/dist/src/schema/change-events.js.map +1 -1
  415. package/dist/src/schema/column.d.ts +5 -1
  416. package/dist/src/schema/column.d.ts.map +1 -1
  417. package/dist/src/schema/column.js +1 -2
  418. package/dist/src/schema/column.js.map +1 -1
  419. package/dist/src/schema/manager.d.ts +54 -4
  420. package/dist/src/schema/manager.d.ts.map +1 -1
  421. package/dist/src/schema/manager.js +353 -313
  422. package/dist/src/schema/manager.js.map +1 -1
  423. package/dist/src/schema/schema-differ.js +3 -3
  424. package/dist/src/schema/schema-differ.js.map +1 -1
  425. package/dist/src/schema/schema.d.ts +1 -1
  426. package/dist/src/schema/schema.js +2 -2
  427. package/dist/src/schema/schema.js.map +1 -1
  428. package/dist/src/schema/table.d.ts +49 -0
  429. package/dist/src/schema/table.d.ts.map +1 -1
  430. package/dist/src/schema/table.js +30 -11
  431. package/dist/src/schema/table.js.map +1 -1
  432. package/dist/src/types/builtin-types.d.ts.map +1 -1
  433. package/dist/src/types/builtin-types.js +26 -95
  434. package/dist/src/types/builtin-types.js.map +1 -1
  435. package/dist/src/types/index.d.ts +1 -1
  436. package/dist/src/types/index.d.ts.map +1 -1
  437. package/dist/src/types/index.js +1 -1
  438. package/dist/src/types/index.js.map +1 -1
  439. package/dist/src/types/json-type.d.ts.map +1 -1
  440. package/dist/src/types/json-type.js +28 -40
  441. package/dist/src/types/json-type.js.map +1 -1
  442. package/dist/src/types/logical-type.d.ts +6 -0
  443. package/dist/src/types/logical-type.d.ts.map +1 -1
  444. package/dist/src/types/logical-type.js +12 -0
  445. package/dist/src/types/logical-type.js.map +1 -1
  446. package/dist/src/types/temporal-types.d.ts.map +1 -1
  447. package/dist/src/types/temporal-types.js +8 -37
  448. package/dist/src/types/temporal-types.js.map +1 -1
  449. package/dist/src/util/async-iterator.d.ts +30 -0
  450. package/dist/src/util/async-iterator.d.ts.map +1 -0
  451. package/dist/src/util/async-iterator.js +101 -0
  452. package/dist/src/util/async-iterator.js.map +1 -0
  453. package/dist/src/util/coercion.d.ts +4 -5
  454. package/dist/src/util/coercion.d.ts.map +1 -1
  455. package/dist/src/util/coercion.js +10 -14
  456. package/dist/src/util/coercion.js.map +1 -1
  457. package/dist/src/util/comparison.d.ts +34 -21
  458. package/dist/src/util/comparison.d.ts.map +1 -1
  459. package/dist/src/util/comparison.js +77 -43
  460. package/dist/src/util/comparison.js.map +1 -1
  461. package/dist/src/util/environment.d.ts +0 -8
  462. package/dist/src/util/environment.d.ts.map +1 -1
  463. package/dist/src/util/environment.js +0 -12
  464. package/dist/src/util/environment.js.map +1 -1
  465. package/dist/src/util/key-serializer.d.ts +33 -0
  466. package/dist/src/util/key-serializer.d.ts.map +1 -0
  467. package/dist/src/util/key-serializer.js +95 -0
  468. package/dist/src/util/key-serializer.js.map +1 -0
  469. package/dist/src/util/plugin-helper.d.ts.map +1 -1
  470. package/dist/src/util/plugin-helper.js +21 -45
  471. package/dist/src/util/plugin-helper.js.map +1 -1
  472. package/dist/src/util/serialization.d.ts +1 -0
  473. package/dist/src/util/serialization.d.ts.map +1 -1
  474. package/dist/src/util/serialization.js +8 -1
  475. package/dist/src/util/serialization.js.map +1 -1
  476. package/dist/src/util/working-table-iterable.d.ts +6 -5
  477. package/dist/src/util/working-table-iterable.d.ts.map +1 -1
  478. package/dist/src/util/working-table-iterable.js +8 -15
  479. package/dist/src/util/working-table-iterable.js.map +1 -1
  480. package/dist/src/vtab/best-access-plan.d.ts +12 -0
  481. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  482. package/dist/src/vtab/best-access-plan.js +22 -0
  483. package/dist/src/vtab/best-access-plan.js.map +1 -1
  484. package/dist/src/vtab/events.d.ts.map +1 -1
  485. package/dist/src/vtab/events.js +6 -3
  486. package/dist/src/vtab/events.js.map +1 -1
  487. package/dist/src/vtab/manifest.d.ts +3 -1
  488. package/dist/src/vtab/manifest.d.ts.map +1 -1
  489. package/dist/src/vtab/memory/index.d.ts +2 -2
  490. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  491. package/dist/src/vtab/memory/index.js +4 -7
  492. package/dist/src/vtab/memory/index.js.map +1 -1
  493. package/dist/src/vtab/memory/layer/base-cursor.d.ts.map +1 -1
  494. package/dist/src/vtab/memory/layer/base-cursor.js +37 -9
  495. package/dist/src/vtab/memory/layer/base-cursor.js.map +1 -1
  496. package/dist/src/vtab/memory/layer/base.js +1 -1
  497. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  498. package/dist/src/vtab/memory/layer/connection.d.ts +11 -7
  499. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  500. package/dist/src/vtab/memory/layer/connection.js +32 -44
  501. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  502. package/dist/src/vtab/memory/layer/manager.d.ts +15 -3
  503. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  504. package/dist/src/vtab/memory/layer/manager.js +85 -37
  505. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  506. package/dist/src/vtab/memory/layer/scan-plan.d.ts +2 -0
  507. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  508. package/dist/src/vtab/memory/layer/scan-plan.js +153 -78
  509. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  510. package/dist/src/vtab/memory/layer/transaction-cursor.d.ts.map +1 -1
  511. package/dist/src/vtab/memory/layer/transaction-cursor.js +39 -9
  512. package/dist/src/vtab/memory/layer/transaction-cursor.js.map +1 -1
  513. package/dist/src/vtab/memory/layer/transaction.d.ts +1 -0
  514. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  515. package/dist/src/vtab/memory/layer/transaction.js +6 -20
  516. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  517. package/dist/src/vtab/memory/module.d.ts +14 -24
  518. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  519. package/dist/src/vtab/memory/module.js +88 -283
  520. package/dist/src/vtab/memory/module.js.map +1 -1
  521. package/dist/src/vtab/memory/table.d.ts +9 -0
  522. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  523. package/dist/src/vtab/memory/table.js +121 -18
  524. package/dist/src/vtab/memory/table.js.map +1 -1
  525. package/dist/src/vtab/memory/types.d.ts +1 -0
  526. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  527. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  528. package/dist/src/vtab/module.d.ts +13 -0
  529. package/dist/src/vtab/module.d.ts.map +1 -1
  530. package/dist/src/vtab/table.d.ts +9 -0
  531. package/dist/src/vtab/table.d.ts.map +1 -1
  532. package/dist/src/vtab/table.js.map +1 -1
  533. package/package.json +2 -2
@@ -4,6 +4,14 @@ import { StatusCode } from '../../../common/types.js';
4
4
  import { safeIterate } from './safe-iterate.js';
5
5
  import { QuereusError } from '../../../common/errors.js';
6
6
  export async function* scanBaseLayer(layer, plan) {
7
+ // Multi-seek: iterate over multiple equality keys
8
+ if (plan.equalityKeys && plan.equalityKeys.length > 0) {
9
+ for (const key of plan.equalityKeys) {
10
+ const singlePlan = { ...plan, equalityKey: key, equalityKeys: undefined };
11
+ yield* scanBaseLayer(layer, singlePlan);
12
+ }
13
+ return;
14
+ }
7
15
  const { primaryKeyExtractorFromRow: keyFromEntry, primaryKeyComparator } = layer.getPkExtractorsAndComparators(layer.getSchema());
8
16
  const isEqPlan = plan.equalityKey !== undefined;
9
17
  const planAppliesToKey = (key, keyIsIndexKey) => {
@@ -78,19 +86,39 @@ export async function* scanBaseLayer(layer, plan) {
78
86
  }
79
87
  // Use mutation-safe iterator for secondary index iteration with range support
80
88
  const isAscending = !plan.descending;
81
- // Determine start key for range scans on secondary index
89
+ const isDescFirstColumn = secondaryIndex.specColumns[0]?.desc === true;
90
+ // For DESC indexes the tree stores higher values first, so:
91
+ // - ASC index: start from lowerBound (values increase forward in tree order)
92
+ // - DESC index: start from upperBound (higher values first; upper bound is the start)
82
93
  let startKey;
83
- if (plan.lowerBound) {
84
- startKey = { value: plan.lowerBound.value };
94
+ if (isDescFirstColumn) {
95
+ if (plan.upperBound) {
96
+ startKey = { value: plan.upperBound.value };
97
+ }
98
+ }
99
+ else {
100
+ if (plan.lowerBound) {
101
+ startKey = { value: plan.lowerBound.value };
102
+ }
85
103
  }
86
104
  for await (const indexEntry of safeIterate(indexTree, isAscending, startKey)) {
87
105
  if (!planAppliesToKey(indexEntry.indexKey, true)) {
88
- // Early termination for ascending scans past upper bound
89
- if (isAscending && plan.upperBound) {
90
- const keyForComparison = Array.isArray(indexEntry.indexKey) ? indexEntry.indexKey[0] : indexEntry.indexKey;
91
- const cmp = compareSqlValues(keyForComparison, plan.upperBound.value);
92
- if (cmp > 0 || (cmp === 0 && plan.upperBound.op === IndexConstraintOp.LT)) {
93
- break;
106
+ // Early termination: for ASC indexes break when past upper bound,
107
+ // for DESC indexes break when past lower bound (since values decrease in tree order)
108
+ if (isAscending) {
109
+ if (isDescFirstColumn && plan.lowerBound) {
110
+ const keyForComparison = Array.isArray(indexEntry.indexKey) ? indexEntry.indexKey[0] : indexEntry.indexKey;
111
+ const cmp = compareSqlValues(keyForComparison, plan.lowerBound.value);
112
+ if (cmp < 0 || (cmp === 0 && plan.lowerBound.op === IndexConstraintOp.GT)) {
113
+ break;
114
+ }
115
+ }
116
+ else if (!isDescFirstColumn && plan.upperBound) {
117
+ const keyForComparison = Array.isArray(indexEntry.indexKey) ? indexEntry.indexKey[0] : indexEntry.indexKey;
118
+ const cmp = compareSqlValues(keyForComparison, plan.upperBound.value);
119
+ if (cmp > 0 || (cmp === 0 && plan.upperBound.op === IndexConstraintOp.LT)) {
120
+ break;
121
+ }
94
122
  }
95
123
  }
96
124
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"base-cursor.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base-cursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-cursor.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base-cursor.ts"],"names":[],"mappings":"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"}
@@ -136,7 +136,7 @@ export class BaseLayer {
136
136
  defaultValue
137
137
  });
138
138
  const oldPrimaryTree = this.primaryTree;
139
- // First, reinitialize primary key functions with the updated schema (which already includes the new column)
139
+ // Reinitialize primary key functions with the updated schema (which already includes the new column)
140
140
  this.initializePrimaryKeyFunctions();
141
141
  // Create new primary tree with the updated schema and migrate data
142
142
  this.recreatePrimaryTreeWithNewColumn(oldPrimaryTree, defaultValue);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/base.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,8 @@ export declare class MemoryTableConnection {
11
11
  readLayer: Layer;
12
12
  pendingTransactionLayer: TransactionLayer | null;
13
13
  explicitTransaction: boolean;
14
- private savepoints;
14
+ /** Stack of savepoint snapshots, indexed by depth from TransactionManager */
15
+ private savepointStack;
15
16
  constructor(manager: MemoryTableManager, initialReadLayer: Layer);
16
17
  /** Begins a transaction by marking explicitTransaction. The pending layer is created lazily on first mutation */
17
18
  begin(): void;
@@ -21,18 +22,21 @@ export declare class MemoryTableConnection {
21
22
  rollback(): void;
22
23
  /** Helper method to clear transaction-related state */
23
24
  private clearTransactionState;
24
- /** Creates a savepoint with the given identifier */
25
- createSavepoint(savepointIndex: number): void;
25
+ /** Creates a savepoint at the given depth index */
26
+ createSavepoint(depth: number): void;
26
27
  /**
27
28
  * Creates a snapshot of a transaction layer by copying its effective data to a new independent layer.
28
29
  * This is necessary because BTree inheritance can cause shared mutable state issues.
29
30
  * The snapshot becomes immutable and independent of the source layer.
30
31
  */
31
32
  private createTransactionSnapshot;
32
- /** Releases a savepoint and any higher-numbered savepoints */
33
- releaseSavepoint(savepointIndex: number): void;
34
- /** Rolls back to a savepoint while preserving the transaction */
35
- rollbackToSavepoint(savepointIndex: number): void;
33
+ /** Releases savepoints from the top of the stack down to the target depth (exclusive) */
34
+ releaseSavepoint(targetDepth: number): void;
35
+ /**
36
+ * Rolls back to a savepoint at the target depth, restoring the transaction layer.
37
+ * The savepoint is preserved (per SQL standard) so it can be rolled back to again.
38
+ */
39
+ rollbackToSavepoint(targetDepth: number): void;
36
40
  clearSavepoints(): void;
37
41
  }
38
42
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUvD;;;GAGG;AACH,qBAAa,qBAAqB;IACjC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC;IACjB,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACxD,mBAAmB,EAAE,OAAO,CAAS;IAC5C,OAAO,CAAC,UAAU,CAA4C;gBAElD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK;IAMhE,iHAAiH;IACjH,KAAK,IAAI,IAAI;IAeb,sCAAsC;IAChC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,yCAAyC;IACzC,QAAQ,IAAI,IAAI;IAkBhB,uDAAuD;IACvD,OAAO,CAAC,qBAAqB;IAK7B,oDAAoD;IACpD,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IA0B7C;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA4CjC,8DAA8D;IAC9D,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAiB9C,iEAAiE;IACjE,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IA0B1C,eAAe,IAAI,IAAI;CAG9B"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAUvD;;;GAGG;AACH,qBAAa,qBAAqB;IACjC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,YAAY,EAAE,kBAAkB,CAAC;IAC1C,SAAS,EAAE,KAAK,CAAC;IACjB,uBAAuB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACxD,mBAAmB,EAAE,OAAO,CAAS;IAE5C,6EAA6E;IAC7E,OAAO,CAAC,cAAc,CAA0B;gBAEpC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK;IAMhE,iHAAiH;IACjH,KAAK,IAAI,IAAI;IAeb,sCAAsC;IAChC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,yCAAyC;IACzC,QAAQ,IAAI,IAAI;IAkBhB,uDAAuD;IACvD,OAAO,CAAC,qBAAqB;IAK7B,mDAAmD;IACnD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAsBpC;;;;OAIG;IACH,OAAO,CAAC,yBAAyB;IA4CjC,yFAAyF;IACzF,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM3C;;;OAGG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IA2BvC,eAAe,IAAI,IAAI;CAG9B"}
@@ -16,7 +16,8 @@ export class MemoryTableConnection {
16
16
  readLayer;
17
17
  pendingTransactionLayer = null;
18
18
  explicitTransaction = false; // Track if transaction was explicitly started
19
- savepoints = new Map();
19
+ /** Stack of savepoint snapshots, indexed by depth from TransactionManager */
20
+ savepointStack = [];
20
21
  constructor(manager, initialReadLayer) {
21
22
  this.connectionId = connectionCounter++;
22
23
  this.tableManager = manager;
@@ -61,29 +62,25 @@ export class MemoryTableConnection {
61
62
  }
62
63
  /** Helper method to clear transaction-related state */
63
64
  clearTransactionState() {
64
- this.savepoints.clear();
65
+ this.savepointStack = [];
65
66
  this.explicitTransaction = false;
66
67
  }
67
- /** Creates a savepoint with the given identifier */
68
- createSavepoint(savepointIndex) {
69
- if (savepointIndex < 0) {
70
- quereusError(`Invalid savepoint index: ${savepointIndex}. Must be non-negative.`, StatusCode.INTERNAL);
68
+ /** Creates a savepoint at the given depth index */
69
+ createSavepoint(depth) {
70
+ if (depth < 0) {
71
+ quereusError(`Invalid savepoint depth: ${depth}. Must be non-negative.`, StatusCode.INTERNAL);
71
72
  }
72
73
  if (!this.pendingTransactionLayer) {
73
74
  // Start an implicit transaction and create a fresh layer immediately so the savepoint has something to snapshot
74
75
  this.pendingTransactionLayer = new TransactionLayer(this.tableManager.currentCommittedLayer);
75
- // Not marking explicitTransaction; this is still auto-txn unless caller ran BEGIN earlier.
76
76
  }
77
- if (!this.pendingTransactionLayer) {
78
- quereusError(`Failed to create transaction for savepoint ${savepointIndex}`);
79
- }
80
- // Create a snapshot of the current transaction state
77
+ // Create a snapshot of the current transaction state and push onto the stack
81
78
  const savepointLayer = this.createTransactionSnapshot(this.pendingTransactionLayer);
82
- // Store the snapshot as the savepoint
83
- this.savepoints.set(savepointIndex, savepointLayer);
79
+ this.savepointStack.push(savepointLayer);
84
80
  // A SAVEPOINT implicitly puts the connection into explicit-transaction mode
85
81
  // so that subsequent statements do NOT auto-commit and invalidate the savepoint.
86
82
  this.explicitTransaction = true;
83
+ debugLog(`Connection %d: Created savepoint at depth %d (stack size: %d)`, this.connectionId, depth, this.savepointStack.length);
87
84
  }
88
85
  /**
89
86
  * Creates a snapshot of a transaction layer by copying its effective data to a new independent layer.
@@ -128,47 +125,38 @@ export class MemoryTableConnection {
128
125
  snapshotLayer.markCommitted();
129
126
  return snapshotLayer;
130
127
  }
131
- /** Releases a savepoint and any higher-numbered savepoints */
132
- releaseSavepoint(savepointIndex) {
128
+ /** Releases savepoints from the top of the stack down to the target depth (exclusive) */
129
+ releaseSavepoint(targetDepth) {
133
130
  if (!this.pendingTransactionLayer)
134
- return; // No transaction, nothing to release
135
- if (savepointIndex < 0) {
136
- warnLog(`Connection %d: Invalid savepoint index %d for release.`, this.connectionId, savepointIndex);
137
131
  return;
138
- }
139
- // Remove this savepoint and any with higher indices
140
- for (const idx of Array.from(this.savepoints.keys())) {
141
- if (idx >= savepointIndex) {
142
- this.savepoints.delete(idx);
143
- }
144
- }
145
- debugLog(`Connection %d: Released savepoint %d`, this.connectionId, savepointIndex);
132
+ this.savepointStack.length = targetDepth;
133
+ debugLog(`Connection %d: Released savepoints to depth %d`, this.connectionId, targetDepth);
146
134
  }
147
- /** Rolls back to a savepoint while preserving the transaction */
148
- rollbackToSavepoint(savepointIndex) {
135
+ /**
136
+ * Rolls back to a savepoint at the target depth, restoring the transaction layer.
137
+ * The savepoint is preserved (per SQL standard) so it can be rolled back to again.
138
+ */
139
+ rollbackToSavepoint(targetDepth) {
149
140
  if (!this.pendingTransactionLayer)
150
- return; // No transaction, nothing to rollback to
151
- if (savepointIndex < 0) {
152
- warnLog(`Connection %d: Invalid savepoint index %d for rollback.`, this.connectionId, savepointIndex);
153
141
  return;
154
- }
155
- const savepoint = this.savepoints.get(savepointIndex);
156
- if (!savepoint) {
157
- warnLog(`Connection %d: Savepoint %d not found for rollback.`, this.connectionId, savepointIndex);
142
+ if (targetDepth >= this.savepointStack.length) {
143
+ warnLog(`Connection %d: Savepoint depth %d out of range (stack size: %d)`, this.connectionId, targetDepth, this.savepointStack.length);
158
144
  return;
159
145
  }
160
- // Restore the transaction layer to the savepoint state
161
- // Instead of creating a new layer, we directly set the pending layer to the savepoint
162
- this.pendingTransactionLayer = savepoint;
163
- // Remove this savepoint and any with higher indices
164
- for (const idx of Array.from(this.savepoints.keys())) {
165
- if (idx >= savepointIndex) {
166
- this.savepoints.delete(idx);
167
- }
146
+ const savepoint = this.savepointStack[targetDepth];
147
+ // Create a fresh mutable layer that inherits from the savepoint's immutable snapshot.
148
+ // This allows further mutations after rollback.
149
+ this.pendingTransactionLayer = new TransactionLayer(savepoint);
150
+ // Enable change tracking if it was active on the snapshot
151
+ if (savepoint.isTrackingChanges()) {
152
+ this.pendingTransactionLayer.enableChangeTracking();
168
153
  }
154
+ // Remove savepoints above the target, but preserve the target itself
155
+ this.savepointStack.length = targetDepth + 1;
156
+ debugLog(`Connection %d: Rolled back to savepoint depth %d (preserved)`, this.connectionId, targetDepth);
169
157
  }
170
158
  clearSavepoints() {
171
- this.savepoints.clear();
159
+ this.savepointStack = [];
172
160
  }
173
161
  }
174
162
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/connection.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Database } from '../../../core/database.js';
2
2
  import { type TableSchema, type IndexSchema } from '../../../schema/table.js';
3
3
  import { type BTreeKey, type BTreeKeyForPrimary } from '../types.js';
4
- import { type Row, type UpdateResult } from '../../../common/types.js';
4
+ import { type SqlValue, type Row, type UpdateResult } from '../../../common/types.js';
5
5
  import type { Layer } from './interface.js';
6
6
  import { MemoryTableConnection } from './connection.js';
7
7
  import { ConflictResolution } from '../../../common/constants.js';
@@ -35,6 +35,20 @@ export declare class MemoryTableManager {
35
35
  private get primaryKeyFromRow();
36
36
  private get comparePrimaryKeys();
37
37
  get currentCommittedLayer(): Layer;
38
+ /**
39
+ * Returns committed layer statistics for cost-based optimization.
40
+ * Provides exact row count and per-index distinct counts without scanning.
41
+ */
42
+ getBaseLayerStats(): {
43
+ rowCount: number;
44
+ indexDistinctCounts: Map<string, number>;
45
+ };
46
+ /**
47
+ * Sample column values from the committed layer for histogram construction.
48
+ * Returns sorted non-null values for the specified column index.
49
+ * For tables with <= maxSample rows returns all values; otherwise systematic samples.
50
+ */
51
+ sampleColumnValues(columnIndex: number, maxSample?: number): SqlValue[];
38
52
  connect(): MemoryTableConnection;
39
53
  disconnect(connectionId: number): Promise<void>;
40
54
  commitTransaction(connection: MemoryTableConnection): Promise<void>;
@@ -55,8 +69,6 @@ export declare class MemoryTableManager {
55
69
  performMutation(connection: MemoryTableConnection, operation: 'insert' | 'update' | 'delete', values: Row | undefined, oldKeyValues?: Row, onConflict?: ConflictResolution): Promise<UpdateResult>;
56
70
  private validateMutationPermissions;
57
71
  private ensureTransactionLayer;
58
- private shouldSkipPkCheck;
59
- private cleanConflictResolutionFromValues;
60
72
  private performInsert;
61
73
  private performUpdate;
62
74
  private performUpdateWithPrimaryKeyChange;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAA0C,MAAM,0BAA0B,CAAC;AACtH,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAA6B,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,8BAA8B,CAAC;AACrF,OAAO,KAAK,EAAE,SAAS,IAAI,YAAY,EAAe,MAAM,wBAAwB,CAAC;AAErF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAK1D,qBAAa,kBAAkB;IAC9B,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAW,SAAS,WAA8B;IAElD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,WAAW,CAAiD;IACpE,SAAgB,UAAU,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IAEhC,OAAO,CAAC,mBAAmB,CAAuB;IAElD,2DAA2D;IAC3D,OAAO,CAAC,YAAY,CAAC,CAAqB;gBAGzC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,WAAW,EAC1B,QAAQ,GAAE,OAAe,EACzB,YAAY,CAAC,EAAE,kBAAkB;IAgBlC,OAAO,CAAC,6BAA6B;IAIrC;;OAEG;IACH,eAAe,IAAI,kBAAkB,GAAG,SAAS;IAIjD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,IAAW,qBAAqB,IAAI,KAAK,CAExC;IAEM,OAAO,IAAI,qBAAqB;IAM1B,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF1E,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+ExC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA4BpB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAkB1B,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAUxF,oBAAoB,CAAC,GAAG,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,KAAK,GAAG,GAAG,GAAG,IAAI;IAY9F,eAAe,CAC3B,UAAU,EAAE,qBAAqB,EACjC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACzC,MAAM,EAAE,GAAG,GAAG,SAAS,EACvB,YAAY,CAAC,EAAE,GAAG,EAClB,UAAU,GAAE,kBAA6C,GACvD,OAAO,CAAC,YAAY,CAAC;IAoCxB,OAAO,CAAC,2BAA2B;IAMnC,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iCAAiC;YAS3B,aAAa;YAqDb,aAAa;IAgD3B,OAAO,CAAC,iCAAiC;YA4B3B,aAAa;IAoBpB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAenC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DpD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8D7C,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE3E,WAAW,CAAC,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD1F,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C9D,gBAAgB,CACtB,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,QAAQ,EACb,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,KAAK,MAAM,GACjD,OAAO;IAgBG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAgBvB,wBAAwB;IA4BtC,+EAA+E;YACjE,sBAAsB;IAkCpC,iEAAiE;YACnD,yBAAyB;IAgBzB,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;CAezE"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../src/vtab/memory/layer/manager.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,54 @@ export class MemoryTableManager {
72
72
  get currentCommittedLayer() {
73
73
  return this._currentCommittedLayer;
74
74
  }
75
+ /**
76
+ * Returns committed layer statistics for cost-based optimization.
77
+ * Provides exact row count and per-index distinct counts without scanning.
78
+ */
79
+ getBaseLayerStats() {
80
+ const tree = this._currentCommittedLayer.getModificationTree('primary');
81
+ const rowCount = tree?.getCount() ?? 0;
82
+ const indexDistinctCounts = new Map();
83
+ for (const idx of this.tableSchema?.indexes ?? []) {
84
+ const idxTree = this._currentCommittedLayer.getSecondaryIndexTree?.(idx.name);
85
+ if (idxTree) {
86
+ indexDistinctCounts.set(idx.name, idxTree.getCount());
87
+ }
88
+ }
89
+ return { rowCount, indexDistinctCounts };
90
+ }
91
+ /**
92
+ * Sample column values from the committed layer for histogram construction.
93
+ * Returns sorted non-null values for the specified column index.
94
+ * For tables with <= maxSample rows returns all values; otherwise systematic samples.
95
+ */
96
+ sampleColumnValues(columnIndex, maxSample = 1000) {
97
+ const tree = this._currentCommittedLayer.getModificationTree('primary');
98
+ if (!tree)
99
+ return [];
100
+ const count = tree.getCount();
101
+ const values = [];
102
+ if (count === 0)
103
+ return values;
104
+ const step = count <= maxSample ? 1 : Math.floor(count / maxSample);
105
+ let i = 0;
106
+ for (const path of tree.ascending(tree.first())) {
107
+ if (i % step === 0) {
108
+ const row = tree.at(path);
109
+ if (row) {
110
+ const val = row[columnIndex];
111
+ if (val !== null && val !== undefined) {
112
+ values.push(val);
113
+ }
114
+ }
115
+ }
116
+ i++;
117
+ if (values.length >= maxSample)
118
+ break;
119
+ }
120
+ values.sort((a, b) => compareSqlValues(a, b));
121
+ return values;
122
+ }
75
123
  connect() {
76
124
  const connection = new MemoryTableConnection(this, this._currentCommittedLayer);
77
125
  this.connections.set(connection.connectionId, connection);
@@ -327,7 +375,6 @@ export class MemoryTableManager {
327
375
  const wasExplicitTransaction = connection.explicitTransaction;
328
376
  this.ensureTransactionLayer(connection);
329
377
  const targetLayer = connection.pendingTransactionLayer;
330
- this.cleanConflictResolutionFromValues(values);
331
378
  let result;
332
379
  switch (operation) {
333
380
  case 'insert':
@@ -368,17 +415,6 @@ export class MemoryTableManager {
368
415
  // transaction is auto-created (autocommit mode). Leave explicitTransaction flag as-is.
369
416
  }
370
417
  }
371
- shouldSkipPkCheck(values) {
372
- return !!(values && values._skipPkCheck);
373
- }
374
- cleanConflictResolutionFromValues(values) {
375
- if (values && values._onConflict) {
376
- delete values._onConflict;
377
- }
378
- if (values && values._skipPkCheck) {
379
- delete values._skipPkCheck;
380
- }
381
- }
382
418
  async performInsert(targetLayer, values, onConflict) {
383
419
  if (!values) {
384
420
  throw new QuereusError("INSERT requires values.", StatusCode.MISUSE);
@@ -394,27 +430,21 @@ export class MemoryTableManager {
394
430
  });
395
431
  const newRowData = validatedRow;
396
432
  const primaryKey = this.primaryKeyFromRow(newRowData);
397
- const skipPkCheck = this.shouldSkipPkCheck(values);
398
- // Only check for existing rows if not skipping PK checks (engine-level constraint checking handles this)
399
- if (!skipPkCheck) {
400
- const existingRow = this.lookupEffectiveRow(primaryKey, targetLayer);
401
- if (existingRow !== null) {
402
- if (onConflict === ConflictResolution.IGNORE) {
403
- return { status: 'ok', row: undefined };
404
- }
405
- if (onConflict === ConflictResolution.REPLACE) {
406
- // REPLACE: delete existing row and insert new one
407
- targetLayer.recordUpsert(primaryKey, newRowData, existingRow);
408
- return { status: 'ok', row: newRowData };
409
- }
410
- // Return constraint violation with existing row for UPSERT support
411
- return {
412
- status: 'constraint',
413
- constraint: 'unique',
414
- message: `UNIQUE constraint failed: ${this._tableName} PK.`,
415
- existingRow: existingRow
416
- };
433
+ const existingRow = this.lookupEffectiveRow(primaryKey, targetLayer);
434
+ if (existingRow !== null) {
435
+ if (onConflict === ConflictResolution.IGNORE) {
436
+ return { status: 'ok', row: undefined };
437
+ }
438
+ if (onConflict === ConflictResolution.REPLACE) {
439
+ targetLayer.recordUpsert(primaryKey, newRowData, existingRow);
440
+ return { status: 'ok', row: newRowData };
417
441
  }
442
+ return {
443
+ status: 'constraint',
444
+ constraint: 'unique',
445
+ message: `UNIQUE constraint failed: ${this._tableName} PK.`,
446
+ existingRow: existingRow
447
+ };
418
448
  }
419
449
  targetLayer.recordUpsert(primaryKey, newRowData, null);
420
450
  return { status: 'ok', row: newRowData };
@@ -487,7 +517,6 @@ export class MemoryTableManager {
487
517
  }
488
518
  renameTable(newName) {
489
519
  logger.operation('Rename Table', this._tableName, { newName });
490
- const oldName = this._tableName;
491
520
  this._tableName = newName;
492
521
  // Emit schema change event
493
522
  this.eventEmitter?.emitSchemaChange?.({
@@ -524,7 +553,9 @@ export class MemoryTableManager {
524
553
  }
525
554
  }
526
555
  // Check for NOT NULL constraint (could be explicit or from default behavior)
527
- if (newColumnSchema.notNull && defaultValue === null && !(defaultConstraint?.expr?.type === 'literal')) {
556
+ // Allow NOT NULL without DEFAULT if table is empty (SQLite-compatible)
557
+ const tableHasRows = this.baseLayer.primaryTree.at(this.baseLayer.primaryTree.first()) !== undefined;
558
+ if (newColumnSchema.notNull && defaultValue === null && !(defaultConstraint?.expr?.type === 'literal') && tableHasRows) {
528
559
  throw new QuereusError(`Cannot add NOT NULL col '${newColumnSchema.name}' without DEFAULT.`, StatusCode.CONSTRAINT);
529
560
  }
530
561
  const updatedColumnsSchema = Object.freeze([...this.tableSchema.columns, newColumnSchema]);
@@ -854,12 +885,29 @@ export class MemoryTableManager {
854
885
  const primaryTree = transactionLayer.getModificationTree('primary');
855
886
  if (!primaryTree)
856
887
  return;
857
- // Iterate through all entries in the transaction layer's primary tree
888
+ // Collect all rows first to avoid modifying the base tree while iterating
889
+ // the inherited BTree (whose parent IS the base tree).
890
+ const allRows = [];
858
891
  for (const path of primaryTree.ascending(primaryTree.first())) {
859
- const row = primaryTree.at(path);
860
- // Insert the row into the base layer
892
+ allRows.push(primaryTree.at(path));
893
+ }
894
+ logger.debugLog(`[Consolidate] Collected ${allRows.length} rows from transaction layer. Row widths: ${allRows.map(r => r.length).join(',')}`);
895
+ // Count base layer rows before
896
+ let baseCount = 0;
897
+ for (const _path of this.baseLayer.primaryTree.ascending(this.baseLayer.primaryTree.first())) {
898
+ baseCount++;
899
+ }
900
+ logger.debugLog(`[Consolidate] Base layer had ${baseCount} rows before copy`);
901
+ // Now insert collected rows into the base layer
902
+ for (const row of allRows) {
861
903
  this.baseLayer.primaryTree.insert(row);
862
904
  }
905
+ // Count base layer rows after
906
+ let baseCountAfter = 0;
907
+ for (const _path of this.baseLayer.primaryTree.ascending(this.baseLayer.primaryTree.first())) {
908
+ baseCountAfter++;
909
+ }
910
+ logger.debugLog(`[Consolidate] Base layer has ${baseCountAfter} rows after copy`);
863
911
  // Also need to rebuild secondary indexes in the base layer
864
912
  await this.baseLayer.rebuildAllSecondaryIndexes();
865
913
  }