@quereus/quereus 4.3.2 → 4.4.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 (396) hide show
  1. package/README.md +5 -0
  2. package/dist/src/common/types.d.ts +9 -0
  3. package/dist/src/common/types.d.ts.map +1 -1
  4. package/dist/src/common/types.js.map +1 -1
  5. package/dist/src/core/database-events.d.ts +49 -0
  6. package/dist/src/core/database-events.d.ts.map +1 -1
  7. package/dist/src/core/database-events.js +148 -0
  8. package/dist/src/core/database-events.js.map +1 -1
  9. package/dist/src/core/database-external-changes.d.ts +2 -2
  10. package/dist/src/core/database-external-changes.d.ts.map +1 -1
  11. package/dist/src/core/database-external-changes.js +12 -9
  12. package/dist/src/core/database-external-changes.js.map +1 -1
  13. package/dist/src/core/database-materialized-views-apply.d.ts +156 -14
  14. package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -1
  15. package/dist/src/core/database-materialized-views-apply.js +370 -65
  16. package/dist/src/core/database-materialized-views-apply.js.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.d.ts +66 -1
  18. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  19. package/dist/src/core/database-materialized-views-plan-builders.js +368 -8
  20. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  21. package/dist/src/core/database-materialized-views-plans.d.ts +257 -30
  22. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
  23. package/dist/src/core/database-materialized-views.d.ts +99 -42
  24. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  25. package/dist/src/core/database-materialized-views.js +198 -121
  26. package/dist/src/core/database-materialized-views.js.map +1 -1
  27. package/dist/src/core/database.d.ts +5 -0
  28. package/dist/src/core/database.d.ts.map +1 -1
  29. package/dist/src/core/database.js +41 -18
  30. package/dist/src/core/database.js.map +1 -1
  31. package/dist/src/core/internal-statement-cache.d.ts +18 -0
  32. package/dist/src/core/internal-statement-cache.d.ts.map +1 -0
  33. package/dist/src/core/internal-statement-cache.js +211 -0
  34. package/dist/src/core/internal-statement-cache.js.map +1 -0
  35. package/dist/src/func/builtins/aggregate.d.ts +13 -12
  36. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  37. package/dist/src/func/builtins/aggregate.js +146 -62
  38. package/dist/src/func/builtins/aggregate.js.map +1 -1
  39. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  40. package/dist/src/func/builtins/builtin-window-functions.js +63 -48
  41. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  42. package/dist/src/func/registration.d.ts +19 -1
  43. package/dist/src/func/registration.d.ts.map +1 -1
  44. package/dist/src/func/registration.js +41 -0
  45. package/dist/src/func/registration.js.map +1 -1
  46. package/dist/src/index.d.ts +8 -8
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +12 -11
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/parser/parser.d.ts +6 -0
  51. package/dist/src/parser/parser.d.ts.map +1 -1
  52. package/dist/src/parser/parser.js +45 -34
  53. package/dist/src/parser/parser.js.map +1 -1
  54. package/dist/src/planner/analysis/comparison-collation.d.ts +2 -0
  55. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  56. package/dist/src/planner/analysis/comparison-collation.js +1 -1
  57. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  58. package/dist/src/planner/analysis/equi-correlation.d.ts +26 -0
  59. package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -0
  60. package/dist/src/planner/analysis/equi-correlation.js +62 -0
  61. package/dist/src/planner/analysis/equi-correlation.js.map +1 -0
  62. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
  63. package/dist/src/planner/analysis/expression-fingerprint.js +29 -0
  64. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
  65. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +60 -18
  66. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  67. package/dist/src/planner/analysis/query-rewrite-matcher.js +95 -42
  68. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  69. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
  70. package/dist/src/planner/analysis/sat-checker.js +43 -4
  71. package/dist/src/planner/analysis/sat-checker.js.map +1 -1
  72. package/dist/src/planner/analysis/scalar-subqueries.d.ts +28 -0
  73. package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/scalar-subqueries.js +60 -0
  75. package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -0
  76. package/dist/src/planner/building/delete.d.ts.map +1 -1
  77. package/dist/src/planner/building/delete.js +10 -3
  78. package/dist/src/planner/building/delete.js.map +1 -1
  79. package/dist/src/planner/building/expression.d.ts.map +1 -1
  80. package/dist/src/planner/building/expression.js +87 -6
  81. package/dist/src/planner/building/expression.js.map +1 -1
  82. package/dist/src/planner/building/foreign-key-builder.d.ts +44 -1
  83. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  84. package/dist/src/planner/building/foreign-key-builder.js +54 -0
  85. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  86. package/dist/src/planner/building/insert.d.ts.map +1 -1
  87. package/dist/src/planner/building/insert.js +9 -12
  88. package/dist/src/planner/building/insert.js.map +1 -1
  89. package/dist/src/planner/building/select.d.ts.map +1 -1
  90. package/dist/src/planner/building/select.js +15 -1
  91. package/dist/src/planner/building/select.js.map +1 -1
  92. package/dist/src/planner/building/update.d.ts.map +1 -1
  93. package/dist/src/planner/building/update.js +13 -4
  94. package/dist/src/planner/building/update.js.map +1 -1
  95. package/dist/src/planner/building/with.d.ts.map +1 -1
  96. package/dist/src/planner/building/with.js +5 -8
  97. package/dist/src/planner/building/with.js.map +1 -1
  98. package/dist/src/planner/cache/materialization-advisory.d.ts +33 -0
  99. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  100. package/dist/src/planner/cache/materialization-advisory.js +164 -28
  101. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  102. package/dist/src/planner/cache/reference-graph.d.ts +0 -4
  103. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  104. package/dist/src/planner/cache/reference-graph.js +5 -13
  105. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  106. package/dist/src/planner/cost/index.d.ts +28 -7
  107. package/dist/src/planner/cost/index.d.ts.map +1 -1
  108. package/dist/src/planner/cost/index.js +26 -0
  109. package/dist/src/planner/cost/index.js.map +1 -1
  110. package/dist/src/planner/framework/pass.js +3 -3
  111. package/dist/src/planner/nodes/cache-node.d.ts +18 -2
  112. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  113. package/dist/src/planner/nodes/cache-node.js +42 -3
  114. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  115. package/dist/src/planner/nodes/cte-node.d.ts +15 -1
  116. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  117. package/dist/src/planner/nodes/cte-node.js +12 -2
  118. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  119. package/dist/src/planner/nodes/dml-executor-node.d.ts +0 -9
  120. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  121. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  122. package/dist/src/planner/nodes/recursive-cte-node.d.ts +30 -1
  123. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  124. package/dist/src/planner/nodes/recursive-cte-node.js +30 -3
  125. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  126. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  127. package/dist/src/planner/nodes/scalar.js +26 -3
  128. package/dist/src/planner/nodes/scalar.js.map +1 -1
  129. package/dist/src/planner/optimizer.d.ts.map +1 -1
  130. package/dist/src/planner/optimizer.js +129 -8
  131. package/dist/src/planner/optimizer.js.map +1 -1
  132. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  133. package/dist/src/planner/rules/access/rule-select-access-path.js +43 -18
  134. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  135. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  136. package/dist/src/planner/rules/cache/rule-cte-optimization.js +8 -1
  137. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  138. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -1
  139. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +72 -54
  140. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
  141. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
  142. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +6 -0
  143. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
  144. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts +25 -0
  145. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -0
  146. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +176 -0
  147. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -0
  148. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts +31 -0
  149. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts.map +1 -0
  150. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js +68 -0
  151. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js.map +1 -0
  152. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  153. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +1 -54
  154. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  155. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +8 -1
  156. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  157. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts +191 -0
  158. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts.map +1 -0
  159. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js +627 -0
  160. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js.map +1 -0
  161. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +10 -1
  162. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  163. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +242 -51
  164. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  165. package/dist/src/runtime/cache/shared-cache.d.ts +7 -0
  166. package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -1
  167. package/dist/src/runtime/cache/shared-cache.js +34 -1
  168. package/dist/src/runtime/cache/shared-cache.js.map +1 -1
  169. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  170. package/dist/src/runtime/deferred-constraint-queue.js +10 -0
  171. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  172. package/dist/src/runtime/emit/aggregate-setup.d.ts +49 -0
  173. package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -0
  174. package/dist/src/runtime/emit/aggregate-setup.js +99 -0
  175. package/dist/src/runtime/emit/aggregate-setup.js.map +1 -0
  176. package/dist/src/runtime/emit/aggregate.d.ts +2 -3
  177. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  178. package/dist/src/runtime/emit/aggregate.js +10 -84
  179. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  180. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  181. package/dist/src/runtime/emit/alter-table.js +348 -165
  182. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  183. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  184. package/dist/src/runtime/emit/asof-scan.js +6 -0
  185. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  186. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  187. package/dist/src/runtime/emit/between.js +32 -3
  188. package/dist/src/runtime/emit/between.js.map +1 -1
  189. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  190. package/dist/src/runtime/emit/binary.js +22 -2
  191. package/dist/src/runtime/emit/binary.js.map +1 -1
  192. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  193. package/dist/src/runtime/emit/bloom-join.js +24 -3
  194. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  195. package/dist/src/runtime/emit/cache.d.ts +7 -3
  196. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  197. package/dist/src/runtime/emit/cache.js +23 -6
  198. package/dist/src/runtime/emit/cache.js.map +1 -1
  199. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  200. package/dist/src/runtime/emit/cast.js +10 -23
  201. package/dist/src/runtime/emit/cast.js.map +1 -1
  202. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  203. package/dist/src/runtime/emit/constraint-check.js +41 -44
  204. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  205. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  206. package/dist/src/runtime/emit/create-view.js +6 -0
  207. package/dist/src/runtime/emit/create-view.js.map +1 -1
  208. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  209. package/dist/src/runtime/emit/cte.js +43 -20
  210. package/dist/src/runtime/emit/cte.js.map +1 -1
  211. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  212. package/dist/src/runtime/emit/distinct.js +6 -3
  213. package/dist/src/runtime/emit/distinct.js.map +1 -1
  214. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  215. package/dist/src/runtime/emit/dml-executor.js +241 -115
  216. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  217. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  218. package/dist/src/runtime/emit/hash-aggregate.js +16 -65
  219. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  220. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  221. package/dist/src/runtime/emit/insert.js +18 -7
  222. package/dist/src/runtime/emit/insert.js.map +1 -1
  223. package/dist/src/runtime/emit/join.js +5 -0
  224. package/dist/src/runtime/emit/join.js.map +1 -1
  225. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +14 -1
  226. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  227. package/dist/src/runtime/emit/materialized-view-helpers.js +38 -7
  228. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  229. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  230. package/dist/src/runtime/emit/materialized-view.js +47 -6
  231. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  232. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  233. package/dist/src/runtime/emit/merge-join.js +18 -8
  234. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  235. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  236. package/dist/src/runtime/emit/recursive-cte.js +59 -1
  237. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  238. package/dist/src/runtime/emit/set-object-tags.d.ts +8 -0
  239. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  240. package/dist/src/runtime/emit/set-object-tags.js +8 -0
  241. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  242. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  243. package/dist/src/runtime/emit/set-operation.js +7 -4
  244. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  245. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  246. package/dist/src/runtime/emit/sort.js +5 -2
  247. package/dist/src/runtime/emit/sort.js.map +1 -1
  248. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  249. package/dist/src/runtime/emit/subquery.js +113 -13
  250. package/dist/src/runtime/emit/subquery.js.map +1 -1
  251. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +7 -0
  252. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  253. package/dist/src/runtime/emit/temporal-arithmetic.js +15 -7
  254. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  255. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  256. package/dist/src/runtime/emit/update.js +44 -3
  257. package/dist/src/runtime/emit/update.js.map +1 -1
  258. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  259. package/dist/src/runtime/emit/window.js +72 -55
  260. package/dist/src/runtime/emit/window.js.map +1 -1
  261. package/dist/src/runtime/foreign-key-actions.d.ts +36 -1
  262. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  263. package/dist/src/runtime/foreign-key-actions.js +238 -116
  264. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  265. package/dist/src/runtime/parallel-driver.d.ts +20 -1
  266. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  267. package/dist/src/runtime/parallel-driver.js +23 -1
  268. package/dist/src/runtime/parallel-driver.js.map +1 -1
  269. package/dist/src/runtime/types.d.ts +54 -0
  270. package/dist/src/runtime/types.d.ts.map +1 -1
  271. package/dist/src/runtime/types.js.map +1 -1
  272. package/dist/src/schema/catalog-persistability.d.ts +58 -0
  273. package/dist/src/schema/catalog-persistability.d.ts.map +1 -0
  274. package/dist/src/schema/catalog-persistability.js +87 -0
  275. package/dist/src/schema/catalog-persistability.js.map +1 -0
  276. package/dist/src/schema/catalog.d.ts +17 -1
  277. package/dist/src/schema/catalog.d.ts.map +1 -1
  278. package/dist/src/schema/catalog.js +25 -3
  279. package/dist/src/schema/catalog.js.map +1 -1
  280. package/dist/src/schema/constraint-builder.d.ts +20 -22
  281. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  282. package/dist/src/schema/constraint-builder.js +43 -36
  283. package/dist/src/schema/constraint-builder.js.map +1 -1
  284. package/dist/src/schema/ddl-generator.d.ts +23 -0
  285. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  286. package/dist/src/schema/ddl-generator.js +27 -0
  287. package/dist/src/schema/ddl-generator.js.map +1 -1
  288. package/dist/src/schema/function.d.ts +109 -1
  289. package/dist/src/schema/function.d.ts.map +1 -1
  290. package/dist/src/schema/function.js.map +1 -1
  291. package/dist/src/schema/manager.d.ts +28 -0
  292. package/dist/src/schema/manager.d.ts.map +1 -1
  293. package/dist/src/schema/manager.js +82 -14
  294. package/dist/src/schema/manager.js.map +1 -1
  295. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  296. package/dist/src/schema/schema-differ.js +51 -12
  297. package/dist/src/schema/schema-differ.js.map +1 -1
  298. package/dist/src/schema/unique-enforcement.d.ts +31 -0
  299. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  300. package/dist/src/schema/unique-enforcement.js +37 -1
  301. package/dist/src/schema/unique-enforcement.js.map +1 -1
  302. package/dist/src/schema/window-function.d.ts +30 -10
  303. package/dist/src/schema/window-function.d.ts.map +1 -1
  304. package/dist/src/schema/window-function.js +20 -16
  305. package/dist/src/schema/window-function.js.map +1 -1
  306. package/dist/src/types/cast-semantics.d.ts +43 -0
  307. package/dist/src/types/cast-semantics.d.ts.map +1 -0
  308. package/dist/src/types/cast-semantics.js +59 -0
  309. package/dist/src/types/cast-semantics.js.map +1 -0
  310. package/dist/src/types/index.d.ts +1 -1
  311. package/dist/src/types/index.d.ts.map +1 -1
  312. package/dist/src/types/index.js +1 -1
  313. package/dist/src/types/index.js.map +1 -1
  314. package/dist/src/types/json-type.d.ts.map +1 -1
  315. package/dist/src/types/json-type.js +31 -10
  316. package/dist/src/types/json-type.js.map +1 -1
  317. package/dist/src/types/logical-type.d.ts +22 -0
  318. package/dist/src/types/logical-type.d.ts.map +1 -1
  319. package/dist/src/types/logical-type.js.map +1 -1
  320. package/dist/src/types/temporal-types.d.ts.map +1 -1
  321. package/dist/src/types/temporal-types.js +33 -11
  322. package/dist/src/types/temporal-types.js.map +1 -1
  323. package/dist/src/types/validation.d.ts +39 -1
  324. package/dist/src/types/validation.d.ts.map +1 -1
  325. package/dist/src/types/validation.js +60 -0
  326. package/dist/src/types/validation.js.map +1 -1
  327. package/dist/src/util/ast-spine-clone.d.ts +23 -0
  328. package/dist/src/util/ast-spine-clone.d.ts.map +1 -0
  329. package/dist/src/util/ast-spine-clone.js +41 -0
  330. package/dist/src/util/ast-spine-clone.js.map +1 -0
  331. package/dist/src/util/coercion.d.ts +13 -0
  332. package/dist/src/util/coercion.d.ts.map +1 -1
  333. package/dist/src/util/coercion.js +10 -1
  334. package/dist/src/util/coercion.js.map +1 -1
  335. package/dist/src/util/comparison.d.ts +89 -0
  336. package/dist/src/util/comparison.d.ts.map +1 -1
  337. package/dist/src/util/comparison.js +156 -27
  338. package/dist/src/util/comparison.js.map +1 -1
  339. package/dist/src/vtab/manifest.d.ts +7 -0
  340. package/dist/src/vtab/manifest.d.ts.map +1 -1
  341. package/dist/src/vtab/memory/connection.d.ts +14 -1
  342. package/dist/src/vtab/memory/connection.d.ts.map +1 -1
  343. package/dist/src/vtab/memory/connection.js +20 -2
  344. package/dist/src/vtab/memory/connection.js.map +1 -1
  345. package/dist/src/vtab/memory/layer/base.d.ts +6 -1
  346. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  347. package/dist/src/vtab/memory/layer/base.js +14 -5
  348. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  349. package/dist/src/vtab/memory/layer/connection.d.ts +17 -0
  350. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  351. package/dist/src/vtab/memory/layer/connection.js +26 -0
  352. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  353. package/dist/src/vtab/memory/layer/manager.d.ts +96 -13
  354. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  355. package/dist/src/vtab/memory/layer/manager.js +595 -119
  356. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  357. package/dist/src/vtab/memory/layer/plan-filter.d.ts +41 -20
  358. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  359. package/dist/src/vtab/memory/layer/plan-filter.js +57 -27
  360. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  361. package/dist/src/vtab/memory/layer/row-convert.d.ts +21 -0
  362. package/dist/src/vtab/memory/layer/row-convert.d.ts.map +1 -0
  363. package/dist/src/vtab/memory/layer/row-convert.js +30 -0
  364. package/dist/src/vtab/memory/layer/row-convert.js.map +1 -0
  365. package/dist/src/vtab/memory/layer/scan-layer.d.ts +6 -3
  366. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  367. package/dist/src/vtab/memory/layer/scan-layer.js +69 -36
  368. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  369. package/dist/src/vtab/memory/layer/transaction.d.ts +127 -13
  370. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  371. package/dist/src/vtab/memory/layer/transaction.js +214 -65
  372. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  373. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  374. package/dist/src/vtab/memory/module.js +9 -2
  375. package/dist/src/vtab/memory/module.js.map +1 -1
  376. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  377. package/dist/src/vtab/memory/table.js +3 -2
  378. package/dist/src/vtab/memory/table.js.map +1 -1
  379. package/dist/src/vtab/memory/types.d.ts +27 -1
  380. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  381. package/dist/src/vtab/memory/types.js +16 -1
  382. package/dist/src/vtab/memory/types.js.map +1 -1
  383. package/dist/src/vtab/memory/utils/primary-key.d.ts +9 -0
  384. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  385. package/dist/src/vtab/memory/utils/primary-key.js +11 -0
  386. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  387. package/dist/src/vtab/module.d.ts +63 -0
  388. package/dist/src/vtab/module.d.ts.map +1 -1
  389. package/dist/src/vtab/table.d.ts +24 -6
  390. package/dist/src/vtab/table.d.ts.map +1 -1
  391. package/dist/src/vtab/table.js.map +1 -1
  392. package/package.json +3 -3
  393. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +0 -19
  394. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +0 -1
  395. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +0 -53
  396. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  * resolvers, derived-row and parent-side referential enforcement, and the small key-compare
7
7
  * helpers they share. Extracted from database-materialized-views.ts as free functions over
8
8
  * {@link MaterializedViewManagerContext}; the manager's orchestration methods
9
- * (`maintainRowTime`, `flushDeferredRebuilds`, `lookupCoveringConflicts`) call in.
9
+ * (`maintainRowTime`, `flushDeferredMaintenance`, `lookupCoveringConflicts`) call in.
10
10
  */
11
11
  import { QuereusError } from '../common/errors.js';
12
12
  import { StatusCode } from '../common/types.js';
@@ -18,6 +18,26 @@ import { validateDerivedRowImage } from './derived-row-validator.js';
18
18
  import { buildPrimaryKeyFromValues } from '../vtab/memory/utils/primary-key.js';
19
19
  import { compareSqlValuesFast, rowsValueIdentical } from '../util/comparison.js';
20
20
  import { canonKeyValues } from './database-materialized-views-analysis.js';
21
+ import { cloneInitialValue } from '../func/registration.js';
22
+ /**
23
+ * Resolve a plan's backing table to its {@link BackingHost} + coordinated
24
+ * {@link VirtualTableConnection} — the two handles every apply path writes through.
25
+ * Shared by the per-row appliers, the batched residual flush, and the full-rebuild
26
+ * `'replace-all'` diff; throws INTERNAL when the backing table has vanished (an MV in a
27
+ * broken state).
28
+ */
29
+ export async function resolveBackingApplyTarget(ctx,
30
+ // Structural (not the MaintenancePlan union) so the shared ForwardResidualPlan
31
+ // subset the join arm reuses resolves through it too.
32
+ plan, cache) {
33
+ const backing = ctx.schemaManager.getTable(plan.backingSchema, plan.backingTableName);
34
+ if (!backing) {
35
+ throw new QuereusError(`Internal error: backing table '${plan.backingTableName}' for materialized view '${plan.mv.name}' not found`, StatusCode.INTERNAL);
36
+ }
37
+ const host = backingHost(ctx, backing);
38
+ const connection = await getBackingConnection(ctx, host, `${plan.backingSchema}.${plan.backingTableName}`, cache);
39
+ return { host, connection };
40
+ }
21
41
  /**
22
42
  * Compute an `'inverse-projection'` plan's per-row backing delta, apply it, and
23
43
  * return the **effective** {@link BackingRowChange}(s) the backing layer realized.
@@ -85,12 +105,7 @@ export async function applyInverseProjection(ctx, plan, change, cache) {
85
105
  }
86
106
  if (ops.length === 0)
87
107
  return [];
88
- const backing = ctx.schemaManager.getTable(plan.backingSchema, plan.backingTableName);
89
- if (!backing) {
90
- throw new QuereusError(`Internal error: backing table '${plan.backingTableName}' for materialized view '${plan.mv.name}' not found`, StatusCode.INTERNAL);
91
- }
92
- const host = backingHost(ctx, backing);
93
- const connection = await getBackingConnection(ctx, host, `${plan.backingSchema}.${plan.backingTableName}`, cache);
108
+ const { host, connection } = await resolveBackingApplyTarget(ctx, plan, cache);
94
109
  return host.applyMaintenance(connection, ops);
95
110
  }
96
111
  /**
@@ -314,23 +329,36 @@ export async function runScheduler(ctx, scheduler, params) {
314
329
  * joined row per key) arms — both bind on the forward driving source via
315
330
  * {@link ForwardResidualPlan}; the only difference is the binding (group vs PK).
316
331
  *
317
- * Per-row recompute is correct without per-statement batching: every change to a key
318
- * triggers a full recompute of that key's slice from live (reads-own-writes) state, so
319
- * the last change to touch a key writes the authoritative backing row. Batching/dedup
320
- * across a whole statement is an affordability optimization deferred with the
321
- * statement-flush boundary (see the ticket handoff).
332
+ * This is the **cold** (no statement batch in scope) inline path. A statement-batched
333
+ * caller instead accumulates the same deduped keys via
334
+ * {@link collectForwardResidualKeys} and recomputes each distinct key once at the
335
+ * end-of-statement flush ({@link computeForwardResidualOps}) sound for the same
336
+ * last-write-wins reason: every recompute reads live (reads-own-writes) state, so
337
+ * running it once at flush produces exactly what the last per-row run would have.
322
338
  */
323
339
  export async function applyForwardResidual(ctx, plan, change, cache) {
324
- // Distinct affected keys (OLD ∪ NEW), deduped on the backing-key values: a
325
- // non-key-changing update recomputes the group once; a key-changing update
326
- // recomputes both the old and the new group.
327
340
  const affected = new Map();
341
+ collectForwardResidualKeys(plan, change, affected);
342
+ const ops = await computeForwardResidualOps(ctx, plan, affected.values());
343
+ if (ops.length === 0)
344
+ return [];
345
+ const { host, connection } = await resolveBackingApplyTarget(ctx, plan, cache);
346
+ return host.applyMaintenance(connection, ops);
347
+ }
348
+ /**
349
+ * Derive one changed source row's affected forward binding key(s) (OLD ∪ NEW) and add
350
+ * them to `into`, deduped on the canonical backing-key values: a non-key-changing update
351
+ * recomputes the group once; a key-changing update recomputes both the old and the new
352
+ * group. `into` may span a whole statement (the per-statement {@link ResidualKeyBatch})
353
+ * or a single change (the cold inline path) — the dedup is identical either way.
354
+ */
355
+ export function collectForwardResidualKeys(plan, change, into) {
328
356
  const addFrom = (row) => {
329
357
  const keyVals = plan.backingPkSourceCols.map(sc => row[sc]);
330
358
  const dedupKey = canonKeyValues(keyVals);
331
- if (affected.has(dedupKey))
359
+ if (into.has(dedupKey))
332
360
  return;
333
- affected.set(dedupKey, {
361
+ into.set(dedupKey, {
334
362
  keyTuple: plan.bindColumns.map(c => row[c]),
335
363
  keyVals,
336
364
  deleteKey: buildPrimaryKeyFromValues(keyVals, plan.backingPkDefinition),
@@ -344,8 +372,16 @@ export async function applyForwardResidual(ctx, plan, change, cache) {
344
372
  addFrom(change.oldRow);
345
373
  addFrom(change.newRow);
346
374
  }
375
+ }
376
+ /**
377
+ * Run the forward key-filtered residual once per affected key and build the keyed-diff
378
+ * ops: upsert the recomputed slice, or point-delete an emptied key. Pure op computation —
379
+ * the caller owns connection resolution and the single {@link BackingHost.applyMaintenance}
380
+ * call, so a statement flush can batch many keys' ops into one host call.
381
+ */
382
+ export async function computeForwardResidualOps(ctx, plan, keys) {
347
383
  const ops = [];
348
- for (const { keyTuple, keyVals, deleteKey } of affected.values()) {
384
+ for (const { keyTuple, keyVals, deleteKey } of keys) {
349
385
  const recomputed = await runResidual(ctx, plan.residualScheduler, plan.bindParamPrefix, keyTuple);
350
386
  // Keep only the recomputed rows whose backing key equals the affected key.
351
387
  // The residual for key K must only contribute K's slice; any other row is
@@ -371,15 +407,7 @@ export async function applyForwardResidual(ctx, plan, change, cache) {
371
407
  ops.push({ kind: 'upsert', row });
372
408
  }
373
409
  }
374
- if (ops.length === 0)
375
- return [];
376
- const backing = ctx.schemaManager.getTable(plan.backingSchema, plan.backingTableName);
377
- if (!backing) {
378
- throw new QuereusError(`Internal error: backing table '${plan.backingTableName}' for materialized view '${plan.mv.name}' not found`, StatusCode.INTERNAL);
379
- }
380
- const host = backingHost(ctx, backing);
381
- const connection = await getBackingConnection(ctx, host, `${plan.backingSchema}.${plan.backingTableName}`, cache);
382
- return host.applyMaintenance(connection, ops);
410
+ return ops;
383
411
  }
384
412
  /**
385
413
  * True iff `row`'s backing primary-key columns equal `keyVals` (the affected binding
@@ -444,17 +472,31 @@ export async function applyJoinResidual(ctx, plan, change, changedBase, cache) {
444
472
  *
445
473
  * A `T`-side membership change (insert/delete/FK-move) is the *forward* path's job and fires
446
474
  * its own maintenance. Returns the effective {@link BackingRowChange}(s) for the MV-over-MV
447
- * cascade. Per-row recompute is correct without batching for the same
448
- * last-write-wins-against-live-state reason as {@link applyForwardResidual}.
475
+ * cascade. This is the cold inline path; a statement-batched caller accumulates via
476
+ * {@link collectLookupResidualKeys} and recomputes at flush ({@link computeLookupResidualOps})
477
+ * — sound for the same last-write-wins-against-live-state reason as
478
+ * {@link applyForwardResidual}.
449
479
  */
450
480
  export async function applyLookupResidual(ctx, plan, change, cache) {
451
- // Distinct affected lookup keys (OLD ∪ NEW), deduped on `P`'s PK values.
452
481
  const affected = new Map();
482
+ collectLookupResidualKeys(plan, change, affected);
483
+ const ops = await computeLookupResidualOps(ctx, plan, affected.values());
484
+ if (ops.length === 0)
485
+ return [];
486
+ const { host, connection } = await resolveBackingApplyTarget(ctx, plan, cache);
487
+ return host.applyMaintenance(connection, ops);
488
+ }
489
+ /**
490
+ * Derive one changed lookup-side (`P`) row's affected lookup key(s) (OLD ∪ NEW) and add
491
+ * them to `into`, deduped on `P`'s canonical PK values. The statement-batch counterpart
492
+ * of the derivation inside {@link applyLookupResidual}.
493
+ */
494
+ export function collectLookupResidualKeys(plan, change, into) {
453
495
  const addFrom = (row) => {
454
496
  const keyTuple = plan.lookupBindColumns.map(c => row[c]);
455
497
  const dedupKey = canonKeyValues(keyTuple);
456
- if (!affected.has(dedupKey))
457
- affected.set(dedupKey, keyTuple);
498
+ if (!into.has(dedupKey))
499
+ into.set(dedupKey, keyTuple);
458
500
  };
459
501
  if (change.op === 'insert')
460
502
  addFrom(change.newRow);
@@ -464,8 +506,17 @@ export async function applyLookupResidual(ctx, plan, change, cache) {
464
506
  addFrom(change.oldRow);
465
507
  addFrom(change.newRow);
466
508
  }
509
+ }
510
+ /**
511
+ * Run the lookup-keyed residual variant once per affected `P` key and build the ops —
512
+ * the delete-capable membership diff when the plan carries
513
+ * `lookupMembershipResidualScheduler`, upsert-only otherwise (see
514
+ * {@link applyLookupResidual} for the soundness argument). Pure op computation; the
515
+ * caller owns connection resolution and the single applyMaintenance call.
516
+ */
517
+ export async function computeLookupResidualOps(ctx, plan, keys) {
467
518
  const ops = [];
468
- for (const keyTuple of affected.values()) {
519
+ for (const keyTuple of keys) {
469
520
  const recomputed = await runResidual(ctx, plan.lookupResidualScheduler, plan.lookupBindParamPrefix, keyTuple);
470
521
  // Delete-capable (P-referencing WHERE): keyed diff of the membership residual
471
522
  // (WHERE stripped) against the in-scope recompute — delete ONLY the membership
@@ -488,15 +539,7 @@ export async function applyLookupResidual(ctx, plan, change, cache) {
488
539
  for (const row of recomputed)
489
540
  ops.push({ kind: 'upsert', row });
490
541
  }
491
- if (ops.length === 0)
492
- return [];
493
- const backing = ctx.schemaManager.getTable(plan.backingSchema, plan.backingTableName);
494
- if (!backing) {
495
- throw new QuereusError(`Internal error: backing table '${plan.backingTableName}' for materialized view '${plan.mv.name}' not found`, StatusCode.INTERNAL);
496
- }
497
- const host = backingHost(ctx, backing);
498
- const connection = await getBackingConnection(ctx, host, `${plan.backingSchema}.${plan.backingTableName}`, cache);
499
- return host.applyMaintenance(connection, ops);
542
+ return ops;
500
543
  }
501
544
  /**
502
545
  * Compute a `'prefix-delete'` plan's per-row backing delta and apply it: derive the
@@ -527,23 +570,39 @@ export async function applyLookupResidual(ctx, plan, change, cache) {
527
570
  *
528
571
  * Structurally the same as {@link applyForwardResidual}, differing only in the
529
572
  * **prefix-slice** diff (one base row owns N backing rows sharing the prefix) and the
530
- * **N-row** residual. Per-row recompute is correct without per-statement batching: the
531
- * residual reads live (reads-own-writes) state, so the last write to a base key produces
532
- * the authoritative slice. (Statement-level dedup of distinct base keys is the same
533
- * affordability optimization deferred for the aggregate arm.)
573
+ * **N-row** residual. This is the cold inline path; a statement-batched caller
574
+ * accumulates the same deduped base keys via {@link collectPrefixDeleteKeys} and diffs
575
+ * each distinct key once at flush ({@link computePrefixDeleteOps}) sound because the
576
+ * residual and the effective-slice read both see live (reads-own-writes) state, so the
577
+ * flush-time diff is exactly what the last per-row diff would have produced.
534
578
  */
535
579
  export async function applyPrefixDelete(ctx, plan, change, cache) {
536
- // Distinct affected base keys (OLD ∪ NEW), deduped on the base-PK values. `keyTuple`
537
- // binds the residual (`pk{i}`); `prefix` is the slice's leading-PK equality key (the
538
- // base-PK values in backing-PK order — identical here since the base PK leads the
539
- // backing PK, but kept distinct for clarity).
540
580
  const affected = new Map();
581
+ collectPrefixDeleteKeys(plan, change, affected);
582
+ // Resolved up front (unlike the point-op arms): the keyed diff reads the existing
583
+ // effective slice before any op exists. The former wholesale arm always emitted ops,
584
+ // so this resolves no more connections than it did.
585
+ const { host, connection } = await resolveBackingApplyTarget(ctx, plan, cache);
586
+ const ops = await computePrefixDeleteOps(ctx, plan, affected.values(), host, connection);
587
+ if (ops.length === 0)
588
+ return [];
589
+ return host.applyMaintenance(connection, ops);
590
+ }
591
+ /**
592
+ * Derive one changed base row's affected base key(s) (OLD ∪ NEW) and add them to
593
+ * `into`, deduped on the canonical base-PK values. `keyTuple` binds the residual
594
+ * (`pk{i}`); `prefix` is the slice's leading-PK equality key (the base-PK values in
595
+ * backing-PK order — identical here since the base PK leads the backing PK, but kept
596
+ * distinct for clarity). The statement-batch counterpart of the derivation inside
597
+ * {@link applyPrefixDelete}.
598
+ */
599
+ export function collectPrefixDeleteKeys(plan, change, into) {
541
600
  const addFrom = (row) => {
542
601
  const keyTuple = plan.bindColumns.map(c => row[c]);
543
602
  const dedupKey = canonKeyValues(keyTuple);
544
- if (affected.has(dedupKey))
603
+ if (into.has(dedupKey))
545
604
  return;
546
- affected.set(dedupKey, { keyTuple, prefix: plan.backingPrefixSourceCols.map(sc => row[sc]) });
605
+ into.set(dedupKey, { keyTuple, prefix: plan.backingPrefixSourceCols.map(sc => row[sc]) });
547
606
  };
548
607
  if (change.op === 'insert')
549
608
  addFrom(change.newRow);
@@ -553,17 +612,17 @@ export async function applyPrefixDelete(ctx, plan, change, cache) {
553
612
  addFrom(change.oldRow);
554
613
  addFrom(change.newRow);
555
614
  }
556
- // Resolved up front (unlike the point-op arms): the keyed diff reads the existing
557
- // effective slice before any op exists. The former wholesale arm always emitted ops,
558
- // so this resolves no more connections than it did.
559
- const backing = ctx.schemaManager.getTable(plan.backingSchema, plan.backingTableName);
560
- if (!backing) {
561
- throw new QuereusError(`Internal error: backing table '${plan.backingTableName}' for materialized view '${plan.mv.name}' not found`, StatusCode.INTERNAL);
562
- }
563
- const host = backingHost(ctx, backing);
564
- const connection = await getBackingConnection(ctx, host, `${plan.backingSchema}.${plan.backingTableName}`, cache);
615
+ }
616
+ /**
617
+ * Per affected base key: run the fan-out residual, read the existing effective slice for
618
+ * the base prefix, and build the keyed-diff ops (delete disappeared keys, upsert the
619
+ * recomputed rows). Pure op computation over the supplied host/connection; the caller
620
+ * owns the single applyMaintenance call, so a statement flush batches many base keys'
621
+ * ops into one host call.
622
+ */
623
+ export async function computePrefixDeleteOps(ctx, plan, keys, host, connection) {
565
624
  const ops = [];
566
- for (const { keyTuple, prefix } of affected.values()) {
625
+ for (const { keyTuple, prefix } of keys) {
567
626
  const recomputed = await runResidual(ctx, plan.residualScheduler, plan.bindParamPrefix, keyTuple);
568
627
  // The residual for base key K filters T to K, so every row it returns shares K's
569
628
  // base-PK prefix; the prefix-match guard is a defensive soundness net (mirrors
@@ -591,9 +650,7 @@ export async function applyPrefixDelete(ctx, plan, change, cache) {
591
650
  for (const row of slice)
592
651
  ops.push({ kind: 'upsert', row });
593
652
  }
594
- if (ops.length === 0)
595
- return [];
596
- return host.applyMaintenance(connection, ops);
653
+ return ops;
597
654
  }
598
655
  /**
599
656
  * True iff two backing rows agree on every backing-PK column under that column's
@@ -621,4 +678,252 @@ export function residualRowMatchesBasePrefix(plan, row, prefixVals) {
621
678
  }
622
679
  return true;
623
680
  }
681
+ /**
682
+ * Accumulate one source change's affected binding key(s) for a residual-arm plan into
683
+ * the per-statement {@link ResidualKeyBatch}, deduped across the whole statement —
684
+ * the deferred-accumulate counterpart of the cold per-row appliers above. Which
685
+ * variant map receives the keys follows the plan kind; a `'join-residual'` change
686
+ * routes on **which source changed** (forward for the driving `T`, lookup for `P`),
687
+ * exactly as {@link applyJoinResidual} dispatches. `planKey` is the MV key
688
+ * (lowercased `schema.name`) the manager indexes the plan under.
689
+ */
690
+ export function accumulateResidualKeys(plan, change, changedBase, batch, planKey) {
691
+ let entry = batch.get(planKey);
692
+ if (!entry) {
693
+ entry = { forward: new Map(), lookup: new Map(), prefix: new Map() };
694
+ batch.set(planKey, entry);
695
+ }
696
+ switch (plan.kind) {
697
+ case 'residual-recompute':
698
+ // Residual keys FIRST, always — they are the delta path's per-group fallback
699
+ // (retraction-unsafe groups, poisoned accumulations), so the delta map is
700
+ // strictly an optimization layered on top, never the only record.
701
+ collectForwardResidualKeys(plan, change, entry.forward);
702
+ if (plan.delta && !entry.deltaPoisoned) {
703
+ accumulateDeltaAggregates(plan, change, entry);
704
+ }
705
+ break;
706
+ case 'prefix-delete':
707
+ collectPrefixDeleteKeys(plan, change, entry.prefix);
708
+ break;
709
+ case 'join-residual': {
710
+ if (changedBase === plan.sourceBase)
711
+ collectForwardResidualKeys(plan, change, entry.forward);
712
+ else
713
+ collectLookupResidualKeys(plan, change, entry.lookup);
714
+ break;
715
+ }
716
+ }
717
+ }
718
+ /**
719
+ * Compute the flush-time ops for one residual-arm MV's accumulated statement keys: run
720
+ * the appropriate residual variant once per distinct key against live post-statement
721
+ * state and concatenate the keyed-diff ops. Distinct keys touch disjoint backing slices
722
+ * — except a `'join-residual'` statement that accumulated both forward and lookup keys,
723
+ * where an overlapping backing row is recomputed twice from the SAME live state, so the
724
+ * duplicate upsert is value-identical and the host suppresses it. The caller owns the
725
+ * single {@link BackingHost.applyMaintenance} call over the combined array — one host
726
+ * round-trip per (MV, flush round) instead of one per source row.
727
+ */
728
+ export async function computeResidualBatchOps(ctx, plan, entry, host, connection) {
729
+ if (plan.kind === 'prefix-delete') {
730
+ return computePrefixDeleteOps(ctx, plan, entry.prefix.values(), host, connection);
731
+ }
732
+ const ops = await computeForwardResidualOps(ctx, plan, entry.forward.values());
733
+ if (plan.kind === 'join-residual' && entry.lookup.size > 0) {
734
+ ops.push(...await computeLookupResidualOps(ctx, plan, entry.lookup.values()));
735
+ }
736
+ return ops;
737
+ }
738
+ /**
739
+ * Fold one source change's per-column aggregate contributions into the statement's
740
+ * delta accumulation ({@link ResidualKeyBatchEntry.delta}) — the delta-aggregate
741
+ * counterpart of {@link collectForwardResidualKeys}, called right after it (the
742
+ * residual keys remain the fallback record). Per contributing row image:
743
+ * `step(identity, row[arg])` (zero-arg → `step(identity)`) is the row's contribution;
744
+ * an insert `merge`s it in, a delete `merge`s its `negate`, an update retracts the OLD
745
+ * image into its group and inserts the NEW into its (possibly different) group. A row
746
+ * whose body-WHERE predicate is not unambiguously TRUE contributes nothing — but the
747
+ * raw column value (including NULL) IS fed to `step`, never pre-filtered: NULL-handling
748
+ * is the aggregate's own (law 2), and the row still counts toward the zero-arg
749
+ * multiplicity witness.
750
+ */
751
+ export function accumulateDeltaAggregates(plan, change, entry) {
752
+ const d = plan.delta;
753
+ if (!d)
754
+ return;
755
+ const delta = entry.delta ?? (entry.delta = new Map());
756
+ const contribute = (row, retract) => {
757
+ if (d.predicate && d.predicate.evaluate(row) !== true)
758
+ return; // out of body scope
759
+ const keyVals = plan.backingPkSourceCols.map(sc => row[sc]);
760
+ const dedupKey = canonKeyValues(keyVals);
761
+ let g = delta.get(dedupKey);
762
+ if (!g) {
763
+ g = {
764
+ keyVals,
765
+ deleteKey: buildPrimaryKeyFromValues(keyVals, plan.backingPkDefinition),
766
+ accs: d.aggColumns.map(c => cloneInitialValue(c.schema.initialValue)),
767
+ retracted: false,
768
+ };
769
+ delta.set(dedupKey, g);
770
+ }
771
+ if (retract)
772
+ g.retracted = true;
773
+ for (let i = 0; i < d.aggColumns.length; i++) {
774
+ const c = d.aggColumns[i];
775
+ // A tighten-only column (min/max — merge, no negate) cannot retract arithmetically.
776
+ // `g.retracted` was set above, so a retracted group with a tighten column re-derives
777
+ // wholesale from the residual at flush (descriptor.hasTighten) and this accumulator is
778
+ // discarded — so skip the retraction contribution entirely (there is no negate to
779
+ // apply). Its INSERT contributions still fold via merge on the non-retract path below.
780
+ if (retract && c.deltaClass === 'tighten')
781
+ continue;
782
+ let contrib = c.argSourceCol === undefined
783
+ ? c.schema.stepFunction(cloneInitialValue(c.schema.initialValue))
784
+ : c.schema.stepFunction(cloneInitialValue(c.schema.initialValue), row[c.argSourceCol]);
785
+ if (retract)
786
+ contrib = c.algebra.negate(contrib);
787
+ g.accs[i] = c.algebra.merge(g.accs[i], contrib);
788
+ }
789
+ };
790
+ if (change.op === 'insert')
791
+ contribute(change.newRow, false);
792
+ else if (change.op === 'delete')
793
+ contribute(change.oldRow, true);
794
+ else {
795
+ contribute(change.oldRow, true);
796
+ contribute(change.newRow, false);
797
+ }
798
+ }
799
+ /**
800
+ * Flush-time op computation for a delta-aggregate MV's accumulated statement deltas —
801
+ * the arithmetic read-modify-write that replaces the per-group residual re-execution.
802
+ * Per affected group:
803
+ * 1. read the group's current EFFECTIVE backing row by its full PK (the host's
804
+ * `scanEffective` equality-prefix point read — pending over committed, so a group
805
+ * written by an earlier statement of this transaction folds correctly);
806
+ * 2. per aggregate column: base = stored ? `decode(stored[col])` : a fresh identity
807
+ * accumulator; finalized = `finalize(merge(base, delta))`;
808
+ * 3. the multiplicity witness finalizing to 0 ⇔ the group emptied → `delete-key`
809
+ * (skipped when no row was stored); otherwise upsert the rebuilt row (group-key
810
+ * values + finalized aggregates) — the host's value-identical skip suppresses a
811
+ * net-identity delta (MV-016).
812
+ *
813
+ * **Retraction fallback.** A group that accumulated a retraction re-derives from its
814
+ * residual key (always accumulated alongside, same canonical map key) instead of the
815
+ * arithmetic, in two cases:
816
+ * - the descriptor has a **tighten** column (min/max — merge, no negate): a retraction
817
+ * cannot be undone by merge, so the whole group re-derives from live source state
818
+ * **whether or not a row is stored** (an intra-statement delete of the extreme poisons
819
+ * even a from-identity net-fold). The residual recomputes every column of the row
820
+ * (count/sum included), so a mixed group+tighten row is maintained by ONE path — no
821
+ * double-maintenance;
822
+ * - otherwise the descriptor is not retraction-safe (an abelian column whose decode is
823
+ * only an insert-observational witness — a nullable-argument sum) AND a stored row
824
+ * exists: the stored value cannot prove the true contribution count survives the
825
+ * retraction, so decoding it is unsound. A group with no stored row needs no fallback
826
+ * here — a pure abelian net-fold from identity is exact.
827
+ *
828
+ * Zero source reads, no residual execution on the arithmetic path — this is why the
829
+ * delta path also BYPASSES the per-statement degrade-to-rebuild crossover (it is
830
+ * already O(affected groups)).
831
+ */
832
+ export async function computeDeltaAggregateOps(ctx, plan, entry, host, connection) {
833
+ const d = plan.delta;
834
+ if (!d || !entry.delta)
835
+ return [];
836
+ const ops = [];
837
+ const residualFallbackKeys = [];
838
+ for (const [dedupKey, g] of entry.delta) {
839
+ // Effective point read: the full-PK equality prefix selects at most one row
840
+ // (BINARY collations on every PK column are a descriptor gate, so the binary
841
+ // prefix compare in the host's scan is exact).
842
+ let stored;
843
+ for await (const row of host.scanEffective(connection, { equalityPrefix: [...g.keyVals] })) {
844
+ stored = row;
845
+ break;
846
+ }
847
+ // Residual fallback for a group whose arithmetic cannot be trusted under retraction:
848
+ // - a **tighten** column (min/max) can never retract arithmetically — a retracted
849
+ // group re-derives from live state whether or not a row is stored (an intra-statement
850
+ // delete of the extreme cannot be undone by merge, even from a fresh identity);
851
+ // - otherwise a not-retraction-safe abelian column (a sum whose decode forgets the true
852
+ // contribution count) only needs the residual when a stored row must be decoded — its
853
+ // no-stored net-fold stays exact, so that case keeps the pure arithmetic path.
854
+ // NOTE: the tighten fallback is conservative — ANY retraction rescans the group, even a
855
+ // delete of a provably-non-extreme value. Correct, not minimal. If min/max MVs ever show
856
+ // this rescan as hot, a secondary-index "is this the current extreme?" probe could keep
857
+ // non-extreme deletes on the arithmetic path. Not built now (see docs/mv-maintenance.md
858
+ // § Tighten-only columns).
859
+ if (g.retracted && (d.hasTighten || (stored && !d.retractionSafe))) {
860
+ const fk = entry.forward.get(dedupKey);
861
+ if (!fk) {
862
+ // Impossible: accumulateResidualKeys collects the forward key for every
863
+ // change before the delta contribution, over the same canonical key.
864
+ throw new QuereusError(`Internal error: delta-aggregate group of materialized view '${plan.mv.name}' has no forward residual key`, StatusCode.INTERNAL);
865
+ }
866
+ residualFallbackKeys.push(fk);
867
+ continue;
868
+ }
869
+ const finals = new Array(d.aggColumns.length);
870
+ for (let i = 0; i < d.aggColumns.length; i++) {
871
+ const c = d.aggColumns[i];
872
+ const base = stored
873
+ ? c.algebra.decode(stored[c.backingCol])
874
+ : cloneInitialValue(c.schema.initialValue);
875
+ finals[i] = c.schema.finalizeFunction(c.algebra.merge(base, g.accs[i]));
876
+ }
877
+ const mult = finals[d.multiplicityIndex];
878
+ if (mult === 0 || mult === 0n) {
879
+ // Group emptied. The delete is emitted only when a row is stored (a group
880
+ // created and emptied within one statement writes nothing).
881
+ if (stored)
882
+ ops.push({ kind: 'delete-key', key: g.deleteKey });
883
+ continue;
884
+ }
885
+ const row = new Array(d.backingColumnCount).fill(null);
886
+ for (const gc of d.groupColumns)
887
+ row[gc.backingCol] = g.keyVals[gc.pkPos];
888
+ for (let i = 0; i < d.aggColumns.length; i++)
889
+ row[d.aggColumns[i].backingCol] = finals[i];
890
+ // Decomposition-maintained columns (the avg class): derived from the finalized
891
+ // partials, never accumulated. `combine` reproduces the aggregate's own finalize —
892
+ // incl. the empty-group / divide-by-zero case (avg → count 0/NULL ⇒ NULL). The group
893
+ // is non-empty here (multiplicity > 0), so a fully-emptied group is deleted above
894
+ // before combine could divide by zero; a non-empty all-NULL group finalizes count(x)
895
+ // = 0 and combine yields NULL, matching native avg.
896
+ // NOTE: byte-exactness vs a live re-fold holds while a group's integer sum stays
897
+ // ≤ 2^53. `avg`'s live finalize accumulates its own sum as a float, whereas this
898
+ // recombine reads the exact (bigint-capable) stored `sum` partial; the two round
899
+ // differently only once a group sum exceeds the double safe-integer range. If that
900
+ // regime ever becomes reachable, avg's finalize would need bigint accumulation (a
901
+ // change in aggregate.ts), not a change here.
902
+ for (const dc of d.decomposeColumns) {
903
+ row[dc.backingCol] = dc.combine(dc.partialIndices.map(pi => finals[pi]));
904
+ }
905
+ ops.push({ kind: 'upsert', row });
906
+ }
907
+ if (residualFallbackKeys.length > 0) {
908
+ ops.push(...await computeForwardResidualOps(ctx, plan, residualFallbackKeys));
909
+ }
910
+ return ops;
911
+ }
912
+ /**
913
+ * Invalidate every accumulated delta in the per-statement batch — called by the DML
914
+ * executor when an OR FAIL per-row savepoint ROLLS BACK: the savepoint undoes the
915
+ * failing row's source (and backing) writes, but the JS-side accumulation cannot be
916
+ * unwound, so the folded deltas may carry the reverted row's contribution. The residual
917
+ * keys are unaffected (a reverted key's recompute reads surviving live state and is
918
+ * value-identical → suppressed), so poisoning simply drops the fast path: the flush in
919
+ * the executor's catch routes those entries through the plain residual. One-way for the
920
+ * statement — `deltaPoisoned` also stops later (cascade-driven) delta re-accumulation
921
+ * into the same entry from mixing with an already-flushed-around state.
922
+ */
923
+ export function poisonResidualDeltaAccumulations(batch) {
924
+ for (const entry of batch.values()) {
925
+ entry.delta = undefined;
926
+ entry.deltaPoisoned = true;
927
+ }
928
+ }
624
929
  //# sourceMappingURL=database-materialized-views-apply.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-materialized-views-apply.js","sourceRoot":"","sources":["../../../src/core/database-materialized-views-apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-materialized-views-apply.js","sourceRoot":"","sources":["../../../src/core/database-materialized-views-apply.ts"],"names":[],"mappings":"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"}