@quereus/quereus 4.3.1 → 4.4.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 (788) hide show
  1. package/README.md +25 -7
  2. package/dist/src/common/types.d.ts +9 -59
  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-assertions.d.ts +2 -2
  6. package/dist/src/core/database-assertions.d.ts.map +1 -1
  7. package/dist/src/core/database-assertions.js +4 -3
  8. package/dist/src/core/database-assertions.js.map +1 -1
  9. package/dist/src/core/database-external-changes.d.ts +3 -3
  10. package/dist/src/core/database-external-changes.d.ts.map +1 -1
  11. package/dist/src/core/database-external-changes.js +13 -10
  12. package/dist/src/core/database-external-changes.js.map +1 -1
  13. package/dist/src/core/database-internal.d.ts.map +1 -1
  14. package/dist/src/core/database-materialized-views-analysis.d.ts +199 -0
  15. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -0
  16. package/dist/src/core/database-materialized-views-analysis.js +502 -0
  17. package/dist/src/core/database-materialized-views-analysis.js.map +1 -0
  18. package/dist/src/core/database-materialized-views-apply.d.ts +422 -0
  19. package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -0
  20. package/dist/src/core/database-materialized-views-apply.js +929 -0
  21. package/dist/src/core/database-materialized-views-apply.js.map +1 -0
  22. package/dist/src/core/database-materialized-views-plan-builders.d.ts +267 -0
  23. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -0
  24. package/dist/src/core/database-materialized-views-plan-builders.js +1423 -0
  25. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -0
  26. package/dist/src/core/database-materialized-views-plans.d.ts +641 -0
  27. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -0
  28. package/dist/src/core/database-materialized-views-plans.js +13 -0
  29. package/dist/src/core/database-materialized-views-plans.js.map +1 -0
  30. package/dist/src/core/database-materialized-views.d.ts +108 -860
  31. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  32. package/dist/src/core/database-materialized-views.js +212 -2165
  33. package/dist/src/core/database-materialized-views.js.map +1 -1
  34. package/dist/src/core/database-transaction.d.ts +10 -1
  35. package/dist/src/core/database-transaction.d.ts.map +1 -1
  36. package/dist/src/core/database-transaction.js +16 -4
  37. package/dist/src/core/database-transaction.js.map +1 -1
  38. package/dist/src/core/database-watchers.d.ts.map +1 -1
  39. package/dist/src/core/database-watchers.js +2 -1
  40. package/dist/src/core/database-watchers.js.map +1 -1
  41. package/dist/src/core/database.d.ts +99 -13
  42. package/dist/src/core/database.d.ts.map +1 -1
  43. package/dist/src/core/database.js +270 -50
  44. package/dist/src/core/database.js.map +1 -1
  45. package/dist/src/core/derived-row-validator.d.ts +1 -1
  46. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  47. package/dist/src/core/derived-row-validator.js +5 -3
  48. package/dist/src/core/derived-row-validator.js.map +1 -1
  49. package/dist/src/core/statement.d.ts +8 -0
  50. package/dist/src/core/statement.d.ts.map +1 -1
  51. package/dist/src/core/statement.js +98 -18
  52. package/dist/src/core/statement.js.map +1 -1
  53. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  54. package/dist/src/emit/ast-stringify.js +24 -13
  55. package/dist/src/emit/ast-stringify.js.map +1 -1
  56. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  57. package/dist/src/func/builtins/aggregate.js +127 -21
  58. package/dist/src/func/builtins/aggregate.js.map +1 -1
  59. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  60. package/dist/src/func/builtins/explain.js +2 -1
  61. package/dist/src/func/builtins/explain.js.map +1 -1
  62. package/dist/src/func/builtins/json.d.ts.map +1 -1
  63. package/dist/src/func/builtins/json.js +2 -1
  64. package/dist/src/func/builtins/json.js.map +1 -1
  65. package/dist/src/func/builtins/mutation.d.ts.map +1 -1
  66. package/dist/src/func/builtins/mutation.js +3 -2
  67. package/dist/src/func/builtins/mutation.js.map +1 -1
  68. package/dist/src/func/registration.d.ts +6 -1
  69. package/dist/src/func/registration.d.ts.map +1 -1
  70. package/dist/src/func/registration.js +16 -0
  71. package/dist/src/func/registration.js.map +1 -1
  72. package/dist/src/index.d.ts +16 -6
  73. package/dist/src/index.d.ts.map +1 -1
  74. package/dist/src/index.js +33 -7
  75. package/dist/src/index.js.map +1 -1
  76. package/dist/src/parser/ast.d.ts +2 -2
  77. package/dist/src/parser/lexer.d.ts +11 -1
  78. package/dist/src/parser/lexer.d.ts.map +1 -1
  79. package/dist/src/parser/lexer.js +40 -34
  80. package/dist/src/parser/lexer.js.map +1 -1
  81. package/dist/src/parser/parser.d.ts.map +1 -1
  82. package/dist/src/parser/parser.js +16 -9
  83. package/dist/src/parser/parser.js.map +1 -1
  84. package/dist/src/planner/analysis/authored-inverse.js +1 -1
  85. package/dist/src/planner/analysis/comparison-collation.d.ts +52 -0
  86. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  87. package/dist/src/planner/analysis/comparison-collation.js +84 -7
  88. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  89. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  90. package/dist/src/planner/analysis/constraint-extractor.js +64 -17
  91. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  92. package/dist/src/planner/analysis/coverage-prover.d.ts +1 -1
  93. package/dist/src/planner/analysis/coverage-prover.js +1 -1
  94. package/dist/src/planner/analysis/equi-correlation.d.ts +26 -0
  95. package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -0
  96. package/dist/src/planner/analysis/equi-correlation.js +62 -0
  97. package/dist/src/planner/analysis/equi-correlation.js.map +1 -0
  98. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +54 -18
  99. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  100. package/dist/src/planner/analysis/query-rewrite-matcher.js +86 -42
  101. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  102. package/dist/src/planner/analysis/sat-checker.d.ts +8 -1
  103. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
  104. package/dist/src/planner/analysis/sat-checker.js +117 -22
  105. package/dist/src/planner/analysis/sat-checker.js.map +1 -1
  106. package/dist/src/planner/analysis/scalar-invertibility.d.ts +13 -4
  107. package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -1
  108. package/dist/src/planner/analysis/scalar-invertibility.js +12 -3
  109. package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -1
  110. package/dist/src/planner/analysis/scalar-subqueries.d.ts +28 -0
  111. package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -0
  112. package/dist/src/planner/analysis/scalar-subqueries.js +60 -0
  113. package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -0
  114. package/dist/src/planner/analysis/update-lineage.d.ts +1 -1
  115. package/dist/src/planner/analysis/update-lineage.js +1 -1
  116. package/dist/src/planner/analysis/update-lineage.js.map +1 -1
  117. package/dist/src/planner/analysis/view-complement.d.ts +2 -2
  118. package/dist/src/planner/building/delete.js +2 -2
  119. package/dist/src/planner/building/delete.js.map +1 -1
  120. package/dist/src/planner/building/dml-target.d.ts +2 -2
  121. package/dist/src/planner/building/dml-target.js +2 -2
  122. package/dist/src/planner/building/insert.d.ts.map +1 -1
  123. package/dist/src/planner/building/insert.js +53 -2
  124. package/dist/src/planner/building/insert.js.map +1 -1
  125. package/dist/src/planner/building/schema-resolution.d.ts +3 -0
  126. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  127. package/dist/src/planner/building/schema-resolution.js +4 -5
  128. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  129. package/dist/src/planner/building/select.d.ts.map +1 -1
  130. package/dist/src/planner/building/select.js +18 -4
  131. package/dist/src/planner/building/select.js.map +1 -1
  132. package/dist/src/planner/building/update.js +2 -2
  133. package/dist/src/planner/building/update.js.map +1 -1
  134. package/dist/src/planner/building/view-mutation-builder.js +7 -7
  135. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  136. package/dist/src/planner/building/with.d.ts.map +1 -1
  137. package/dist/src/planner/building/with.js +5 -8
  138. package/dist/src/planner/building/with.js.map +1 -1
  139. package/dist/src/planner/cache/materialization-advisory.d.ts +34 -2
  140. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  141. package/dist/src/planner/cache/materialization-advisory.js +185 -42
  142. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  143. package/dist/src/planner/cache/reference-graph.d.ts +14 -5
  144. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  145. package/dist/src/planner/cache/reference-graph.js +31 -39
  146. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  147. package/dist/src/planner/cost/index.d.ts +30 -5
  148. package/dist/src/planner/cost/index.d.ts.map +1 -1
  149. package/dist/src/planner/cost/index.js +26 -0
  150. package/dist/src/planner/cost/index.js.map +1 -1
  151. package/dist/src/planner/debug.d.ts +3 -2
  152. package/dist/src/planner/debug.d.ts.map +1 -1
  153. package/dist/src/planner/debug.js +9 -3
  154. package/dist/src/planner/debug.js.map +1 -1
  155. package/dist/src/planner/framework/characteristics.d.ts +46 -19
  156. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  157. package/dist/src/planner/framework/characteristics.js +50 -134
  158. package/dist/src/planner/framework/characteristics.js.map +1 -1
  159. package/dist/src/planner/framework/context.d.ts +8 -44
  160. package/dist/src/planner/framework/context.d.ts.map +1 -1
  161. package/dist/src/planner/framework/context.js +0 -91
  162. package/dist/src/planner/framework/context.js.map +1 -1
  163. package/dist/src/planner/framework/pass.d.ts +7 -0
  164. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  165. package/dist/src/planner/framework/pass.js +84 -0
  166. package/dist/src/planner/framework/pass.js.map +1 -1
  167. package/dist/src/planner/framework/registry.d.ts +13 -42
  168. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  169. package/dist/src/planner/framework/registry.js +14 -182
  170. package/dist/src/planner/framework/registry.js.map +1 -1
  171. package/dist/src/planner/mutation/backward-body.d.ts +2 -2
  172. package/dist/src/planner/mutation/cte-flatten.js +1 -1
  173. package/dist/src/planner/mutation/decomposition.d.ts +2 -2
  174. package/dist/src/planner/mutation/decomposition.js +1 -1
  175. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  176. package/dist/src/planner/mutation/lens-enforcement.js +2 -1
  177. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  178. package/dist/src/planner/mutation/multi-source.d.ts +8 -8
  179. package/dist/src/planner/mutation/multi-source.js +11 -11
  180. package/dist/src/planner/mutation/multi-source.js.map +1 -1
  181. package/dist/src/planner/mutation/propagate.d.ts +1 -1
  182. package/dist/src/planner/mutation/propagate.js +1 -1
  183. package/dist/src/planner/mutation/scope-transform.d.ts +2 -2
  184. package/dist/src/planner/mutation/scope-transform.js +3 -3
  185. package/dist/src/planner/mutation/scope-transform.js.map +1 -1
  186. package/dist/src/planner/mutation/set-op.d.ts +1 -1
  187. package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
  188. package/dist/src/planner/mutation/set-op.js +3 -2
  189. package/dist/src/planner/mutation/set-op.js.map +1 -1
  190. package/dist/src/planner/mutation/single-source.d.ts +3 -3
  191. package/dist/src/planner/mutation/single-source.js +9 -9
  192. package/dist/src/planner/mutation/single-source.js.map +1 -1
  193. package/dist/src/planner/nodes/aggregate-function.d.ts +3 -1
  194. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
  195. package/dist/src/planner/nodes/aggregate-function.js +1 -0
  196. package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
  197. package/dist/src/planner/nodes/aggregate-node.d.ts +1 -0
  198. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/aggregate-node.js +8 -1
  200. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  201. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/alias-node.js +3 -1
  203. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  204. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/asof-scan-node.js +3 -2
  206. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  207. package/dist/src/planner/nodes/asserted-keys-node.d.ts +1 -1
  208. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  209. package/dist/src/planner/nodes/asserted-keys-node.js +5 -2
  210. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  211. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  212. package/dist/src/planner/nodes/async-gather-node.js +3 -1
  213. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  214. package/dist/src/planner/nodes/block.js +3 -3
  215. package/dist/src/planner/nodes/block.js.map +1 -1
  216. package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
  217. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  218. package/dist/src/planner/nodes/bloom-join-node.js +5 -1
  219. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  220. package/dist/src/planner/nodes/cache-node.d.ts +19 -2
  221. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  222. package/dist/src/planner/nodes/cache-node.js +43 -3
  223. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  224. package/dist/src/planner/nodes/cte-node.d.ts +16 -1
  225. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  226. package/dist/src/planner/nodes/cte-node.js +16 -3
  227. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  228. package/dist/src/planner/nodes/distinct-node.js +3 -3
  229. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  230. package/dist/src/planner/nodes/dml-executor-node.d.ts +21 -0
  231. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  232. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  233. package/dist/src/planner/nodes/envelope-scan-node.d.ts +1 -1
  234. package/dist/src/planner/nodes/envelope-scan-node.js +1 -1
  235. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  236. package/dist/src/planner/nodes/fanout-lookup-join-node.js +4 -2
  237. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  238. package/dist/src/planner/nodes/filter.d.ts +10 -2
  239. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  240. package/dist/src/planner/nodes/filter.js +81 -14
  241. package/dist/src/planner/nodes/filter.js.map +1 -1
  242. package/dist/src/planner/nodes/hash-aggregate.d.ts +12 -1
  243. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  244. package/dist/src/planner/nodes/hash-aggregate.js +28 -1
  245. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  246. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -1
  247. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
  248. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -0
  249. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
  250. package/dist/src/planner/nodes/join-node.d.ts +3 -1
  251. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  252. package/dist/src/planner/nodes/join-node.js +5 -5
  253. package/dist/src/planner/nodes/join-node.js.map +1 -1
  254. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  255. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +4 -1
  256. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  257. package/dist/src/planner/nodes/limit-offset.d.ts +1 -0
  258. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  259. package/dist/src/planner/nodes/limit-offset.js +4 -3
  260. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  261. package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
  262. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  263. package/dist/src/planner/nodes/merge-join-node.js +6 -1
  264. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  265. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  266. package/dist/src/planner/nodes/ordinal-slice-node.js +3 -1
  267. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  268. package/dist/src/planner/nodes/plan-node.d.ts +68 -5
  269. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  270. package/dist/src/planner/nodes/plan-node.js +137 -24
  271. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  272. package/dist/src/planner/nodes/project-node.d.ts +3 -2
  273. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  274. package/dist/src/planner/nodes/project-node.js +1 -0
  275. package/dist/src/planner/nodes/project-node.js.map +1 -1
  276. package/dist/src/planner/nodes/recursive-cte-node.d.ts +30 -1
  277. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  278. package/dist/src/planner/nodes/recursive-cte-node.js +38 -5
  279. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  280. package/dist/src/planner/nodes/reference.d.ts +5 -1
  281. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  282. package/dist/src/planner/nodes/reference.js +3 -0
  283. package/dist/src/planner/nodes/reference.js.map +1 -1
  284. package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
  285. package/dist/src/planner/nodes/remote-query-node.js +3 -1
  286. package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
  287. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  288. package/dist/src/planner/nodes/retrieve-node.js +3 -1
  289. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  290. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  291. package/dist/src/planner/nodes/set-operation-node.js +3 -1
  292. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  293. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  294. package/dist/src/planner/nodes/sink-node.js +3 -1
  295. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  296. package/dist/src/planner/nodes/sort.d.ts +2 -1
  297. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  298. package/dist/src/planner/nodes/sort.js +9 -5
  299. package/dist/src/planner/nodes/sort.js.map +1 -1
  300. package/dist/src/planner/nodes/stream-aggregate.d.ts +12 -1
  301. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  302. package/dist/src/planner/nodes/stream-aggregate.js +32 -3
  303. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  304. package/dist/src/planner/nodes/table-access-nodes.d.ts +2 -1
  305. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  306. package/dist/src/planner/nodes/table-access-nodes.js +2 -0
  307. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  308. package/dist/src/planner/nodes/view-mutation-node.d.ts +2 -2
  309. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  310. package/dist/src/planner/nodes/view-mutation-node.js +5 -1
  311. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  312. package/dist/src/planner/nodes/window-function.d.ts +3 -1
  313. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  314. package/dist/src/planner/nodes/window-function.js +1 -0
  315. package/dist/src/planner/nodes/window-function.js.map +1 -1
  316. package/dist/src/planner/optimizer.d.ts +52 -8
  317. package/dist/src/planner/optimizer.d.ts.map +1 -1
  318. package/dist/src/planner/optimizer.js +1014 -895
  319. package/dist/src/planner/optimizer.js.map +1 -1
  320. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  321. package/dist/src/planner/rules/access/rule-select-access-path.js +235 -202
  322. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  323. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  324. package/dist/src/planner/rules/cache/rule-cte-optimization.js +8 -1
  325. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  326. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts +7 -0
  327. package/dist/src/planner/rules/cache/rule-in-subquery-cache.d.ts.map +1 -1
  328. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js +14 -1
  329. package/dist/src/planner/rules/cache/rule-in-subquery-cache.js.map +1 -1
  330. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +2 -2
  331. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -1
  332. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +55 -56
  333. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
  334. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.d.ts.map +1 -1
  335. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js +6 -0
  336. package/dist/src/planner/rules/cache/rule-mutating-subquery-cache.js.map +1 -1
  337. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts +25 -0
  338. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -0
  339. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +176 -0
  340. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -0
  341. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +1 -1
  342. package/dist/src/planner/rules/cache/rule-scalar-cse.js +1 -1
  343. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts +29 -0
  344. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.d.ts.map +1 -0
  345. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js +66 -0
  346. package/dist/src/planner/rules/cache/rule-scalar-subquery-cache.js.map +1 -0
  347. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +1 -1
  348. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +1 -1
  349. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  350. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +1 -54
  351. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  352. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +1 -1
  353. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +1 -1
  354. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +1 -1
  355. package/dist/src/planner/rules/join/rule-join-elimination.js +1 -1
  356. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +5 -6
  357. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  358. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
  359. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
  360. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +2 -2
  361. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
  362. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +4 -3
  363. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
  364. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +19 -0
  365. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -0
  366. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +48 -0
  367. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -0
  368. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +12 -1
  369. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -1
  370. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  371. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +22 -20
  372. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  373. package/dist/src/planner/rules/shared/index-style-context.d.ts +39 -0
  374. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -0
  375. package/dist/src/planner/rules/shared/index-style-context.js +26 -0
  376. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -0
  377. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
  378. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +1 -1
  379. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +1 -1
  380. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
  381. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts +191 -0
  382. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.d.ts.map +1 -0
  383. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js +623 -0
  384. package/dist/src/planner/rules/subquery/rule-scalar-agg-decorrelation.js.map +1 -0
  385. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +10 -1
  386. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  387. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +242 -51
  388. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  389. package/dist/src/planner/stats/analyze.d.ts.map +1 -1
  390. package/dist/src/planner/stats/analyze.js +2 -20
  391. package/dist/src/planner/stats/analyze.js.map +1 -1
  392. package/dist/src/planner/stats/histogram.d.ts.map +1 -1
  393. package/dist/src/planner/stats/histogram.js +4 -0
  394. package/dist/src/planner/stats/histogram.js.map +1 -1
  395. package/dist/src/planner/util/fd-utils.d.ts +2 -3
  396. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  397. package/dist/src/planner/util/fd-utils.js +2 -3
  398. package/dist/src/planner/util/fd-utils.js.map +1 -1
  399. package/dist/src/planner/validation/plan-validator.d.ts +16 -0
  400. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  401. package/dist/src/planner/validation/plan-validator.js +36 -0
  402. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  403. package/dist/src/runtime/async-util.d.ts +26 -0
  404. package/dist/src/runtime/async-util.d.ts.map +1 -1
  405. package/dist/src/runtime/async-util.js +139 -55
  406. package/dist/src/runtime/async-util.js.map +1 -1
  407. package/dist/src/runtime/cache/shared-cache.d.ts +7 -0
  408. package/dist/src/runtime/cache/shared-cache.d.ts.map +1 -1
  409. package/dist/src/runtime/cache/shared-cache.js +34 -1
  410. package/dist/src/runtime/cache/shared-cache.js.map +1 -1
  411. package/dist/src/runtime/context-helpers.d.ts +32 -4
  412. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  413. package/dist/src/runtime/context-helpers.js +26 -9
  414. package/dist/src/runtime/context-helpers.js.map +1 -1
  415. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  416. package/dist/src/runtime/deferred-constraint-queue.js +2 -1
  417. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  418. package/dist/src/runtime/emission-context.d.ts +27 -3
  419. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  420. package/dist/src/runtime/emission-context.js +38 -7
  421. package/dist/src/runtime/emission-context.js.map +1 -1
  422. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  423. package/dist/src/runtime/emit/add-constraint.js +7 -1
  424. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  425. package/dist/src/runtime/emit/aggregate.d.ts +2 -3
  426. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  427. package/dist/src/runtime/emit/aggregate.js +23 -28
  428. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  429. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  430. package/dist/src/runtime/emit/alter-table.js +98 -9
  431. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  432. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  433. package/dist/src/runtime/emit/analyze.js +2 -1
  434. package/dist/src/runtime/emit/analyze.js.map +1 -1
  435. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  436. package/dist/src/runtime/emit/asof-scan.js +13 -10
  437. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  438. package/dist/src/runtime/emit/async-gather.d.ts.map +1 -1
  439. package/dist/src/runtime/emit/async-gather.js +4 -3
  440. package/dist/src/runtime/emit/async-gather.js.map +1 -1
  441. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  442. package/dist/src/runtime/emit/between.js +2 -1
  443. package/dist/src/runtime/emit/between.js.map +1 -1
  444. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  445. package/dist/src/runtime/emit/binary.js +122 -14
  446. package/dist/src/runtime/emit/binary.js.map +1 -1
  447. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  448. package/dist/src/runtime/emit/block.js +2 -1
  449. package/dist/src/runtime/emit/block.js.map +1 -1
  450. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  451. package/dist/src/runtime/emit/bloom-join.js +20 -8
  452. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  453. package/dist/src/runtime/emit/cache.d.ts +7 -3
  454. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  455. package/dist/src/runtime/emit/cache.js +25 -7
  456. package/dist/src/runtime/emit/cache.js.map +1 -1
  457. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  458. package/dist/src/runtime/emit/case.js +66 -45
  459. package/dist/src/runtime/emit/case.js.map +1 -1
  460. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  461. package/dist/src/runtime/emit/cast.js +2 -1
  462. package/dist/src/runtime/emit/cast.js.map +1 -1
  463. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  464. package/dist/src/runtime/emit/constraint-check.js +13 -7
  465. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  466. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  467. package/dist/src/runtime/emit/create-assertion.js +2 -1
  468. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  469. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  470. package/dist/src/runtime/emit/create-index.js +12 -1
  471. package/dist/src/runtime/emit/create-index.js.map +1 -1
  472. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  473. package/dist/src/runtime/emit/create-table.js +12 -1
  474. package/dist/src/runtime/emit/create-table.js.map +1 -1
  475. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  476. package/dist/src/runtime/emit/cte-reference.js +2 -1
  477. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  478. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  479. package/dist/src/runtime/emit/cte.js +45 -21
  480. package/dist/src/runtime/emit/cte.js.map +1 -1
  481. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts +50 -0
  482. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts.map +1 -0
  483. package/dist/src/runtime/emit/ddl-transaction-policy.js +69 -0
  484. package/dist/src/runtime/emit/ddl-transaction-policy.js.map +1 -0
  485. package/dist/src/runtime/emit/delete.d.ts.map +1 -1
  486. package/dist/src/runtime/emit/delete.js +2 -1
  487. package/dist/src/runtime/emit/delete.js.map +1 -1
  488. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  489. package/dist/src/runtime/emit/distinct.js +2 -1
  490. package/dist/src/runtime/emit/distinct.js.map +1 -1
  491. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  492. package/dist/src/runtime/emit/dml-executor.js +138 -74
  493. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  494. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  495. package/dist/src/runtime/emit/drop-assertion.js +2 -1
  496. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  497. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  498. package/dist/src/runtime/emit/drop-index.js +17 -1
  499. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  500. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  501. package/dist/src/runtime/emit/drop-table.js +11 -1
  502. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  503. package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -1
  504. package/dist/src/runtime/emit/eager-prefetch.js +2 -1
  505. package/dist/src/runtime/emit/eager-prefetch.js.map +1 -1
  506. package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -1
  507. package/dist/src/runtime/emit/envelope-scan.js +2 -1
  508. package/dist/src/runtime/emit/envelope-scan.js.map +1 -1
  509. package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -1
  510. package/dist/src/runtime/emit/fanout-lookup-join.js +3 -2
  511. package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -1
  512. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  513. package/dist/src/runtime/emit/filter.js +8 -3
  514. package/dist/src/runtime/emit/filter.js.map +1 -1
  515. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  516. package/dist/src/runtime/emit/hash-aggregate.js +16 -11
  517. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  518. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  519. package/dist/src/runtime/emit/insert.js +2 -1
  520. package/dist/src/runtime/emit/insert.js.map +1 -1
  521. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  522. package/dist/src/runtime/emit/join.js +20 -6
  523. package/dist/src/runtime/emit/join.js.map +1 -1
  524. package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
  525. package/dist/src/runtime/emit/limit-offset.js +2 -1
  526. package/dist/src/runtime/emit/limit-offset.js.map +1 -1
  527. package/dist/src/runtime/emit/literal.d.ts.map +1 -1
  528. package/dist/src/runtime/emit/literal.js +2 -1
  529. package/dist/src/runtime/emit/literal.js.map +1 -1
  530. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +22 -0
  531. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  532. package/dist/src/runtime/emit/materialized-view-helpers.js +128 -16
  533. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  534. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  535. package/dist/src/runtime/emit/materialized-view.js +6 -0
  536. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  537. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  538. package/dist/src/runtime/emit/merge-join.js +14 -4
  539. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  540. package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -1
  541. package/dist/src/runtime/emit/ordinal-slice.js +2 -1
  542. package/dist/src/runtime/emit/ordinal-slice.js.map +1 -1
  543. package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
  544. package/dist/src/runtime/emit/pragma.js +2 -1
  545. package/dist/src/runtime/emit/pragma.js.map +1 -1
  546. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  547. package/dist/src/runtime/emit/project.js +7 -2
  548. package/dist/src/runtime/emit/project.js.map +1 -1
  549. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  550. package/dist/src/runtime/emit/recursive-cte.js +61 -2
  551. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  552. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  553. package/dist/src/runtime/emit/returning.js +7 -2
  554. package/dist/src/runtime/emit/returning.js.map +1 -1
  555. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  556. package/dist/src/runtime/emit/scalar-function.js +2 -1
  557. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  558. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  559. package/dist/src/runtime/emit/scan.js +55 -17
  560. package/dist/src/runtime/emit/scan.js.map +1 -1
  561. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  562. package/dist/src/runtime/emit/schema-declarative.js +6 -5
  563. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  564. package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
  565. package/dist/src/runtime/emit/sequencing.js +2 -1
  566. package/dist/src/runtime/emit/sequencing.js.map +1 -1
  567. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  568. package/dist/src/runtime/emit/set-operation.js +6 -5
  569. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  570. package/dist/src/runtime/emit/sink.d.ts.map +1 -1
  571. package/dist/src/runtime/emit/sink.js +2 -1
  572. package/dist/src/runtime/emit/sink.js.map +1 -1
  573. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  574. package/dist/src/runtime/emit/sort.js +2 -1
  575. package/dist/src/runtime/emit/sort.js.map +1 -1
  576. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  577. package/dist/src/runtime/emit/subquery.js +42 -23
  578. package/dist/src/runtime/emit/subquery.js.map +1 -1
  579. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  580. package/dist/src/runtime/emit/table-valued-function.js +2 -1
  581. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  582. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  583. package/dist/src/runtime/emit/temporal-arithmetic.js +2 -1
  584. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  585. package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
  586. package/dist/src/runtime/emit/transaction.js +2 -1
  587. package/dist/src/runtime/emit/transaction.js.map +1 -1
  588. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  589. package/dist/src/runtime/emit/unary.js +2 -1
  590. package/dist/src/runtime/emit/unary.js.map +1 -1
  591. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  592. package/dist/src/runtime/emit/update.js +2 -1
  593. package/dist/src/runtime/emit/update.js.map +1 -1
  594. package/dist/src/runtime/emit/values.d.ts.map +1 -1
  595. package/dist/src/runtime/emit/values.js +2 -1
  596. package/dist/src/runtime/emit/values.js.map +1 -1
  597. package/dist/src/runtime/emit/view-mutation.d.ts +1 -1
  598. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  599. package/dist/src/runtime/emit/view-mutation.js +6 -3
  600. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  601. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  602. package/dist/src/runtime/emit/window.js +26 -9
  603. package/dist/src/runtime/emit/window.js.map +1 -1
  604. package/dist/src/runtime/emitters.d.ts +11 -3
  605. package/dist/src/runtime/emitters.d.ts.map +1 -1
  606. package/dist/src/runtime/emitters.js +13 -22
  607. package/dist/src/runtime/emitters.js.map +1 -1
  608. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  609. package/dist/src/runtime/foreign-key-actions.js +39 -13
  610. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  611. package/dist/src/runtime/parallel-driver.d.ts +32 -4
  612. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  613. package/dist/src/runtime/parallel-driver.js +88 -18
  614. package/dist/src/runtime/parallel-driver.js.map +1 -1
  615. package/dist/src/runtime/scheduler.d.ts +56 -7
  616. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  617. package/dist/src/runtime/scheduler.js +223 -200
  618. package/dist/src/runtime/scheduler.js.map +1 -1
  619. package/dist/src/runtime/strict-flags.d.ts +22 -0
  620. package/dist/src/runtime/strict-flags.d.ts.map +1 -0
  621. package/dist/src/runtime/strict-flags.js +26 -0
  622. package/dist/src/runtime/strict-flags.js.map +1 -0
  623. package/dist/src/runtime/strict-fork.d.ts +4 -4
  624. package/dist/src/runtime/strict-fork.d.ts.map +1 -1
  625. package/dist/src/runtime/strict-fork.js +175 -31
  626. package/dist/src/runtime/strict-fork.js.map +1 -1
  627. package/dist/src/runtime/types.d.ts +102 -4
  628. package/dist/src/runtime/types.d.ts.map +1 -1
  629. package/dist/src/runtime/types.js +37 -0
  630. package/dist/src/runtime/types.js.map +1 -1
  631. package/dist/src/runtime/utils.d.ts.map +1 -1
  632. package/dist/src/runtime/utils.js +8 -17
  633. package/dist/src/runtime/utils.js.map +1 -1
  634. package/dist/src/schema/column.d.ts +8 -0
  635. package/dist/src/schema/column.d.ts.map +1 -1
  636. package/dist/src/schema/column.js.map +1 -1
  637. package/dist/src/schema/ddl-generator.js +5 -0
  638. package/dist/src/schema/ddl-generator.js.map +1 -1
  639. package/dist/src/schema/function.d.ts +79 -0
  640. package/dist/src/schema/function.d.ts.map +1 -1
  641. package/dist/src/schema/function.js.map +1 -1
  642. package/dist/src/schema/lens-compiler.js +2 -2
  643. package/dist/src/schema/lens-compiler.js.map +1 -1
  644. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  645. package/dist/src/schema/lens-prover.js +2 -3
  646. package/dist/src/schema/lens-prover.js.map +1 -1
  647. package/dist/src/schema/lens.d.ts +1 -1
  648. package/dist/src/schema/manager.d.ts.map +1 -1
  649. package/dist/src/schema/manager.js +7 -2
  650. package/dist/src/schema/manager.js.map +1 -1
  651. package/dist/src/schema/rename-rewriter.d.ts +61 -0
  652. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  653. package/dist/src/schema/rename-rewriter.js +77 -0
  654. package/dist/src/schema/rename-rewriter.js.map +1 -1
  655. package/dist/src/schema/table.d.ts +36 -8
  656. package/dist/src/schema/table.d.ts.map +1 -1
  657. package/dist/src/schema/table.js +61 -11
  658. package/dist/src/schema/table.js.map +1 -1
  659. package/dist/src/schema/unique-enforcement.d.ts +28 -5
  660. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  661. package/dist/src/schema/unique-enforcement.js +37 -5
  662. package/dist/src/schema/unique-enforcement.js.map +1 -1
  663. package/dist/src/schema/view.d.ts +1 -1
  664. package/dist/src/schema/view.js +1 -1
  665. package/dist/src/types/json-type.d.ts.map +1 -1
  666. package/dist/src/types/json-type.js +18 -8
  667. package/dist/src/types/json-type.js.map +1 -1
  668. package/dist/src/types/logical-type.d.ts +26 -0
  669. package/dist/src/types/logical-type.d.ts.map +1 -1
  670. package/dist/src/types/logical-type.js.map +1 -1
  671. package/dist/src/util/comparison.d.ts +83 -59
  672. package/dist/src/util/comparison.d.ts.map +1 -1
  673. package/dist/src/util/comparison.js +191 -131
  674. package/dist/src/util/comparison.js.map +1 -1
  675. package/dist/src/util/json-canonical.d.ts +34 -0
  676. package/dist/src/util/json-canonical.d.ts.map +1 -0
  677. package/dist/src/util/json-canonical.js +32 -0
  678. package/dist/src/util/json-canonical.js.map +1 -0
  679. package/dist/src/util/key-serializer.d.ts +10 -3
  680. package/dist/src/util/key-serializer.d.ts.map +1 -1
  681. package/dist/src/util/key-serializer.js +43 -17
  682. package/dist/src/util/key-serializer.js.map +1 -1
  683. package/dist/src/util/key-tuple-codec.d.ts +37 -0
  684. package/dist/src/util/key-tuple-codec.d.ts.map +1 -0
  685. package/dist/src/util/key-tuple-codec.js +65 -0
  686. package/dist/src/util/key-tuple-codec.js.map +1 -0
  687. package/dist/src/util/latches.d.ts +29 -3
  688. package/dist/src/util/latches.d.ts.map +1 -1
  689. package/dist/src/util/latches.js +60 -6
  690. package/dist/src/util/latches.js.map +1 -1
  691. package/dist/src/util/patterns.d.ts +22 -8
  692. package/dist/src/util/patterns.d.ts.map +1 -1
  693. package/dist/src/util/patterns.js +87 -16
  694. package/dist/src/util/patterns.js.map +1 -1
  695. package/dist/src/util/qualified-name.d.ts +10 -0
  696. package/dist/src/util/qualified-name.d.ts.map +1 -0
  697. package/dist/src/util/qualified-name.js +15 -0
  698. package/dist/src/util/qualified-name.js.map +1 -0
  699. package/dist/src/vtab/backing-host.d.ts +8 -1
  700. package/dist/src/vtab/backing-host.d.ts.map +1 -1
  701. package/dist/src/vtab/backing-host.js +7 -0
  702. package/dist/src/vtab/backing-host.js.map +1 -1
  703. package/dist/src/vtab/best-access-plan.d.ts +18 -0
  704. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  705. package/dist/src/vtab/best-access-plan.js +15 -0
  706. package/dist/src/vtab/best-access-plan.js.map +1 -1
  707. package/dist/src/vtab/capabilities.d.ts +44 -0
  708. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  709. package/dist/src/vtab/filter-info.d.ts +42 -0
  710. package/dist/src/vtab/filter-info.d.ts.map +1 -1
  711. package/dist/src/vtab/filter-info.js +137 -1
  712. package/dist/src/vtab/filter-info.js.map +1 -1
  713. package/dist/src/vtab/idx-str.d.ts +62 -0
  714. package/dist/src/vtab/idx-str.d.ts.map +1 -0
  715. package/dist/src/vtab/idx-str.js +130 -0
  716. package/dist/src/vtab/idx-str.js.map +1 -0
  717. package/dist/src/vtab/index-descriptor.d.ts +122 -0
  718. package/dist/src/vtab/index-descriptor.d.ts.map +1 -0
  719. package/dist/src/vtab/index-descriptor.js +104 -0
  720. package/dist/src/vtab/index-descriptor.js.map +1 -0
  721. package/dist/src/vtab/mapping-advertisement.d.ts +1 -1
  722. package/dist/src/vtab/memory/index.d.ts +12 -4
  723. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  724. package/dist/src/vtab/memory/index.js +17 -9
  725. package/dist/src/vtab/memory/index.js.map +1 -1
  726. package/dist/src/vtab/memory/layer/base.d.ts +85 -31
  727. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  728. package/dist/src/vtab/memory/layer/base.js +127 -86
  729. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  730. package/dist/src/vtab/memory/layer/connection.d.ts +27 -0
  731. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  732. package/dist/src/vtab/memory/layer/connection.js +36 -1
  733. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  734. package/dist/src/vtab/memory/layer/interface.d.ts +24 -4
  735. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  736. package/dist/src/vtab/memory/layer/manager.d.ts +212 -16
  737. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  738. package/dist/src/vtab/memory/layer/manager.js +754 -170
  739. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  740. package/dist/src/vtab/memory/layer/plan-filter.d.ts +26 -1
  741. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  742. package/dist/src/vtab/memory/layer/plan-filter.js +29 -11
  743. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  744. package/dist/src/vtab/memory/layer/safe-iterate.d.ts +2 -2
  745. package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
  746. package/dist/src/vtab/memory/layer/safe-iterate.js +2 -2
  747. package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
  748. package/dist/src/vtab/memory/layer/scan-layer.d.ts +5 -1
  749. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  750. package/dist/src/vtab/memory/layer/scan-layer.js +59 -24
  751. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  752. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  753. package/dist/src/vtab/memory/layer/scan-plan.js +13 -21
  754. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  755. package/dist/src/vtab/memory/layer/transaction.d.ts +169 -7
  756. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  757. package/dist/src/vtab/memory/layer/transaction.js +334 -9
  758. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  759. package/dist/src/vtab/memory/module.d.ts +11 -4
  760. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  761. package/dist/src/vtab/memory/module.js +35 -16
  762. package/dist/src/vtab/memory/module.js.map +1 -1
  763. package/dist/src/vtab/memory/table.d.ts +30 -4
  764. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  765. package/dist/src/vtab/memory/table.js +63 -15
  766. package/dist/src/vtab/memory/table.js.map +1 -1
  767. package/dist/src/vtab/memory/utils/predicate.d.ts +9 -1
  768. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  769. package/dist/src/vtab/memory/utils/predicate.js +35 -14
  770. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  771. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -1
  772. package/dist/src/vtab/memory/utils/primary-key-encode.js +12 -6
  773. package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -1
  774. package/dist/src/vtab/memory/utils/primary-key.d.ts +6 -1
  775. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  776. package/dist/src/vtab/memory/utils/primary-key.js +12 -8
  777. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  778. package/dist/src/vtab/module.d.ts +38 -14
  779. package/dist/src/vtab/module.d.ts.map +1 -1
  780. package/dist/src/vtab/table.d.ts +41 -2
  781. package/dist/src/vtab/table.d.ts.map +1 -1
  782. package/dist/src/vtab/table.js +19 -0
  783. package/dist/src/vtab/table.js.map +1 -1
  784. package/package.json +5 -4
  785. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +0 -18
  786. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +0 -1
  787. package/dist/src/planner/rules/cache/rule-materialization-advisory.js +0 -65
  788. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
@@ -0,0 +1,422 @@
1
+ /**
2
+ * Materialized-view maintenance — **delta apply**. The per-row / per-flush appliers that
3
+ * take a compiled {@link MaintenancePlan} plus a source {@link BackingRowChange}, compute the
4
+ * bounded backing delta (or the full-rebuild diff), and write it through the backing table's
5
+ * coordinated transaction connection — plus the residual runners, backing-host / connection
6
+ * resolvers, derived-row and parent-side referential enforcement, and the small key-compare
7
+ * helpers they share. Extracted from database-materialized-views.ts as free functions over
8
+ * {@link MaterializedViewManagerContext}; the manager's orchestration methods
9
+ * (`maintainRowTime`, `flushDeferredMaintenance`, `lookupCoveringConflicts`) call in.
10
+ */
11
+ import { type SqlValue, type Row } from '../common/types.js';
12
+ import { Scheduler } from '../runtime/scheduler.js';
13
+ import { type DerivedRowConstraintValidator } from './derived-row-validator.js';
14
+ import type { BackingHost, BackingRowChange, MaintenanceOp } from '../vtab/backing-host.js';
15
+ import type { VirtualTableConnection } from '../vtab/connection.js';
16
+ import type { TableSchema } from '../schema/table.js';
17
+ import type { MaterializedViewManagerContext, MaintenancePlan, InverseProjectionPlan, ForwardResidualPlan, JoinResidualPlan, PrefixDeletePlan, ResidualMaintenancePlan, ResidualRecomputePlan, ForwardResidualKey, PrefixDeleteKey, ResidualKeyBatch, ResidualKeyBatchEntry, BackingConnectionCache, BackingPkColumn } from './database-materialized-views-plans.js';
18
+ /**
19
+ * Resolve a plan's backing table to its {@link BackingHost} + coordinated
20
+ * {@link VirtualTableConnection} — the two handles every apply path writes through.
21
+ * Shared by the per-row appliers, the batched residual flush, and the full-rebuild
22
+ * `'replace-all'` diff; throws INTERNAL when the backing table has vanished (an MV in a
23
+ * broken state).
24
+ */
25
+ export declare function resolveBackingApplyTarget(ctx: MaterializedViewManagerContext, plan: Pick<MaintenancePlan, 'mv' | 'backingSchema' | 'backingTableName'>, cache?: BackingConnectionCache): Promise<{
26
+ host: BackingHost;
27
+ connection: VirtualTableConnection;
28
+ }>;
29
+ /**
30
+ * Compute an `'inverse-projection'` plan's per-row backing delta, apply it, and
31
+ * return the **effective** {@link BackingRowChange}(s) the backing layer realized.
32
+ * An out-of-scope row (or a delete of an absent backing key) yields no change. This
33
+ * body is the shipped covering-index maintenance, lifted verbatim from the former
34
+ * `applyRowTimeChange`, plus the equal-image short-circuit: an UPDATE whose old and
35
+ * new projected images are value-identical (both in scope) projects to NO backing
36
+ * delta — the dominant no-op echo (a source update touching only unprojected columns,
37
+ * or rewriting a projected column to its existing value) is suppressed before any
38
+ * backing-connection work. Accurate by the maintenance invariant (the backing row IS
39
+ * the old image's projection), so nothing would have changed; the host's
40
+ * value-identical upsert skip (vtab/backing-host.ts) remains the effective-state
41
+ * backstop for the paths that do emit ops.
42
+ */
43
+ export declare function applyInverseProjection(ctx: MaterializedViewManagerContext, plan: InverseProjectionPlan, change: BackingRowChange, cache?: BackingConnectionCache): Promise<BackingRowChange[]>;
44
+ /**
45
+ * Validate the row images a maintenance apply WROTE (insert/update
46
+ * {@link BackingRowChange}s — a delete writes no image) against the plan's
47
+ * compiled {@link DerivedRowConstraintValidator}. Inline checks abort the
48
+ * writing statement with the maintained-table-attributed CONSTRAINT error;
49
+ * auto-deferred checks (subquery CHECK, every child-side FK) queue to the
50
+ * deferred-constraint queue and validate at commit. Deferred entries are
51
+ * pinned to the backing connection the maintenance write used (resolved from
52
+ * the per-statement cache, or re-resolved deterministically — the same
53
+ * connection either way) so commit-time evaluation reads the same pending
54
+ * state, mirroring the DML pipeline's active-connection capture.
55
+ */
56
+ export declare function validateDerivedChanges(ctx: MaterializedViewManagerContext, plan: MaintenancePlan, validator: DerivedRowConstraintValidator, changes: readonly BackingRowChange[], cache?: BackingConnectionCache): Promise<void>;
57
+ /**
58
+ * Row-time guard: reject a maintenance write that would store a NULL into a backing column
59
+ * the schema declares NOT NULL *and* that is a physical-PK member whose re-derived body
60
+ * output turned nullable — the row-time analogue of the refresh-path
61
+ * `assertNoNullInNotNullSeededPk` (runtime/emit/materialized-view-helpers.ts). Row-time
62
+ * maintenance is the PRIMARY silent-corruption vector: it fires at the source
63
+ * insert/update, before any refresh, so without this guard a NULL lands in a
64
+ * declared-NOT-NULL PK column with no error.
65
+ *
66
+ * The offending skew (a NOT-NULL ordering-seeded PK column over a loosened source) is
67
+ * precomputed once at plan build into {@link MaintenancePlanCommon.nullGuardColumns}
68
+ * (`undefined` for nearly every MV — the zero-overhead gate), so the common path pays a
69
+ * single boolean check per maintained write and only the rare skewed MV scans its guarded
70
+ * columns per change. A `delete` writes no image and is skipped. The throw unwinds the source
71
+ * statement with nothing committed — the backing write rides the pending layer, discarded on
72
+ * a throw before commit, exactly like {@link validateDerivedChanges}. Called BEFORE the
73
+ * MV-over-MV cascade so a NULL row never reaches a consumer. See
74
+ * fix/bug-mv-rowtime-null-into-notnull-seeded-pk.
75
+ */
76
+ export declare function assertNoNullInNotNullSeededPkRowTime(plan: MaintenancePlan, changes: readonly BackingRowChange[]): void;
77
+ /**
78
+ * Fire **parent-side** referential enforcement over the backing rows a maintenance
79
+ * apply REMOVED or re-keyed (delete / key-update {@link BackingRowChange}s — an insert
80
+ * has no parent-side action). When the maintained table `M` is the PARENT (FK target)
81
+ * of an FK declared on an ordinary table `C` (`create table C (… references M(col) …)`),
82
+ * a maintenance-driven delete/key-update of the referenced `M` row would silently orphan
83
+ * `C`'s rows, bypassing the declared RESTRICT / referential action. This is the
84
+ * **dual** of {@link validateDerivedChanges} (constraints declared *on* `M`); the FK here
85
+ * lives on `C` and references `M`, so it is invisible to `M`'s own plan/validator.
86
+ *
87
+ * It reuses the SAME shared referential-action engine the DML executor and the
88
+ * external-change ingestion seam use — no third copy — applying its two functions over
89
+ * each backing change exactly as `database-external-changes.ts` does:
90
+ * - {@link assertTransitiveRestrictsForParentMutation} — pre-walk the transitive cascade
91
+ * closure and throw a CONSTRAINT error naming `M` on any surviving RESTRICT child;
92
+ * - {@link executeForeignKeyActionsAndLens} — run declared CASCADE / SET NULL / SET DEFAULT,
93
+ * re-entering the DML executor (the already-holding-the-mutex variant) for each cascaded
94
+ * child write, so `C`'s own constraints, watches, nested cascades, and (if `C` is itself
95
+ * an MV source) its own maintenance all fire.
96
+ *
97
+ * Ordering: called AFTER the backing delta has landed in the pending layer (the RESTRICT
98
+ * walk runs POST-application — the child rows it keys off still exist because the cascade
99
+ * has not run yet) and AFTER `M`'s own image is validated, matching the DML executor's
100
+ * per-change order (capture → MV maintenance → FK actions) and the external-changes seam.
101
+ * `lensRouted = false`: a maintenance backing write is a physical basis write (maintained
102
+ * tables are not lens basis spines). A surviving RESTRICT throws up through
103
+ * {@link maintainRowTime} → the DML executor → the statement, rolling back the source write
104
+ * attributed to `M`.
105
+ *
106
+ * Gate: a cheap `foreign_keys`-pragma early-return keeps the pragma-off path free (the
107
+ * engine also early-returns, but skipping the `getTable` + loop avoids all per-change work).
108
+ * NOT gated on `plan.derivedRowValidator` — that gate is child-side (constraints *on* `M`);
109
+ * an inbound FK lives on `C` and leaves `M`'s plan untouched. Beyond the gate it fires
110
+ * unconditionally per delete/update change, but the engine no longer pays an `O(catalog)`
111
+ * scan: both calls route through `SchemaManager.getReferencingForeignKeys`, the precomputed
112
+ * reverse-FK index, so an `M` that nothing references resolves to the shared empty bucket and
113
+ * each call early-returns in O(1) — a maintained table with no inbound FK (the common case)
114
+ * pays only the pragma check plus one map lookup per delete/key-update change.
115
+ */
116
+ export declare function enforceParentSideReferentialActions(ctx: MaterializedViewManagerContext, plan: MaintenancePlan, changes: readonly BackingRowChange[]): Promise<void>;
117
+ /**
118
+ * Resolve the {@link BackingHost} capability surface for a backing table —
119
+ * see `vtab/backing-host.ts` for the contract. The host is resolved fresh per
120
+ * use (a map lookup on the owning module), so a drop+recreate of the backing
121
+ * always yields the new incarnation's host.
122
+ */
123
+ export declare function backingHost(ctx: MaterializedViewManagerContext, backing: TableSchema): BackingHost;
124
+ /**
125
+ * Obtain (lazily create + register) the backing table's
126
+ * {@link VirtualTableConnection} for the current transaction. Reuses the same
127
+ * connection a `select` from the MV resolves to (so reads-own-writes holds) —
128
+ * matched among the Database's registered connections by
129
+ * {@link BackingHost.ownsConnection}, which is pinned to the live backing
130
+ * incarnation; a freshly created connection is registered with the Database so
131
+ * the coordinated commit/rollback covers its pending state in lockstep with the
132
+ * source write.
133
+ *
134
+ * When an optional per-statement {@link BackingConnectionCache} is supplied, the
135
+ * scan over the Database's active connections (the dominant per-row cost on a bulk
136
+ * write) is paid once per (statement, backing): a hit returns the cached connection
137
+ * directly, and a miss caches whichever connection the scan resolves — or the one it
138
+ * lazily creates + registers. Caching the resolved/created connection is sound
139
+ * because the scan is deterministic within a statement (nothing interleaves between
140
+ * a statement's rows to change which connection a `select` from the MV picks), so the
141
+ * cache holds exactly what an uncached re-resolution would return.
142
+ */
143
+ export declare function getBackingConnection(ctx: MaterializedViewManagerContext, host: BackingHost, qualifiedName: string, cache?: BackingConnectionCache): Promise<VirtualTableConnection>;
144
+ /**
145
+ * Execute a cached key-filtered residual for one affected key tuple, returning its
146
+ * result rows (0 or 1 for the aggregate shape; 0..N for the lateral-TVF fan-out shape).
147
+ * Bound through a fresh {@link RuntimeContext} on the live `db` so the residual's source
148
+ * scan reuses `T`'s transaction connection and reads this statement's pending writes
149
+ * (reads-own-writes) — the synchronous analogue of
150
+ * `database-assertions.ts:executeResidualPerTuple`. Shared by the residual-recompute
151
+ * (`'gk'`) and prefix-delete (`'pk'`) arms.
152
+ */
153
+ export declare function runResidual(ctx: MaterializedViewManagerContext, residualScheduler: Scheduler, bindParamPrefix: 'gk' | 'pk', keyTuple: readonly SqlValue[]): Promise<Row[]>;
154
+ /**
155
+ * Run a cached maintenance scheduler to completion against **live mid-transaction source
156
+ * state** and collect its result rows. Bound through a fresh strict {@link RuntimeContext}
157
+ * on the live `db` so the scan reuses the source's transaction connection and reads this
158
+ * statement's pending writes (reads-own-writes). The no-`stmt`, fresh-context shape is the
159
+ * synchronous analogue of `database-assertions.ts:executeResidualPerTuple`. Shared by the
160
+ * key-filtered residual arms ({@link runResidual}, parameterized) and the whole-body
161
+ * full-rebuild arm ({@link applyFullRebuild}, no params).
162
+ */
163
+ export declare function runScheduler(ctx: MaterializedViewManagerContext, scheduler: Scheduler, params: Record<string, SqlValue>): Promise<Row[]>;
164
+ /**
165
+ * Compute a **forward** key-filtered residual plan's per-row backing delta and apply it:
166
+ * derive the affected binding key(s) from the changed row (OLD ∪ NEW, deduped), re-run
167
+ * the key-filtered residual against live source state for each, and apply the **keyed
168
+ * diff**: a non-empty recomputed slice is upserted (the backing key IS the affected key,
169
+ * so the upsert replaces the old row wholesale — no delete-first — and the host's
170
+ * value-identical upsert skip turns a no-op recompute into ZERO effective changes
171
+ * instead of delete+insert churn); an emptied slice (residual returns nothing) emits the
172
+ * point delete, removing the stale backing row (nothing reported if it was already
173
+ * absent). Returns the effective {@link BackingRowChange}(s) the backing layer realized,
174
+ * for the MV-over-MV cascade — a real same-key change now reports one `update`.
175
+ *
176
+ * Shared by the single-source aggregate (`'residual-recompute'`, group key, ≤1 row per
177
+ * key) and the 1:1-join (`'join-residual'`, the driving table `T`'s PK, exactly the one
178
+ * joined row per key) arms — both bind on the forward driving source via
179
+ * {@link ForwardResidualPlan}; the only difference is the binding (group vs PK).
180
+ *
181
+ * This is the **cold** (no statement batch in scope) inline path. A statement-batched
182
+ * caller instead accumulates the same deduped keys via
183
+ * {@link collectForwardResidualKeys} and recomputes each distinct key once at the
184
+ * end-of-statement flush ({@link computeForwardResidualOps}) — sound for the same
185
+ * last-write-wins reason: every recompute reads live (reads-own-writes) state, so
186
+ * running it once at flush produces exactly what the last per-row run would have.
187
+ */
188
+ export declare function applyForwardResidual(ctx: MaterializedViewManagerContext, plan: ForwardResidualPlan, change: BackingRowChange, cache?: BackingConnectionCache): Promise<BackingRowChange[]>;
189
+ /**
190
+ * Derive one changed source row's affected forward binding key(s) (OLD ∪ NEW) and add
191
+ * them to `into`, deduped on the canonical backing-key values: a non-key-changing update
192
+ * recomputes the group once; a key-changing update recomputes both the old and the new
193
+ * group. `into` may span a whole statement (the per-statement {@link ResidualKeyBatch})
194
+ * or a single change (the cold inline path) — the dedup is identical either way.
195
+ */
196
+ export declare function collectForwardResidualKeys(plan: ForwardResidualPlan, change: BackingRowChange, into: Map<string, ForwardResidualKey>): void;
197
+ /**
198
+ * Run the forward key-filtered residual once per affected key and build the keyed-diff
199
+ * ops: upsert the recomputed slice, or point-delete an emptied key. Pure op computation —
200
+ * the caller owns connection resolution and the single {@link BackingHost.applyMaintenance}
201
+ * call, so a statement flush can batch many keys' ops into one host call.
202
+ */
203
+ export declare function computeForwardResidualOps(ctx: MaterializedViewManagerContext, plan: ForwardResidualPlan, keys: Iterable<ForwardResidualKey>): Promise<MaintenanceOp[]>;
204
+ /**
205
+ * True iff `row`'s backing primary-key columns equal `keyVals` (the affected binding
206
+ * key, in `backingPkDefinition` order), under each column's collation. Used to keep
207
+ * only the residual row(s) belonging to the recomputed key — see
208
+ * {@link applyForwardResidual}.
209
+ */
210
+ export declare function residualRowMatchesKey(plan: ForwardResidualPlan, row: Row, keyVals: readonly SqlValue[]): boolean;
211
+ /**
212
+ * Dispatch a `'join-residual'` plan on **which source changed**. A write to the driving
213
+ * table `T` (`changedBase === plan.sourceBase`) is the forward case — recompute the one
214
+ * joined row keyed on `T`'s PK, identical to a size-1 `'row'`-binding residual — so it
215
+ * delegates straight to {@link applyForwardResidual} (delete old backing slice → run the
216
+ * `T`-keyed residual → upsert). A write to the lookup table `P` is the reverse case,
217
+ * handled by {@link applyLookupResidual}.
218
+ */
219
+ export declare function applyJoinResidual(ctx: MaterializedViewManagerContext, plan: JoinResidualPlan, change: BackingRowChange, changedBase: string, cache?: BackingConnectionCache): Promise<BackingRowChange[]>;
220
+ /**
221
+ * Maintain a `'join-residual'` MV for a **lookup-side (`P`)** change: refresh the joined
222
+ * rows referencing each affected `P` key. Derive the affected `P` key(s) from the changed
223
+ * row (OLD ∪ NEW, deduped on `P`'s PK), and for each run the in-scope lookup-keyed residual
224
+ * (`… where P.pk = :pk0`, the body's WHERE retained) against live source state — returning
225
+ * every currently in-scope joined row, each carrying its `T.pk` backing key — and **upsert**
226
+ * each.
227
+ *
228
+ * **Upsert-only is sound for a no-WHERE / `T`-only-WHERE body.** For an inner/cross join with
229
+ * enforced RI and a predicate that cannot reference `P`, the *set* of backing rows referencing
230
+ * a given `P` row is `{ T : T.fk = P.pk }`, determined entirely by `T.fk` (a `T` column the
231
+ * `P` write cannot change), and the WHERE — over `T` only — cannot flip on a `P` write. So a
232
+ * `P` change can only re-derive the lookup-projected columns of those existing backing rows
233
+ * (an upsert at the unchanged `T.pk` key), never add or remove one: a `P` insert with no
234
+ * referencing `T` rows yields an empty residual (no-op); a `P` delete is only admissible (RI)
235
+ * when no `T` references it (empty residual); a `P` payload update upserts the affected rows
236
+ * with the new value.
237
+ *
238
+ * **A `P`-referencing WHERE needs the delete-capable pass.** When the body WHERE references
239
+ * `P`, a `P` write can flip a joined row's WHERE truth and so add or remove its backing row —
240
+ * which the in-scope upsert above (it returns *only* in-scope rows) could never delete. The
241
+ * builder then supplies `lookupMembershipResidualScheduler` (the body with the WHERE stripped,
242
+ * keyed on `P`). Per affected `P` key this runs both residuals against the same live state and
243
+ * applies the **keyed diff**: it **deletes** only the membership keys the in-scope recompute no
244
+ * longer produces (rows that left scope — the delete keys come from live `T` via the join, so
245
+ * they match existing backing keys and touch nothing belonging to another `P`; membership and
246
+ * in-scope rows read the same live state, so their key bytes match exactly), and **upserts**
247
+ * every in-scope row. A row leaving scope is deleted (removed); a row entering scope is
248
+ * upserted (added); an unchanged in-scope row's upsert is suppressed by the host's
249
+ * value-identical skip (vtab/backing-host.ts) — ZERO effective changes instead of the former
250
+ * delete+insert refresh churn; a changed in-scope row reports one `update`. The membership
251
+ * residual MUST ignore the WHERE — else a row leaving scope would never be deleted.
252
+ *
253
+ * A `T`-side membership change (insert/delete/FK-move) is the *forward* path's job and fires
254
+ * its own maintenance. Returns the effective {@link BackingRowChange}(s) for the MV-over-MV
255
+ * cascade. This is the cold inline path; a statement-batched caller accumulates via
256
+ * {@link collectLookupResidualKeys} and recomputes at flush ({@link computeLookupResidualOps})
257
+ * — sound for the same last-write-wins-against-live-state reason as
258
+ * {@link applyForwardResidual}.
259
+ */
260
+ export declare function applyLookupResidual(ctx: MaterializedViewManagerContext, plan: JoinResidualPlan, change: BackingRowChange, cache?: BackingConnectionCache): Promise<BackingRowChange[]>;
261
+ /**
262
+ * Derive one changed lookup-side (`P`) row's affected lookup key(s) (OLD ∪ NEW) and add
263
+ * them to `into`, deduped on `P`'s canonical PK values. The statement-batch counterpart
264
+ * of the derivation inside {@link applyLookupResidual}.
265
+ */
266
+ export declare function collectLookupResidualKeys(plan: JoinResidualPlan, change: BackingRowChange, into: Map<string, SqlValue[]>): void;
267
+ /**
268
+ * Run the lookup-keyed residual variant once per affected `P` key and build the ops —
269
+ * the delete-capable membership diff when the plan carries
270
+ * `lookupMembershipResidualScheduler`, upsert-only otherwise (see
271
+ * {@link applyLookupResidual} for the soundness argument). Pure op computation; the
272
+ * caller owns connection resolution and the single applyMaintenance call.
273
+ */
274
+ export declare function computeLookupResidualOps(ctx: MaterializedViewManagerContext, plan: JoinResidualPlan, keys: Iterable<SqlValue[]>): Promise<MaintenanceOp[]>;
275
+ /**
276
+ * Compute a `'prefix-delete'` plan's per-row backing delta and apply it: derive the
277
+ * affected base key(s) from the changed row (OLD ∪ NEW, deduped on the base key), and
278
+ * for each — re-run the base-PK-keyed residual against live source state and apply the
279
+ * **keyed diff against the existing effective fan-out slice** (read via the host's
280
+ * `scanEffective` with the base prefix, pending over committed — the same contiguous
281
+ * range the former wholesale `'delete-by-prefix'` removed): delete ONLY the existing
282
+ * keys the recompute no longer produces, upsert every recomputed row (the host's
283
+ * value-identical skip suppresses the unchanged ones). A base-PK-changing UPDATE
284
+ * recomputes both the OLD base key (slice diffs to all-deletes; the residual returns
285
+ * nothing for the now-absent old PK) and the NEW base key (new fan-out upserted); a
286
+ * DELETE diffs the old slice to all-deletes; an INSERT diffs against an empty slice
287
+ * (all upserts). An emptied/shrunk fan-out keeps the delete-without-upsert exactly —
288
+ * a disappearance is never "skipped". Returns the effective
289
+ * {@link BackingRowChange}(s) the backing layer realized, for the MV-over-MV cascade.
290
+ *
291
+ * Prefix-scan soundness is unchanged from the wholesale arm: the diff's slice read
292
+ * uses the same binary `equalityPrefix` scan `'delete-by-prefix'` used, sound under
293
+ * the build-time collation gate (the backing base-PK prefix inherits the source PK
294
+ * collation, and source-PK uniqueness collapses each collation class to one binary
295
+ * value). The stored slice's prefix bytes always equal the OLD image's (the slice was
296
+ * projected from that very source row), and OLD ∪ NEW both iterate, so a case-only
297
+ * base-PK rewrite still converges: the OLD-prefix pass pairs the slice with the
298
+ * recomputed rows (key pairing is collation-aware — the btree's identity — so a
299
+ * collation-equal key is REPLACED by its upsert, never also deleted) and the byte
300
+ * change surfaces as `update`s that re-key the stored bytes.
301
+ *
302
+ * Structurally the same as {@link applyForwardResidual}, differing only in the
303
+ * **prefix-slice** diff (one base row owns N backing rows sharing the prefix) and the
304
+ * **N-row** residual. This is the cold inline path; a statement-batched caller
305
+ * accumulates the same deduped base keys via {@link collectPrefixDeleteKeys} and diffs
306
+ * each distinct key once at flush ({@link computePrefixDeleteOps}) — sound because the
307
+ * residual and the effective-slice read both see live (reads-own-writes) state, so the
308
+ * flush-time diff is exactly what the last per-row diff would have produced.
309
+ */
310
+ export declare function applyPrefixDelete(ctx: MaterializedViewManagerContext, plan: PrefixDeletePlan, change: BackingRowChange, cache?: BackingConnectionCache): Promise<BackingRowChange[]>;
311
+ /**
312
+ * Derive one changed base row's affected base key(s) (OLD ∪ NEW) and add them to
313
+ * `into`, deduped on the canonical base-PK values. `keyTuple` binds the residual
314
+ * (`pk{i}`); `prefix` is the slice's leading-PK equality key (the base-PK values in
315
+ * backing-PK order — identical here since the base PK leads the backing PK, but kept
316
+ * distinct for clarity). The statement-batch counterpart of the derivation inside
317
+ * {@link applyPrefixDelete}.
318
+ */
319
+ export declare function collectPrefixDeleteKeys(plan: PrefixDeletePlan, change: BackingRowChange, into: Map<string, PrefixDeleteKey>): void;
320
+ /**
321
+ * Per affected base key: run the fan-out residual, read the existing effective slice for
322
+ * the base prefix, and build the keyed-diff ops (delete disappeared keys, upsert the
323
+ * recomputed rows). Pure op computation over the supplied host/connection; the caller
324
+ * owns the single applyMaintenance call, so a statement flush batches many base keys'
325
+ * ops into one host call.
326
+ */
327
+ export declare function computePrefixDeleteOps(ctx: MaterializedViewManagerContext, plan: PrefixDeletePlan, keys: Iterable<PrefixDeleteKey>, host: BackingHost, connection: VirtualTableConnection): Promise<MaintenanceOp[]>;
328
+ /**
329
+ * True iff two backing rows agree on every backing-PK column under that column's
330
+ * collation — the btree's key identity. Pairs an existing slice row with the
331
+ * recomputed row that replaces it in {@link applyPrefixDelete}'s keyed diff.
332
+ */
333
+ export declare function backingPkEqual(pkDef: ReadonlyArray<BackingPkColumn>, a: Row, b: Row): boolean;
334
+ /**
335
+ * True iff `row`'s **leading** (base-prefix) backing-PK columns equal `prefixVals` (the
336
+ * affected base key, in backing-PK order), under each column's collation. Keeps only the
337
+ * residual fan-out row(s) belonging to the recomputed base key — see
338
+ * {@link applyPrefixDelete}.
339
+ */
340
+ export declare function residualRowMatchesBasePrefix(plan: PrefixDeletePlan, row: Row, prefixVals: readonly SqlValue[]): boolean;
341
+ /**
342
+ * Accumulate one source change's affected binding key(s) for a residual-arm plan into
343
+ * the per-statement {@link ResidualKeyBatch}, deduped across the whole statement —
344
+ * the deferred-accumulate counterpart of the cold per-row appliers above. Which
345
+ * variant map receives the keys follows the plan kind; a `'join-residual'` change
346
+ * routes on **which source changed** (forward for the driving `T`, lookup for `P`),
347
+ * exactly as {@link applyJoinResidual} dispatches. `planKey` is the MV key
348
+ * (lowercased `schema.name`) the manager indexes the plan under.
349
+ */
350
+ export declare function accumulateResidualKeys(plan: ResidualMaintenancePlan, change: BackingRowChange, changedBase: string, batch: ResidualKeyBatch, planKey: string): void;
351
+ /**
352
+ * Compute the flush-time ops for one residual-arm MV's accumulated statement keys: run
353
+ * the appropriate residual variant once per distinct key against live post-statement
354
+ * state and concatenate the keyed-diff ops. Distinct keys touch disjoint backing slices
355
+ * — except a `'join-residual'` statement that accumulated both forward and lookup keys,
356
+ * where an overlapping backing row is recomputed twice from the SAME live state, so the
357
+ * duplicate upsert is value-identical and the host suppresses it. The caller owns the
358
+ * single {@link BackingHost.applyMaintenance} call over the combined array — one host
359
+ * round-trip per (MV, flush round) instead of one per source row.
360
+ */
361
+ export declare function computeResidualBatchOps(ctx: MaterializedViewManagerContext, plan: ResidualMaintenancePlan, entry: ResidualKeyBatchEntry, host: BackingHost, connection: VirtualTableConnection): Promise<MaintenanceOp[]>;
362
+ /**
363
+ * Fold one source change's per-column aggregate contributions into the statement's
364
+ * delta accumulation ({@link ResidualKeyBatchEntry.delta}) — the delta-aggregate
365
+ * counterpart of {@link collectForwardResidualKeys}, called right after it (the
366
+ * residual keys remain the fallback record). Per contributing row image:
367
+ * `step(identity, row[arg])` (zero-arg → `step(identity)`) is the row's contribution;
368
+ * an insert `merge`s it in, a delete `merge`s its `negate`, an update retracts the OLD
369
+ * image into its group and inserts the NEW into its (possibly different) group. A row
370
+ * whose body-WHERE predicate is not unambiguously TRUE contributes nothing — but the
371
+ * raw column value (including NULL) IS fed to `step`, never pre-filtered: NULL-handling
372
+ * is the aggregate's own (law 2), and the row still counts toward the zero-arg
373
+ * multiplicity witness.
374
+ */
375
+ export declare function accumulateDeltaAggregates(plan: ResidualRecomputePlan, change: BackingRowChange, entry: ResidualKeyBatchEntry): void;
376
+ /**
377
+ * Flush-time op computation for a delta-aggregate MV's accumulated statement deltas —
378
+ * the arithmetic read-modify-write that replaces the per-group residual re-execution.
379
+ * Per affected group:
380
+ * 1. read the group's current EFFECTIVE backing row by its full PK (the host's
381
+ * `scanEffective` equality-prefix point read — pending over committed, so a group
382
+ * written by an earlier statement of this transaction folds correctly);
383
+ * 2. per aggregate column: base = stored ? `decode(stored[col])` : a fresh identity
384
+ * accumulator; finalized = `finalize(merge(base, delta))`;
385
+ * 3. the multiplicity witness finalizing to 0 ⇔ the group emptied → `delete-key`
386
+ * (skipped when no row was stored); otherwise upsert the rebuilt row (group-key
387
+ * values + finalized aggregates) — the host's value-identical skip suppresses a
388
+ * net-identity delta (MV-016).
389
+ *
390
+ * **Retraction fallback.** A group that accumulated a retraction re-derives from its
391
+ * residual key (always accumulated alongside, same canonical map key) instead of the
392
+ * arithmetic, in two cases:
393
+ * - the descriptor has a **tighten** column (min/max — merge, no negate): a retraction
394
+ * cannot be undone by merge, so the whole group re-derives from live source state
395
+ * **whether or not a row is stored** (an intra-statement delete of the extreme poisons
396
+ * even a from-identity net-fold). The residual recomputes every column of the row
397
+ * (count/sum included), so a mixed group+tighten row is maintained by ONE path — no
398
+ * double-maintenance;
399
+ * - otherwise the descriptor is not retraction-safe (an abelian column whose decode is
400
+ * only an insert-observational witness — a nullable-argument sum) AND a stored row
401
+ * exists: the stored value cannot prove the true contribution count survives the
402
+ * retraction, so decoding it is unsound. A group with no stored row needs no fallback
403
+ * here — a pure abelian net-fold from identity is exact.
404
+ *
405
+ * Zero source reads, no residual execution on the arithmetic path — this is why the
406
+ * delta path also BYPASSES the per-statement degrade-to-rebuild crossover (it is
407
+ * already O(affected groups)).
408
+ */
409
+ export declare function computeDeltaAggregateOps(ctx: MaterializedViewManagerContext, plan: ResidualRecomputePlan, entry: ResidualKeyBatchEntry, host: BackingHost, connection: VirtualTableConnection): Promise<MaintenanceOp[]>;
410
+ /**
411
+ * Invalidate every accumulated delta in the per-statement batch — called by the DML
412
+ * executor when an OR FAIL per-row savepoint ROLLS BACK: the savepoint undoes the
413
+ * failing row's source (and backing) writes, but the JS-side accumulation cannot be
414
+ * unwound, so the folded deltas may carry the reverted row's contribution. The residual
415
+ * keys are unaffected (a reverted key's recompute reads surviving live state and is
416
+ * value-identical → suppressed), so poisoning simply drops the fast path: the flush in
417
+ * the executor's catch routes those entries through the plain residual. One-way for the
418
+ * statement — `deltaPoisoned` also stops later (cascade-driven) delta re-accumulation
419
+ * into the same entry from mixing with an already-flushed-around state.
420
+ */
421
+ export declare function poisonResidualDeltaAccumulations(batch: ResidualKeyBatch): void;
422
+ //# sourceMappingURL=database-materialized-views-apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-materialized-views-apply.d.ts","sourceRoot":"","sources":["../../../src/core/database-materialized-views-apply.ts"],"names":[],"mappings":"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"}