@quereus/quereus 2.9.0 → 3.0.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 (339) hide show
  1. package/README.md +224 -222
  2. package/dist/src/core/database-assertions.d.ts +36 -16
  3. package/dist/src/core/database-assertions.d.ts.map +1 -1
  4. package/dist/src/core/database-assertions.js +222 -118
  5. package/dist/src/core/database-assertions.js.map +1 -1
  6. package/dist/src/core/database-transaction.d.ts +96 -13
  7. package/dist/src/core/database-transaction.d.ts.map +1 -1
  8. package/dist/src/core/database-transaction.js +294 -35
  9. package/dist/src/core/database-transaction.js.map +1 -1
  10. package/dist/src/core/database-watchers.d.ts +58 -0
  11. package/dist/src/core/database-watchers.d.ts.map +1 -0
  12. package/dist/src/core/database-watchers.js +206 -0
  13. package/dist/src/core/database-watchers.js.map +1 -0
  14. package/dist/src/core/database.d.ts +78 -5
  15. package/dist/src/core/database.d.ts.map +1 -1
  16. package/dist/src/core/database.js +120 -20
  17. package/dist/src/core/database.js.map +1 -1
  18. package/dist/src/core/statement.d.ts +9 -0
  19. package/dist/src/core/statement.d.ts.map +1 -1
  20. package/dist/src/core/statement.js +29 -0
  21. package/dist/src/core/statement.js.map +1 -1
  22. package/dist/src/core/table-handle.d.ts +45 -0
  23. package/dist/src/core/table-handle.d.ts.map +1 -0
  24. package/dist/src/core/table-handle.js +54 -0
  25. package/dist/src/core/table-handle.js.map +1 -0
  26. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  27. package/dist/src/func/builtins/conversion.js +12 -1
  28. package/dist/src/func/builtins/conversion.js.map +1 -1
  29. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  30. package/dist/src/func/builtins/explain.js +22 -8
  31. package/dist/src/func/builtins/explain.js.map +1 -1
  32. package/dist/src/func/builtins/generation.d.ts.map +1 -1
  33. package/dist/src/func/builtins/generation.js +26 -1
  34. package/dist/src/func/builtins/generation.js.map +1 -1
  35. package/dist/src/func/builtins/index.d.ts.map +1 -1
  36. package/dist/src/func/builtins/index.js +5 -1
  37. package/dist/src/func/builtins/index.js.map +1 -1
  38. package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
  39. package/dist/src/func/builtins/json-tvf.js +16 -2
  40. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  41. package/dist/src/func/builtins/schema.d.ts +4 -0
  42. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  43. package/dist/src/func/builtins/schema.js +270 -11
  44. package/dist/src/func/builtins/schema.js.map +1 -1
  45. package/dist/src/func/registration.d.ts +19 -1
  46. package/dist/src/func/registration.d.ts.map +1 -1
  47. package/dist/src/func/registration.js +8 -3
  48. package/dist/src/func/registration.js.map +1 -1
  49. package/dist/src/index.d.ts +7 -1
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/dist/src/index.js +5 -0
  52. package/dist/src/index.js.map +1 -1
  53. package/dist/src/parser/parser.d.ts.map +1 -1
  54. package/dist/src/parser/parser.js +12 -4
  55. package/dist/src/parser/parser.js.map +1 -1
  56. package/dist/src/planner/analysis/assertion-classifier.d.ts +71 -0
  57. package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -0
  58. package/dist/src/planner/analysis/assertion-classifier.js +286 -0
  59. package/dist/src/planner/analysis/assertion-classifier.js.map +1 -0
  60. package/dist/src/planner/analysis/assertion-hoist-cache.d.ts +34 -0
  61. package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -0
  62. package/dist/src/planner/analysis/assertion-hoist-cache.js +119 -0
  63. package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -0
  64. package/dist/src/planner/analysis/binding-extractor.d.ts +58 -0
  65. package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -0
  66. package/dist/src/planner/analysis/binding-extractor.js +110 -0
  67. package/dist/src/planner/analysis/binding-extractor.js.map +1 -0
  68. package/dist/src/planner/analysis/change-scope.d.ts +184 -0
  69. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -0
  70. package/dist/src/planner/analysis/change-scope.js +825 -0
  71. package/dist/src/planner/analysis/change-scope.js.map +1 -0
  72. package/dist/src/planner/analysis/check-extraction.d.ts +29 -0
  73. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/check-extraction.js +420 -0
  75. package/dist/src/planner/analysis/check-extraction.js.map +1 -0
  76. package/dist/src/planner/analysis/constraint-extractor.d.ts +47 -7
  77. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/constraint-extractor.js +169 -92
  79. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  80. package/dist/src/planner/analysis/partial-unique-extraction.d.ts +68 -0
  81. package/dist/src/planner/analysis/partial-unique-extraction.d.ts.map +1 -0
  82. package/dist/src/planner/analysis/partial-unique-extraction.js +347 -0
  83. package/dist/src/planner/analysis/partial-unique-extraction.js.map +1 -0
  84. package/dist/src/planner/analysis/predicate-conjuncts.d.ts +14 -0
  85. package/dist/src/planner/analysis/predicate-conjuncts.d.ts.map +1 -0
  86. package/dist/src/planner/analysis/predicate-conjuncts.js +31 -0
  87. package/dist/src/planner/analysis/predicate-conjuncts.js.map +1 -0
  88. package/dist/src/planner/analysis/predicate-shape.d.ts +52 -0
  89. package/dist/src/planner/analysis/predicate-shape.d.ts.map +1 -0
  90. package/dist/src/planner/analysis/predicate-shape.js +119 -0
  91. package/dist/src/planner/analysis/predicate-shape.js.map +1 -0
  92. package/dist/src/planner/analysis/sat-checker.d.ts +43 -0
  93. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -0
  94. package/dist/src/planner/analysis/sat-checker.js +393 -0
  95. package/dist/src/planner/analysis/sat-checker.js.map +1 -0
  96. package/dist/src/planner/building/table.d.ts.map +1 -1
  97. package/dist/src/planner/building/table.js +1 -1
  98. package/dist/src/planner/building/table.js.map +1 -1
  99. package/dist/src/planner/framework/characteristics.d.ts +10 -1
  100. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  101. package/dist/src/planner/framework/characteristics.js +24 -5
  102. package/dist/src/planner/framework/characteristics.js.map +1 -1
  103. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  104. package/dist/src/planner/framework/pass.js +46 -16
  105. package/dist/src/planner/framework/pass.js.map +1 -1
  106. package/dist/src/planner/framework/physical-utils.d.ts +0 -9
  107. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  108. package/dist/src/planner/framework/physical-utils.js +0 -31
  109. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  110. package/dist/src/planner/nodes/aggregate-node.d.ts +25 -0
  111. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  112. package/dist/src/planner/nodes/aggregate-node.js +75 -8
  113. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  114. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  115. package/dist/src/planner/nodes/alias-node.js +6 -1
  116. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  117. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  118. package/dist/src/planner/nodes/asof-scan-node.js +17 -3
  119. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  120. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  121. package/dist/src/planner/nodes/bloom-join-node.js +19 -9
  122. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  123. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  124. package/dist/src/planner/nodes/distinct-node.js +10 -6
  125. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  126. package/dist/src/planner/nodes/empty-relation-node.d.ts +27 -0
  127. package/dist/src/planner/nodes/empty-relation-node.d.ts.map +1 -0
  128. package/dist/src/planner/nodes/empty-relation-node.js +61 -0
  129. package/dist/src/planner/nodes/empty-relation-node.js.map +1 -0
  130. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  131. package/dist/src/planner/nodes/filter.js +65 -5
  132. package/dist/src/planner/nodes/filter.js.map +1 -1
  133. package/dist/src/planner/nodes/hash-aggregate.d.ts +1 -1
  134. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  135. package/dist/src/planner/nodes/hash-aggregate.js +8 -6
  136. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  137. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  138. package/dist/src/planner/nodes/join-node.js +12 -9
  139. package/dist/src/planner/nodes/join-node.js.map +1 -1
  140. package/dist/src/planner/nodes/join-utils.d.ts +24 -1
  141. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  142. package/dist/src/planner/nodes/join-utils.js +86 -0
  143. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  144. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  145. package/dist/src/planner/nodes/limit-offset.js +6 -1
  146. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  147. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  148. package/dist/src/planner/nodes/merge-join-node.js +19 -9
  149. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  150. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  151. package/dist/src/planner/nodes/ordinal-slice-node.js +5 -2
  152. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  153. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  154. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  155. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  156. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  157. package/dist/src/planner/nodes/plan-node.d.ts +186 -4
  158. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  159. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  160. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  161. package/dist/src/planner/nodes/project-node.js +75 -30
  162. package/dist/src/planner/nodes/project-node.js.map +1 -1
  163. package/dist/src/planner/nodes/reference.d.ts +24 -2
  164. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  165. package/dist/src/planner/nodes/reference.js +101 -1
  166. package/dist/src/planner/nodes/reference.js.map +1 -1
  167. package/dist/src/planner/nodes/retrieve-node.d.ts +9 -1
  168. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  169. package/dist/src/planner/nodes/retrieve-node.js +21 -0
  170. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  171. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  172. package/dist/src/planner/nodes/returning-node.js +64 -28
  173. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  174. package/dist/src/planner/nodes/scalar.d.ts +1 -0
  175. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  176. package/dist/src/planner/nodes/scalar.js +12 -0
  177. package/dist/src/planner/nodes/scalar.js.map +1 -1
  178. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  179. package/dist/src/planner/nodes/set-operation-node.js +15 -0
  180. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  181. package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
  182. package/dist/src/planner/nodes/single-row.js +3 -1
  183. package/dist/src/planner/nodes/single-row.js.map +1 -1
  184. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  185. package/dist/src/planner/nodes/sort.js +10 -3
  186. package/dist/src/planner/nodes/sort.js.map +1 -1
  187. package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -1
  188. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  189. package/dist/src/planner/nodes/stream-aggregate.js +8 -8
  190. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  191. package/dist/src/planner/nodes/table-access-nodes.d.ts +3 -3
  192. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  193. package/dist/src/planner/nodes/table-access-nodes.js +26 -8
  194. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  195. package/dist/src/planner/nodes/table-function-call.d.ts +4 -1
  196. package/dist/src/planner/nodes/table-function-call.d.ts.map +1 -1
  197. package/dist/src/planner/nodes/table-function-call.js +224 -14
  198. package/dist/src/planner/nodes/table-function-call.js.map +1 -1
  199. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  200. package/dist/src/planner/nodes/window-node.js +9 -2
  201. package/dist/src/planner/nodes/window-node.js.map +1 -1
  202. package/dist/src/planner/optimizer-tuning.d.ts +29 -1
  203. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
  204. package/dist/src/planner/optimizer-tuning.js +3 -0
  205. package/dist/src/planner/optimizer-tuning.js.map +1 -1
  206. package/dist/src/planner/optimizer.d.ts.map +1 -1
  207. package/dist/src/planner/optimizer.js +187 -0
  208. package/dist/src/planner/optimizer.js.map +1 -1
  209. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  210. package/dist/src/planner/rules/access/rule-select-access-path.js +22 -7
  211. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  212. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +30 -0
  213. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -0
  214. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +116 -0
  215. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -0
  216. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +7 -7
  217. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -1
  218. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +18 -16
  219. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -1
  220. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +56 -0
  221. package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -0
  222. package/dist/src/planner/rules/join/rule-join-elimination.js +326 -0
  223. package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -0
  224. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
  225. package/dist/src/planner/rules/join/rule-join-greedy-commute.js +10 -2
  226. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
  227. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +20 -0
  228. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -0
  229. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +181 -0
  230. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -0
  231. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +46 -0
  232. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts.map +1 -0
  233. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +156 -0
  234. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js.map +1 -0
  235. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +30 -0
  236. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -0
  237. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +60 -0
  238. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -0
  239. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +45 -0
  240. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -0
  241. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +210 -0
  242. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -0
  243. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.d.ts +29 -0
  244. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.d.ts.map +1 -0
  245. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +161 -0
  246. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -0
  247. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +39 -0
  248. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts.map +1 -0
  249. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +91 -0
  250. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js.map +1 -0
  251. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +35 -0
  252. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -0
  253. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +74 -0
  254. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -0
  255. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +27 -0
  256. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -0
  257. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +103 -0
  258. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -0
  259. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  260. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +1 -25
  261. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  262. package/dist/src/planner/scopes/global.js +2 -2
  263. package/dist/src/planner/scopes/global.js.map +1 -1
  264. package/dist/src/planner/type-utils.d.ts.map +1 -1
  265. package/dist/src/planner/type-utils.js +11 -0
  266. package/dist/src/planner/type-utils.js.map +1 -1
  267. package/dist/src/planner/util/fd-utils.d.ts +245 -0
  268. package/dist/src/planner/util/fd-utils.d.ts.map +1 -0
  269. package/dist/src/planner/util/fd-utils.js +1416 -0
  270. package/dist/src/planner/util/fd-utils.js.map +1 -0
  271. package/dist/src/planner/util/ind-utils.d.ts +79 -0
  272. package/dist/src/planner/util/ind-utils.d.ts.map +1 -0
  273. package/dist/src/planner/util/ind-utils.js +146 -0
  274. package/dist/src/planner/util/ind-utils.js.map +1 -0
  275. package/dist/src/planner/util/key-utils.d.ts +75 -14
  276. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  277. package/dist/src/planner/util/key-utils.js +234 -57
  278. package/dist/src/planner/util/key-utils.js.map +1 -1
  279. package/dist/src/runtime/delta-executor.d.ts +134 -0
  280. package/dist/src/runtime/delta-executor.d.ts.map +1 -0
  281. package/dist/src/runtime/delta-executor.js +382 -0
  282. package/dist/src/runtime/delta-executor.js.map +1 -0
  283. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  284. package/dist/src/runtime/emit/alter-table.js +52 -16
  285. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  286. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  287. package/dist/src/runtime/emit/create-assertion.js +3 -2
  288. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  289. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  290. package/dist/src/runtime/emit/dml-executor.js +40 -13
  291. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  292. package/dist/src/runtime/emit/drop-assertion.js +1 -1
  293. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  294. package/dist/src/runtime/emit/empty-relation.d.ts +5 -0
  295. package/dist/src/runtime/emit/empty-relation.d.ts.map +1 -0
  296. package/dist/src/runtime/emit/empty-relation.js +11 -0
  297. package/dist/src/runtime/emit/empty-relation.js.map +1 -0
  298. package/dist/src/runtime/foreign-key-actions.d.ts +16 -0
  299. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  300. package/dist/src/runtime/foreign-key-actions.js +81 -1
  301. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  302. package/dist/src/runtime/register.d.ts.map +1 -1
  303. package/dist/src/runtime/register.js +2 -0
  304. package/dist/src/runtime/register.js.map +1 -1
  305. package/dist/src/schema/assertion.d.ts +8 -0
  306. package/dist/src/schema/assertion.d.ts.map +1 -1
  307. package/dist/src/schema/change-events.d.ts +5 -1
  308. package/dist/src/schema/change-events.d.ts.map +1 -1
  309. package/dist/src/schema/change-events.js.map +1 -1
  310. package/dist/src/schema/function.d.ts +65 -1
  311. package/dist/src/schema/function.d.ts.map +1 -1
  312. package/dist/src/schema/function.js +31 -0
  313. package/dist/src/schema/function.js.map +1 -1
  314. package/dist/src/schema/manager.d.ts +33 -0
  315. package/dist/src/schema/manager.d.ts.map +1 -1
  316. package/dist/src/schema/manager.js +95 -4
  317. package/dist/src/schema/manager.js.map +1 -1
  318. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  319. package/dist/src/schema/rename-rewriter.js +303 -102
  320. package/dist/src/schema/rename-rewriter.js.map +1 -1
  321. package/dist/src/schema/table.d.ts +21 -2
  322. package/dist/src/schema/table.d.ts.map +1 -1
  323. package/dist/src/schema/table.js +17 -8
  324. package/dist/src/schema/table.js.map +1 -1
  325. package/dist/src/types/temporal-types.d.ts.map +1 -1
  326. package/dist/src/types/temporal-types.js +32 -0
  327. package/dist/src/types/temporal-types.js.map +1 -1
  328. package/dist/src/vtab/events.d.ts +9 -0
  329. package/dist/src/vtab/events.d.ts.map +1 -1
  330. package/dist/src/vtab/events.js +19 -0
  331. package/dist/src/vtab/events.js.map +1 -1
  332. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  333. package/dist/src/vtab/memory/layer/manager.js +24 -5
  334. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  335. package/dist/src/vtab/memory/utils/predicate.d.ts +2 -1
  336. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  337. package/dist/src/vtab/memory/utils/predicate.js +32 -1
  338. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  339. package/package.json +3 -3
@@ -8,7 +8,7 @@
8
8
  * - Change log tracking for assertion evaluation
9
9
  * - Coordinating commits across virtual table connections
10
10
  */
11
- import type { SqlValue } from '../common/types.js';
11
+ import type { Row, SqlValue } from '../common/types.js';
12
12
  import type { VirtualTableConnection } from '../vtab/connection.js';
13
13
  import type { DatabaseEventEmitter } from './database-events.js';
14
14
  import type { DeferredConstraintQueue } from '../runtime/deferred-constraint-queue.js';
@@ -31,6 +31,23 @@ export interface TransactionManagerContext {
31
31
  runGlobalAssertions(): Promise<void>;
32
32
  /** Run deferred row constraints before commit */
33
33
  runDeferredRowConstraints(): Promise<void>;
34
+ /** Fire post-commit watchers (Database.watch). Errors logged, never rolled
35
+ * back. Invoked after all connections commit but before the change log
36
+ * is cleared. */
37
+ runPostCommitWatchers(): Promise<void>;
38
+ }
39
+ /**
40
+ * Op kind for a captured row change.
41
+ */
42
+ export type CapturedOp = 'insert' | 'update' | 'delete';
43
+ /**
44
+ * Per-table capture specification — which non-PK columns to retain on each row
45
+ * change. PK is always captured implicitly. Used by DeltaExecutor consumers to
46
+ * register projection demand at plan-compile time.
47
+ */
48
+ export interface CaptureSpec {
49
+ /** Column indices on the base table (PK columns are always captured implicitly). */
50
+ extraColumns: ReadonlySet<number>;
34
51
  }
35
52
  /**
36
53
  * Manages transaction state and lifecycle for a Database instance.
@@ -44,12 +61,14 @@ export declare class TransactionManager {
44
61
  private isAutocommit;
45
62
  private inTransaction;
46
63
  private transactionSource;
47
- /** Per-transaction change tracking: base table name serialized PK tuples */
64
+ /** Per-transaction change tracking: base table → PK JSON → CapturedRow */
48
65
  private changeLog;
49
66
  /** Savepoint layers for change tracking */
50
67
  private changeLogLayers;
51
68
  /** Stack of active savepoint names (ordered by creation) */
52
69
  private savepointStack;
70
+ /** Per-base-table projection capture demand registered by DeltaExecutor consumers. */
71
+ private captureDemand;
53
72
  /** Flag to prevent new connections from starting transactions during constraint evaluation */
54
73
  private evaluatingDeferredConstraints;
55
74
  /** Flag indicating we're in a coordinated multi-connection commit */
@@ -67,6 +86,13 @@ export declare class TransactionManager {
67
86
  isEvaluatingDeferredConstraints(): boolean;
68
87
  /** Check if we're in a coordinated commit (allows sibling layer validation) */
69
88
  isInCoordinatedCommit(): boolean;
89
+ /**
90
+ * Current savepoint stack depth (number of active savepoints). Used by
91
+ * `Database.registerConnection` to replay the active stack onto connections
92
+ * registered mid-transaction so that subsequent rollback-to / release calls
93
+ * targeting earlier depths are in-range on the new connection.
94
+ */
95
+ getActiveSavepointDepth(): number;
70
96
  /**
71
97
  * Begins a transaction on all active connections.
72
98
  * Called by both explicit BEGIN and implicit transaction start.
@@ -102,20 +128,71 @@ export declare class TransactionManager {
102
128
  * Run deferred row constraints with proper flag management.
103
129
  */
104
130
  runDeferredRowConstraints(): Promise<void>;
105
- /** Serialize a composite primary key tuple for set storage */
131
+ /**
132
+ * Register projection capture demand for a base table. Future record calls
133
+ * for that table will retain values for the union of registered columns
134
+ * (PK is always retained implicitly). Returns a dispose handle that removes
135
+ * this spec from the demand set.
136
+ */
137
+ registerCaptureSpec(baseTable: string, spec: CaptureSpec): () => void;
138
+ /** Serialize a tuple of SqlValues for stable Map keying. */
106
139
  private serializeKeyTuple;
107
- /** Add a key tuple to the current change log for a base table */
108
- private addChange;
109
- /** Record an INSERT operation */
110
- recordInsert(baseTable: string, newKey: SqlValue[]): void;
111
- /** Record a DELETE operation */
112
- recordDelete(baseTable: string, oldKey: SqlValue[]): void;
113
- /** Record an UPDATE operation */
114
- recordUpdate(baseTable: string, oldKey: SqlValue[], newKey: SqlValue[]): void;
140
+ /** The active (top) layer that should receive change records. */
141
+ private activeLayer;
142
+ /** Project a row onto the given column indices. */
143
+ private projectRow;
144
+ /**
145
+ * Build the OLD/NEW projection columns for a base table — PK indices first,
146
+ * then any registered extraColumns not already in the PK, preserving a
147
+ * deterministic order. Returns a tuple of indices used for projection.
148
+ */
149
+ private captureColumnsFor;
150
+ /**
151
+ * Merge an incoming op into the active layer with last-write-wins semantics:
152
+ * - INSERT after DELETE → UPDATE (rare; same PK reappears with new values)
153
+ * - UPDATE after INSERT → INSERT (with refreshed newProjection)
154
+ * - DELETE after INSERT → drop entry (net no-op)
155
+ * - DELETE after UPDATE → DELETE with carrying-over oldProjection from the first OLD
156
+ * - INSERT/UPDATE chains preserve the original `oldProjection` so the OLD
157
+ * state seen at the start of the layer is never overwritten by later
158
+ * intra-layer activity on the same PK.
159
+ */
160
+ private mergeRecord;
161
+ /**
162
+ * Same merge state machine as `mergeRecord`, but writes to an arbitrary
163
+ * target layer. Used both for normal record paths (via `mergeRecord`) and
164
+ * for savepoint RELEASE (merging the released layer into its parent), so
165
+ * the two paths cannot drift.
166
+ */
167
+ private mergeRecordInto;
168
+ /** Record an INSERT operation, capturing the new row's projected columns. */
169
+ recordInsert(baseTable: string, newRow: Row, pkIndices: readonly number[]): void;
170
+ /** Record a DELETE operation, capturing the old row's projected columns. */
171
+ recordDelete(baseTable: string, oldRow: Row, pkIndices: readonly number[]): void;
172
+ /**
173
+ * Record an UPDATE operation. When the PK changes value, this is recorded
174
+ * as a DELETE of the old PK followed by an INSERT of the new PK. Otherwise
175
+ * it is recorded as a single UPDATE with both projections.
176
+ */
177
+ recordUpdate(baseTable: string, oldRow: Row, newRow: Row, pkIndices: readonly number[]): void;
115
178
  /** Get the set of changed base tables */
116
179
  getChangedBaseTables(): Set<string>;
117
- /** Gather all changed PK tuples for a base table across layers */
180
+ /** Gather all changed PK tuples for a base table across layers (back-compat). */
118
181
  getChangedKeyTuples(base: string): SqlValue[][];
182
+ /**
183
+ * Return the de-duplicated set of value tuples for the requested columns,
184
+ * across all layers and ops. For UPDATE, yields both OLD and NEW
185
+ * projections when any captured column changed value. The supplied
186
+ * `columnIndices` must be a subset of the registered captureSpec columns
187
+ * (or PK columns) — values for non-captured columns are not retained.
188
+ *
189
+ * Column indices are positions in the base table's column space; this
190
+ * function translates them into positions inside the cached projection
191
+ * tuple using the per-base capture column layout (PK first, then extras
192
+ * in insertion order). To avoid recomputing that layout on each call, the
193
+ * caller passes the columns it wants and we resolve via the table demand.
194
+ */
195
+ getChangedTuples(base: string, columnIndices: readonly number[], pkIndices: readonly number[]): SqlValue[][];
119
196
  /** Clear all change tracking */
120
197
  clearChangeLog(): void;
121
198
  /**
@@ -147,7 +224,13 @@ export declare class TransactionManager {
147
224
  private beginSavepointLayer;
148
225
  /** Rollback the current savepoint layer */
149
226
  private rollbackSavepointLayer;
150
- /** Release the current savepoint layer, merging into parent */
227
+ /**
228
+ * Release the current savepoint layer, merging into the parent through
229
+ * the same `mergeRecordInto` state machine the record path uses. This
230
+ * keeps the two paths consistent — in particular, an UPDATE-after-UPDATE
231
+ * preserves the parent layer's `oldProjection` so per-group dispatch
232
+ * still sees the row's pre-savepoint state.
233
+ */
151
234
  private releaseSavepointLayer;
152
235
  }
153
236
  //# sourceMappingURL=database-transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-transaction.d.ts","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-transaction.d.ts","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
@@ -26,12 +26,14 @@ export class TransactionManager {
26
26
  isAutocommit = true;
27
27
  inTransaction = false;
28
28
  transactionSource = null;
29
- /** Per-transaction change tracking: base table name serialized PK tuples */
29
+ /** Per-transaction change tracking: base table → PK JSON → CapturedRow */
30
30
  changeLog = new Map();
31
31
  /** Savepoint layers for change tracking */
32
32
  changeLogLayers = [];
33
33
  /** Stack of active savepoint names (ordered by creation) */
34
34
  savepointStack = [];
35
+ /** Per-base-table projection capture demand registered by DeltaExecutor consumers. */
36
+ captureDemand = new Map();
35
37
  /** Flag to prevent new connections from starting transactions during constraint evaluation */
36
38
  evaluatingDeferredConstraints = false;
37
39
  /** Flag indicating we're in a coordinated multi-connection commit */
@@ -66,6 +68,15 @@ export class TransactionManager {
66
68
  isInCoordinatedCommit() {
67
69
  return this.inCoordinatedCommit;
68
70
  }
71
+ /**
72
+ * Current savepoint stack depth (number of active savepoints). Used by
73
+ * `Database.registerConnection` to replay the active stack onto connections
74
+ * registered mid-transaction so that subsequent rollback-to / release calls
75
+ * targeting earlier depths are in-range on the new connection.
76
+ */
77
+ getActiveSavepointDepth() {
78
+ return this.savepointStack.length;
79
+ }
69
80
  // ============================================================================
70
81
  // Transaction Control
71
82
  // ============================================================================
@@ -144,6 +155,15 @@ export class TransactionManager {
144
155
  finally {
145
156
  this.inCoordinatedCommit = false;
146
157
  }
158
+ // Fire post-commit watchers while the change log is still alive.
159
+ // Errors are swallowed inside the manager — watchers do not roll
160
+ // back the commit.
161
+ try {
162
+ await this.ctx.runPostCommitWatchers();
163
+ }
164
+ catch (err) {
165
+ errorLog('Post-commit watcher dispatch threw: %O', err);
166
+ }
147
167
  }
148
168
  catch (e) {
149
169
  // On pre-commit assertion failure (or commit error), rollback all connections
@@ -242,44 +262,207 @@ export class TransactionManager {
242
262
  }
243
263
  }
244
264
  // ============================================================================
265
+ // Capture Spec Registration
266
+ // ============================================================================
267
+ /**
268
+ * Register projection capture demand for a base table. Future record calls
269
+ * for that table will retain values for the union of registered columns
270
+ * (PK is always retained implicitly). Returns a dispose handle that removes
271
+ * this spec from the demand set.
272
+ */
273
+ registerCaptureSpec(baseTable, spec) {
274
+ const key = baseTable.toLowerCase();
275
+ let demand = this.captureDemand.get(key);
276
+ if (!demand) {
277
+ demand = { specs: new Set(), union: new Set() };
278
+ this.captureDemand.set(key, demand);
279
+ }
280
+ demand.specs.add(spec);
281
+ for (const c of spec.extraColumns)
282
+ demand.union.add(c);
283
+ let disposed = false;
284
+ return () => {
285
+ if (disposed)
286
+ return;
287
+ disposed = true;
288
+ const d = this.captureDemand.get(key);
289
+ if (!d)
290
+ return;
291
+ d.specs.delete(spec);
292
+ if (d.specs.size === 0) {
293
+ this.captureDemand.delete(key);
294
+ }
295
+ else {
296
+ // Recompute union from remaining specs
297
+ const u = new Set();
298
+ for (const s of d.specs) {
299
+ for (const c of s.extraColumns)
300
+ u.add(c);
301
+ }
302
+ d.union = u;
303
+ }
304
+ };
305
+ }
306
+ // ============================================================================
245
307
  // Change Log Management
246
308
  // ============================================================================
247
- /** Serialize a composite primary key tuple for set storage */
309
+ /** Serialize a tuple of SqlValues for stable Map keying. */
248
310
  serializeKeyTuple(values) {
249
311
  return JSON.stringify(values);
250
312
  }
251
- /** Add a key tuple to the current change log for a base table */
252
- addChange(baseTable, keyTuple) {
253
- const target = this.changeLogLayers.length > 0
313
+ /** The active (top) layer that should receive change records. */
314
+ activeLayer() {
315
+ return this.changeLogLayers.length > 0
254
316
  ? this.changeLogLayers[this.changeLogLayers.length - 1]
255
317
  : this.changeLog;
256
- const key = baseTable.toLowerCase();
257
- if (!target.has(key))
258
- target.set(key, new Set());
259
- target.get(key).add(this.serializeKeyTuple(keyTuple));
260
318
  }
261
- /** Record an INSERT operation */
262
- recordInsert(baseTable, newKey) {
263
- this.addChange(baseTable, newKey);
319
+ /** Project a row onto the given column indices. */
320
+ projectRow(row, columns) {
321
+ const out = [];
322
+ for (const i of columns)
323
+ out.push(row[i]);
324
+ return out;
325
+ }
326
+ /**
327
+ * Build the OLD/NEW projection columns for a base table — PK indices first,
328
+ * then any registered extraColumns not already in the PK, preserving a
329
+ * deterministic order. Returns a tuple of indices used for projection.
330
+ */
331
+ captureColumnsFor(base, pkIndices) {
332
+ const demand = this.captureDemand.get(base);
333
+ const cols = [...pkIndices];
334
+ if (demand && demand.union.size > 0) {
335
+ const seen = new Set(pkIndices);
336
+ for (const c of demand.union) {
337
+ if (!seen.has(c)) {
338
+ cols.push(c);
339
+ seen.add(c);
340
+ }
341
+ }
342
+ }
343
+ return cols;
264
344
  }
265
- /** Record a DELETE operation */
266
- recordDelete(baseTable, oldKey) {
267
- this.addChange(baseTable, oldKey);
345
+ /**
346
+ * Merge an incoming op into the active layer with last-write-wins semantics:
347
+ * - INSERT after DELETE → UPDATE (rare; same PK reappears with new values)
348
+ * - UPDATE after INSERT → INSERT (with refreshed newProjection)
349
+ * - DELETE after INSERT → drop entry (net no-op)
350
+ * - DELETE after UPDATE → DELETE with carrying-over oldProjection from the first OLD
351
+ * - INSERT/UPDATE chains preserve the original `oldProjection` so the OLD
352
+ * state seen at the start of the layer is never overwritten by later
353
+ * intra-layer activity on the same PK.
354
+ */
355
+ mergeRecord(base, pkKey, incoming) {
356
+ const layer = this.activeLayer();
357
+ this.mergeRecordInto(layer, base.toLowerCase(), pkKey, incoming);
268
358
  }
269
- /** Record an UPDATE operation */
270
- recordUpdate(baseTable, oldKey, newKey) {
271
- this.addChange(baseTable, oldKey);
272
- // If the PK changed, also record the new key
273
- if (this.serializeKeyTuple(oldKey) !== this.serializeKeyTuple(newKey)) {
274
- this.addChange(baseTable, newKey);
359
+ /**
360
+ * Same merge state machine as `mergeRecord`, but writes to an arbitrary
361
+ * target layer. Used both for normal record paths (via `mergeRecord`) and
362
+ * for savepoint RELEASE (merging the released layer into its parent), so
363
+ * the two paths cannot drift.
364
+ */
365
+ mergeRecordInto(layer, lower, pkKey, incoming) {
366
+ let tableMap = layer.get(lower);
367
+ if (!tableMap) {
368
+ tableMap = new Map();
369
+ layer.set(lower, tableMap);
370
+ }
371
+ const existing = tableMap.get(pkKey);
372
+ if (!existing) {
373
+ tableMap.set(pkKey, incoming);
374
+ return;
375
+ }
376
+ const prev = existing.op;
377
+ const next = incoming.op;
378
+ if (prev === 'insert' && next === 'delete') {
379
+ tableMap.delete(pkKey);
380
+ return;
381
+ }
382
+ if (prev === 'insert' && next === 'update') {
383
+ existing.newProjection = incoming.newProjection ?? existing.newProjection;
384
+ return;
385
+ }
386
+ if (prev === 'insert' && next === 'insert') {
387
+ existing.newProjection = incoming.newProjection ?? existing.newProjection;
388
+ return;
389
+ }
390
+ if (prev === 'update' && next === 'update') {
391
+ // Preserve the earliest oldProjection (existing) and pick up the
392
+ // latest newProjection (incoming).
393
+ existing.newProjection = incoming.newProjection ?? existing.newProjection;
394
+ return;
395
+ }
396
+ if (prev === 'update' && next === 'delete') {
397
+ existing.op = 'delete';
398
+ existing.newProjection = undefined;
399
+ return;
400
+ }
401
+ if (prev === 'delete' && next === 'insert') {
402
+ existing.op = 'update';
403
+ existing.newProjection = incoming.newProjection;
404
+ return;
405
+ }
406
+ if (prev === 'delete' && next === 'delete') {
407
+ // Idempotent: a second delete with the same PK can't happen against
408
+ // committed state, but keep the existing oldProjection.
409
+ return;
410
+ }
411
+ // Defensive fallback for any unanticipated combination — replace.
412
+ tableMap.set(pkKey, incoming);
413
+ }
414
+ /** Record an INSERT operation, capturing the new row's projected columns. */
415
+ recordInsert(baseTable, newRow, pkIndices) {
416
+ const lower = baseTable.toLowerCase();
417
+ const cols = this.captureColumnsFor(lower, pkIndices);
418
+ const pkProjection = this.projectRow(newRow, pkIndices);
419
+ const newProjection = this.projectRow(newRow, cols);
420
+ this.mergeRecord(lower, this.serializeKeyTuple(pkProjection), {
421
+ op: 'insert',
422
+ newProjection,
423
+ });
424
+ }
425
+ /** Record a DELETE operation, capturing the old row's projected columns. */
426
+ recordDelete(baseTable, oldRow, pkIndices) {
427
+ const lower = baseTable.toLowerCase();
428
+ const cols = this.captureColumnsFor(lower, pkIndices);
429
+ const pkProjection = this.projectRow(oldRow, pkIndices);
430
+ const oldProjection = this.projectRow(oldRow, cols);
431
+ this.mergeRecord(lower, this.serializeKeyTuple(pkProjection), {
432
+ op: 'delete',
433
+ oldProjection,
434
+ });
435
+ }
436
+ /**
437
+ * Record an UPDATE operation. When the PK changes value, this is recorded
438
+ * as a DELETE of the old PK followed by an INSERT of the new PK. Otherwise
439
+ * it is recorded as a single UPDATE with both projections.
440
+ */
441
+ recordUpdate(baseTable, oldRow, newRow, pkIndices) {
442
+ const lower = baseTable.toLowerCase();
443
+ const cols = this.captureColumnsFor(lower, pkIndices);
444
+ const oldPk = this.projectRow(oldRow, pkIndices);
445
+ const newPk = this.projectRow(newRow, pkIndices);
446
+ const oldPkKey = this.serializeKeyTuple(oldPk);
447
+ const newPkKey = this.serializeKeyTuple(newPk);
448
+ const oldProjection = this.projectRow(oldRow, cols);
449
+ const newProjection = this.projectRow(newRow, cols);
450
+ if (oldPkKey === newPkKey) {
451
+ this.mergeRecord(lower, oldPkKey, { op: 'update', oldProjection, newProjection });
452
+ }
453
+ else {
454
+ // PK changed: delete-then-insert semantics so per-group/per-row
455
+ // dispatch sees both keys.
456
+ this.mergeRecord(lower, oldPkKey, { op: 'delete', oldProjection });
457
+ this.mergeRecord(lower, newPkKey, { op: 'insert', newProjection });
275
458
  }
276
459
  }
277
460
  /** Get the set of changed base tables */
278
461
  getChangedBaseTables() {
279
462
  const result = new Set();
280
463
  const collect = (m) => {
281
- for (const [t, s] of m) {
282
- if (s.size > 0)
464
+ for (const [t, rowMap] of m) {
465
+ if (rowMap.size > 0)
283
466
  result.add(t);
284
467
  }
285
468
  };
@@ -288,22 +471,94 @@ export class TransactionManager {
288
471
  collect(layer);
289
472
  return result;
290
473
  }
291
- /** Gather all changed PK tuples for a base table across layers */
474
+ /** Gather all changed PK tuples for a base table across layers (back-compat). */
292
475
  getChangedKeyTuples(base) {
293
476
  const lower = base.toLowerCase();
294
477
  const tuples = [];
478
+ const seen = new Set();
295
479
  const collect = (m) => {
296
- const set = m.get(lower);
297
- if (!set)
480
+ const rowMap = m.get(lower);
481
+ if (!rowMap)
298
482
  return;
299
- for (const s of set)
300
- tuples.push(JSON.parse(s));
483
+ for (const pkKey of rowMap.keys()) {
484
+ if (seen.has(pkKey))
485
+ continue;
486
+ seen.add(pkKey);
487
+ tuples.push(JSON.parse(pkKey));
488
+ }
301
489
  };
302
490
  collect(this.changeLog);
303
491
  for (const layer of this.changeLogLayers)
304
492
  collect(layer);
305
493
  return tuples;
306
494
  }
495
+ /**
496
+ * Return the de-duplicated set of value tuples for the requested columns,
497
+ * across all layers and ops. For UPDATE, yields both OLD and NEW
498
+ * projections when any captured column changed value. The supplied
499
+ * `columnIndices` must be a subset of the registered captureSpec columns
500
+ * (or PK columns) — values for non-captured columns are not retained.
501
+ *
502
+ * Column indices are positions in the base table's column space; this
503
+ * function translates them into positions inside the cached projection
504
+ * tuple using the per-base capture column layout (PK first, then extras
505
+ * in insertion order). To avoid recomputing that layout on each call, the
506
+ * caller passes the columns it wants and we resolve via the table demand.
507
+ */
508
+ getChangedTuples(base, columnIndices, pkIndices) {
509
+ const lower = base.toLowerCase();
510
+ const projectionCols = this.captureColumnsFor(lower, pkIndices);
511
+ const indexByTableCol = new Map();
512
+ for (let i = 0; i < projectionCols.length; i++) {
513
+ indexByTableCol.set(projectionCols[i], i);
514
+ }
515
+ // Verify every requested column is captured; if not, the caller didn't
516
+ // register the right spec.
517
+ const projectionIndices = [];
518
+ for (const c of columnIndices) {
519
+ const idx = indexByTableCol.get(c);
520
+ if (idx === undefined) {
521
+ throw new QuereusError(`getChangedTuples: column ${c} on ${base} was not registered for capture`, StatusCode.INTERNAL);
522
+ }
523
+ projectionIndices.push(idx);
524
+ }
525
+ const out = [];
526
+ const seen = new Set();
527
+ const emit = (projection) => {
528
+ if (!projection)
529
+ return;
530
+ const tuple = [];
531
+ for (const i of projectionIndices)
532
+ tuple.push(projection[i]);
533
+ const tkey = JSON.stringify(tuple);
534
+ if (seen.has(tkey))
535
+ return;
536
+ seen.add(tkey);
537
+ out.push(tuple);
538
+ };
539
+ const collect = (m) => {
540
+ const rowMap = m.get(lower);
541
+ if (!rowMap)
542
+ return;
543
+ for (const rec of rowMap.values()) {
544
+ if (rec.op === 'insert') {
545
+ emit(rec.newProjection);
546
+ }
547
+ else if (rec.op === 'delete') {
548
+ emit(rec.oldProjection);
549
+ }
550
+ else {
551
+ // UPDATE: emit OLD and NEW so group-membership transitions are visible.
552
+ emit(rec.oldProjection);
553
+ emit(rec.newProjection);
554
+ }
555
+ }
556
+ };
557
+ collect(this.changeLog);
558
+ for (const layer of this.changeLogLayers)
559
+ collect(layer);
560
+ return out;
561
+ }
307
562
  /** Clear all change tracking */
308
563
  clearChangeLog() {
309
564
  this.changeLog.clear();
@@ -389,7 +644,13 @@ export class TransactionManager {
389
644
  this.ctx.getDeferredConstraints().rollbackLayer();
390
645
  this.ctx.getEventEmitter().rollbackSavepointLayer();
391
646
  }
392
- /** Release the current savepoint layer, merging into parent */
647
+ /**
648
+ * Release the current savepoint layer, merging into the parent through
649
+ * the same `mergeRecordInto` state machine the record path uses. This
650
+ * keeps the two paths consistent — in particular, an UPDATE-after-UPDATE
651
+ * preserves the parent layer's `oldProjection` so per-group dispatch
652
+ * still sees the row's pre-savepoint state.
653
+ */
393
654
  releaseSavepointLayer() {
394
655
  const top = this.changeLogLayers.pop();
395
656
  if (!top)
@@ -397,12 +658,10 @@ export class TransactionManager {
397
658
  const target = this.changeLogLayers.length > 0
398
659
  ? this.changeLogLayers[this.changeLogLayers.length - 1]
399
660
  : this.changeLog;
400
- for (const [table, set] of top) {
401
- if (!target.has(table))
402
- target.set(table, new Set());
403
- const tgt = target.get(table);
404
- for (const k of set)
405
- tgt.add(k);
661
+ for (const [table, rowMap] of top) {
662
+ for (const [pkKey, rec] of rowMap) {
663
+ this.mergeRecordInto(target, table, pkKey, rec);
664
+ }
406
665
  }
407
666
  this.ctx.getDeferredConstraints().releaseLayer();
408
667
  this.ctx.getEventEmitter().releaseSavepointLayer();
@@ -1 +1 @@
1
- {"version":3,"file":"database-transaction.js","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-transaction.js","sourceRoot":"","sources":["../../../src/core/database-transaction.ts"],"names":[],"mappings":"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"}