@quereus/quereus 4.3.0 → 4.3.2

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 (730) 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 +1 -1
  10. package/dist/src/core/database-external-changes.js +1 -1
  11. package/dist/src/core/database-internal.d.ts.map +1 -1
  12. package/dist/src/core/database-materialized-views-analysis.d.ts +199 -0
  13. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -0
  14. package/dist/src/core/database-materialized-views-analysis.js +502 -0
  15. package/dist/src/core/database-materialized-views-analysis.js.map +1 -0
  16. package/dist/src/core/database-materialized-views-apply.d.ts +280 -0
  17. package/dist/src/core/database-materialized-views-apply.d.ts.map +1 -0
  18. package/dist/src/core/database-materialized-views-apply.js +624 -0
  19. package/dist/src/core/database-materialized-views-apply.js.map +1 -0
  20. package/dist/src/core/database-materialized-views-plan-builders.d.ts +203 -0
  21. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -0
  22. package/dist/src/core/database-materialized-views-plan-builders.js +1084 -0
  23. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -0
  24. package/dist/src/core/database-materialized-views-plans.d.ts +417 -0
  25. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -0
  26. package/dist/src/core/database-materialized-views-plans.js +13 -0
  27. package/dist/src/core/database-materialized-views-plans.js.map +1 -0
  28. package/dist/src/core/database-materialized-views.d.ts +11 -819
  29. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  30. package/dist/src/core/database-materialized-views.js +60 -2069
  31. package/dist/src/core/database-materialized-views.js.map +1 -1
  32. package/dist/src/core/database-transaction.d.ts +10 -1
  33. package/dist/src/core/database-transaction.d.ts.map +1 -1
  34. package/dist/src/core/database-transaction.js +16 -4
  35. package/dist/src/core/database-transaction.js.map +1 -1
  36. package/dist/src/core/database-watchers.d.ts.map +1 -1
  37. package/dist/src/core/database-watchers.js +2 -1
  38. package/dist/src/core/database-watchers.js.map +1 -1
  39. package/dist/src/core/database.d.ts +99 -13
  40. package/dist/src/core/database.d.ts.map +1 -1
  41. package/dist/src/core/database.js +250 -33
  42. package/dist/src/core/database.js.map +1 -1
  43. package/dist/src/core/derived-row-validator.d.ts +1 -1
  44. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  45. package/dist/src/core/derived-row-validator.js +5 -3
  46. package/dist/src/core/derived-row-validator.js.map +1 -1
  47. package/dist/src/core/statement.d.ts +8 -0
  48. package/dist/src/core/statement.d.ts.map +1 -1
  49. package/dist/src/core/statement.js +98 -18
  50. package/dist/src/core/statement.js.map +1 -1
  51. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  52. package/dist/src/emit/ast-stringify.js +24 -13
  53. package/dist/src/emit/ast-stringify.js.map +1 -1
  54. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  55. package/dist/src/func/builtins/explain.js +2 -1
  56. package/dist/src/func/builtins/explain.js.map +1 -1
  57. package/dist/src/func/builtins/json.d.ts.map +1 -1
  58. package/dist/src/func/builtins/json.js +2 -1
  59. package/dist/src/func/builtins/json.js.map +1 -1
  60. package/dist/src/func/builtins/mutation.d.ts.map +1 -1
  61. package/dist/src/func/builtins/mutation.js +3 -2
  62. package/dist/src/func/builtins/mutation.js.map +1 -1
  63. package/dist/src/index.d.ts +16 -6
  64. package/dist/src/index.d.ts.map +1 -1
  65. package/dist/src/index.js +33 -7
  66. package/dist/src/index.js.map +1 -1
  67. package/dist/src/parser/ast.d.ts +2 -2
  68. package/dist/src/parser/lexer.d.ts +11 -1
  69. package/dist/src/parser/lexer.d.ts.map +1 -1
  70. package/dist/src/parser/lexer.js +40 -34
  71. package/dist/src/parser/lexer.js.map +1 -1
  72. package/dist/src/parser/parser.d.ts.map +1 -1
  73. package/dist/src/parser/parser.js +16 -9
  74. package/dist/src/parser/parser.js.map +1 -1
  75. package/dist/src/planner/analysis/authored-inverse.js +1 -1
  76. package/dist/src/planner/analysis/comparison-collation.d.ts +52 -0
  77. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/comparison-collation.js +84 -7
  79. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  80. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  81. package/dist/src/planner/analysis/constraint-extractor.js +64 -17
  82. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  83. package/dist/src/planner/analysis/coverage-prover.d.ts +1 -1
  84. package/dist/src/planner/analysis/coverage-prover.js +1 -1
  85. package/dist/src/planner/analysis/sat-checker.d.ts +8 -1
  86. package/dist/src/planner/analysis/sat-checker.d.ts.map +1 -1
  87. package/dist/src/planner/analysis/sat-checker.js +117 -22
  88. package/dist/src/planner/analysis/sat-checker.js.map +1 -1
  89. package/dist/src/planner/analysis/scalar-invertibility.d.ts +13 -4
  90. package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -1
  91. package/dist/src/planner/analysis/scalar-invertibility.js +12 -3
  92. package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -1
  93. package/dist/src/planner/analysis/update-lineage.d.ts +1 -1
  94. package/dist/src/planner/analysis/update-lineage.js +1 -1
  95. package/dist/src/planner/analysis/update-lineage.js.map +1 -1
  96. package/dist/src/planner/analysis/view-complement.d.ts +2 -2
  97. package/dist/src/planner/building/delete.d.ts.map +1 -1
  98. package/dist/src/planner/building/delete.js +13 -2
  99. package/dist/src/planner/building/delete.js.map +1 -1
  100. package/dist/src/planner/building/dml-target.d.ts +2 -2
  101. package/dist/src/planner/building/dml-target.js +2 -2
  102. package/dist/src/planner/building/insert.d.ts.map +1 -1
  103. package/dist/src/planner/building/insert.js +53 -2
  104. package/dist/src/planner/building/insert.js.map +1 -1
  105. package/dist/src/planner/building/schema-resolution.d.ts +3 -0
  106. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  107. package/dist/src/planner/building/schema-resolution.js +4 -5
  108. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  109. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  110. package/dist/src/planner/building/select-aggregates.js +72 -4
  111. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  112. package/dist/src/planner/building/select.js +3 -3
  113. package/dist/src/planner/building/select.js.map +1 -1
  114. package/dist/src/planner/building/update.d.ts.map +1 -1
  115. package/dist/src/planner/building/update.js +16 -2
  116. package/dist/src/planner/building/update.js.map +1 -1
  117. package/dist/src/planner/building/view-mutation-builder.js +7 -7
  118. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  119. package/dist/src/planner/cache/materialization-advisory.d.ts +1 -2
  120. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  121. package/dist/src/planner/cache/materialization-advisory.js +21 -14
  122. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  123. package/dist/src/planner/cache/reference-graph.d.ts +14 -1
  124. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  125. package/dist/src/planner/cache/reference-graph.js +26 -26
  126. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  127. package/dist/src/planner/cost/index.d.ts +7 -3
  128. package/dist/src/planner/cost/index.d.ts.map +1 -1
  129. package/dist/src/planner/cost/index.js.map +1 -1
  130. package/dist/src/planner/debug.d.ts +3 -2
  131. package/dist/src/planner/debug.d.ts.map +1 -1
  132. package/dist/src/planner/debug.js +9 -3
  133. package/dist/src/planner/debug.js.map +1 -1
  134. package/dist/src/planner/framework/characteristics.d.ts +46 -19
  135. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  136. package/dist/src/planner/framework/characteristics.js +50 -134
  137. package/dist/src/planner/framework/characteristics.js.map +1 -1
  138. package/dist/src/planner/framework/context.d.ts +8 -44
  139. package/dist/src/planner/framework/context.d.ts.map +1 -1
  140. package/dist/src/planner/framework/context.js +0 -91
  141. package/dist/src/planner/framework/context.js.map +1 -1
  142. package/dist/src/planner/framework/pass.d.ts +7 -0
  143. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  144. package/dist/src/planner/framework/pass.js +84 -0
  145. package/dist/src/planner/framework/pass.js.map +1 -1
  146. package/dist/src/planner/framework/registry.d.ts +13 -42
  147. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  148. package/dist/src/planner/framework/registry.js +14 -182
  149. package/dist/src/planner/framework/registry.js.map +1 -1
  150. package/dist/src/planner/mutation/backward-body.d.ts +2 -2
  151. package/dist/src/planner/mutation/cte-flatten.js +1 -1
  152. package/dist/src/planner/mutation/decomposition.d.ts +2 -2
  153. package/dist/src/planner/mutation/decomposition.js +1 -1
  154. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  155. package/dist/src/planner/mutation/lens-enforcement.js +2 -1
  156. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  157. package/dist/src/planner/mutation/multi-source.d.ts +8 -8
  158. package/dist/src/planner/mutation/multi-source.js +11 -11
  159. package/dist/src/planner/mutation/multi-source.js.map +1 -1
  160. package/dist/src/planner/mutation/propagate.d.ts +1 -1
  161. package/dist/src/planner/mutation/propagate.js +1 -1
  162. package/dist/src/planner/mutation/scope-transform.d.ts +2 -2
  163. package/dist/src/planner/mutation/scope-transform.js +3 -3
  164. package/dist/src/planner/mutation/scope-transform.js.map +1 -1
  165. package/dist/src/planner/mutation/set-op.d.ts +1 -1
  166. package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
  167. package/dist/src/planner/mutation/set-op.js +3 -2
  168. package/dist/src/planner/mutation/set-op.js.map +1 -1
  169. package/dist/src/planner/mutation/single-source.d.ts +3 -3
  170. package/dist/src/planner/mutation/single-source.js +9 -9
  171. package/dist/src/planner/mutation/single-source.js.map +1 -1
  172. package/dist/src/planner/nodes/aggregate-function.d.ts +3 -1
  173. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
  174. package/dist/src/planner/nodes/aggregate-function.js +1 -0
  175. package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
  176. package/dist/src/planner/nodes/aggregate-node.d.ts +1 -0
  177. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  178. package/dist/src/planner/nodes/aggregate-node.js +8 -1
  179. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  180. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  181. package/dist/src/planner/nodes/alias-node.js +3 -1
  182. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  183. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  184. package/dist/src/planner/nodes/asof-scan-node.js +3 -2
  185. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  186. package/dist/src/planner/nodes/asserted-keys-node.d.ts +1 -1
  187. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  188. package/dist/src/planner/nodes/asserted-keys-node.js +5 -2
  189. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  190. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  191. package/dist/src/planner/nodes/async-gather-node.js +3 -1
  192. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  193. package/dist/src/planner/nodes/block.js +3 -3
  194. package/dist/src/planner/nodes/block.js.map +1 -1
  195. package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
  196. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  197. package/dist/src/planner/nodes/bloom-join-node.js +5 -1
  198. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  199. package/dist/src/planner/nodes/cache-node.d.ts +1 -0
  200. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  201. package/dist/src/planner/nodes/cache-node.js +1 -0
  202. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  203. package/dist/src/planner/nodes/cte-node.d.ts +1 -0
  204. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/cte-node.js +4 -1
  206. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  207. package/dist/src/planner/nodes/distinct-node.js +3 -3
  208. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  209. package/dist/src/planner/nodes/dml-executor-node.d.ts +21 -0
  210. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  211. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  212. package/dist/src/planner/nodes/envelope-scan-node.d.ts +1 -1
  213. package/dist/src/planner/nodes/envelope-scan-node.js +1 -1
  214. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  215. package/dist/src/planner/nodes/fanout-lookup-join-node.js +4 -2
  216. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  217. package/dist/src/planner/nodes/filter.d.ts +10 -2
  218. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  219. package/dist/src/planner/nodes/filter.js +81 -14
  220. package/dist/src/planner/nodes/filter.js.map +1 -1
  221. package/dist/src/planner/nodes/hash-aggregate.d.ts +12 -1
  222. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  223. package/dist/src/planner/nodes/hash-aggregate.js +28 -1
  224. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  225. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -1
  226. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
  227. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -0
  228. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
  229. package/dist/src/planner/nodes/join-node.d.ts +3 -1
  230. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  231. package/dist/src/planner/nodes/join-node.js +5 -5
  232. package/dist/src/planner/nodes/join-node.js.map +1 -1
  233. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  234. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +4 -1
  235. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  236. package/dist/src/planner/nodes/limit-offset.d.ts +1 -0
  237. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  238. package/dist/src/planner/nodes/limit-offset.js +4 -3
  239. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  240. package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
  241. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  242. package/dist/src/planner/nodes/merge-join-node.js +6 -1
  243. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  244. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  245. package/dist/src/planner/nodes/ordinal-slice-node.js +3 -1
  246. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  247. package/dist/src/planner/nodes/plan-node.d.ts +68 -5
  248. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  249. package/dist/src/planner/nodes/plan-node.js +137 -24
  250. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  251. package/dist/src/planner/nodes/project-node.d.ts +3 -2
  252. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  253. package/dist/src/planner/nodes/project-node.js +1 -0
  254. package/dist/src/planner/nodes/project-node.js.map +1 -1
  255. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  256. package/dist/src/planner/nodes/recursive-cte-node.js +8 -2
  257. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  258. package/dist/src/planner/nodes/reference.d.ts +5 -1
  259. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  260. package/dist/src/planner/nodes/reference.js +3 -0
  261. package/dist/src/planner/nodes/reference.js.map +1 -1
  262. package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
  263. package/dist/src/planner/nodes/remote-query-node.js +3 -1
  264. package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
  265. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  266. package/dist/src/planner/nodes/retrieve-node.js +3 -1
  267. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  268. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  269. package/dist/src/planner/nodes/set-operation-node.js +3 -1
  270. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  271. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  272. package/dist/src/planner/nodes/sink-node.js +3 -1
  273. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  274. package/dist/src/planner/nodes/sort.d.ts +2 -1
  275. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  276. package/dist/src/planner/nodes/sort.js +9 -5
  277. package/dist/src/planner/nodes/sort.js.map +1 -1
  278. package/dist/src/planner/nodes/stream-aggregate.d.ts +12 -1
  279. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  280. package/dist/src/planner/nodes/stream-aggregate.js +32 -3
  281. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  282. package/dist/src/planner/nodes/table-access-nodes.d.ts +2 -1
  283. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  284. package/dist/src/planner/nodes/table-access-nodes.js +2 -0
  285. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  286. package/dist/src/planner/nodes/view-mutation-node.d.ts +2 -2
  287. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  288. package/dist/src/planner/nodes/view-mutation-node.js +5 -1
  289. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  290. package/dist/src/planner/nodes/window-function.d.ts +3 -1
  291. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  292. package/dist/src/planner/nodes/window-function.js +1 -0
  293. package/dist/src/planner/nodes/window-function.js.map +1 -1
  294. package/dist/src/planner/optimizer.d.ts +52 -8
  295. package/dist/src/planner/optimizer.d.ts.map +1 -1
  296. package/dist/src/planner/optimizer.js +885 -894
  297. package/dist/src/planner/optimizer.js.map +1 -1
  298. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  299. package/dist/src/planner/rules/access/rule-select-access-path.js +235 -202
  300. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  301. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +2 -2
  302. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +2 -2
  303. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +1 -1
  304. package/dist/src/planner/rules/cache/rule-scalar-cse.js +1 -1
  305. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +1 -1
  306. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +1 -1
  307. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +1 -1
  308. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +1 -1
  309. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +1 -1
  310. package/dist/src/planner/rules/join/rule-join-elimination.js +1 -1
  311. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +5 -6
  312. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  313. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
  314. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
  315. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +2 -2
  316. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
  317. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +4 -3
  318. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
  319. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +19 -0
  320. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -0
  321. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +48 -0
  322. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -0
  323. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +12 -1
  324. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -1
  325. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  326. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +90 -26
  327. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  328. package/dist/src/planner/rules/shared/index-style-context.d.ts +39 -0
  329. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -0
  330. package/dist/src/planner/rules/shared/index-style-context.js +26 -0
  331. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -0
  332. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
  333. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +1 -1
  334. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +1 -1
  335. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
  336. package/dist/src/planner/scopes/registered.d.ts +21 -0
  337. package/dist/src/planner/scopes/registered.d.ts.map +1 -1
  338. package/dist/src/planner/scopes/registered.js +31 -1
  339. package/dist/src/planner/scopes/registered.js.map +1 -1
  340. package/dist/src/planner/stats/analyze.d.ts.map +1 -1
  341. package/dist/src/planner/stats/analyze.js +2 -20
  342. package/dist/src/planner/stats/analyze.js.map +1 -1
  343. package/dist/src/planner/stats/histogram.d.ts.map +1 -1
  344. package/dist/src/planner/stats/histogram.js +4 -0
  345. package/dist/src/planner/stats/histogram.js.map +1 -1
  346. package/dist/src/planner/util/fd-utils.d.ts +2 -3
  347. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  348. package/dist/src/planner/util/fd-utils.js +2 -3
  349. package/dist/src/planner/util/fd-utils.js.map +1 -1
  350. package/dist/src/planner/validation/plan-validator.d.ts +16 -0
  351. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  352. package/dist/src/planner/validation/plan-validator.js +36 -0
  353. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  354. package/dist/src/runtime/async-util.d.ts +26 -0
  355. package/dist/src/runtime/async-util.d.ts.map +1 -1
  356. package/dist/src/runtime/async-util.js +139 -55
  357. package/dist/src/runtime/async-util.js.map +1 -1
  358. package/dist/src/runtime/context-helpers.d.ts +32 -4
  359. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  360. package/dist/src/runtime/context-helpers.js +26 -9
  361. package/dist/src/runtime/context-helpers.js.map +1 -1
  362. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  363. package/dist/src/runtime/deferred-constraint-queue.js +2 -1
  364. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  365. package/dist/src/runtime/emission-context.d.ts +27 -3
  366. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  367. package/dist/src/runtime/emission-context.js +38 -7
  368. package/dist/src/runtime/emission-context.js.map +1 -1
  369. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  370. package/dist/src/runtime/emit/add-constraint.js +7 -1
  371. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  372. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  373. package/dist/src/runtime/emit/aggregate.js +17 -13
  374. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  375. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  376. package/dist/src/runtime/emit/alter-table.js +98 -9
  377. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  378. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  379. package/dist/src/runtime/emit/analyze.js +2 -1
  380. package/dist/src/runtime/emit/analyze.js.map +1 -1
  381. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  382. package/dist/src/runtime/emit/asof-scan.js +13 -10
  383. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  384. package/dist/src/runtime/emit/async-gather.d.ts.map +1 -1
  385. package/dist/src/runtime/emit/async-gather.js +4 -3
  386. package/dist/src/runtime/emit/async-gather.js.map +1 -1
  387. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  388. package/dist/src/runtime/emit/between.js +2 -1
  389. package/dist/src/runtime/emit/between.js.map +1 -1
  390. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  391. package/dist/src/runtime/emit/binary.js +122 -14
  392. package/dist/src/runtime/emit/binary.js.map +1 -1
  393. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  394. package/dist/src/runtime/emit/block.js +2 -1
  395. package/dist/src/runtime/emit/block.js.map +1 -1
  396. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  397. package/dist/src/runtime/emit/bloom-join.js +20 -8
  398. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  399. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  400. package/dist/src/runtime/emit/cache.js +2 -1
  401. package/dist/src/runtime/emit/cache.js.map +1 -1
  402. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  403. package/dist/src/runtime/emit/case.js +66 -45
  404. package/dist/src/runtime/emit/case.js.map +1 -1
  405. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  406. package/dist/src/runtime/emit/cast.js +2 -1
  407. package/dist/src/runtime/emit/cast.js.map +1 -1
  408. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  409. package/dist/src/runtime/emit/constraint-check.js +13 -7
  410. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  411. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  412. package/dist/src/runtime/emit/create-assertion.js +2 -1
  413. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  414. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  415. package/dist/src/runtime/emit/create-index.js +12 -1
  416. package/dist/src/runtime/emit/create-index.js.map +1 -1
  417. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  418. package/dist/src/runtime/emit/create-table.js +12 -1
  419. package/dist/src/runtime/emit/create-table.js.map +1 -1
  420. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  421. package/dist/src/runtime/emit/cte-reference.js +2 -1
  422. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  423. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  424. package/dist/src/runtime/emit/cte.js +2 -1
  425. package/dist/src/runtime/emit/cte.js.map +1 -1
  426. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts +50 -0
  427. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts.map +1 -0
  428. package/dist/src/runtime/emit/ddl-transaction-policy.js +69 -0
  429. package/dist/src/runtime/emit/ddl-transaction-policy.js.map +1 -0
  430. package/dist/src/runtime/emit/delete.d.ts.map +1 -1
  431. package/dist/src/runtime/emit/delete.js +2 -1
  432. package/dist/src/runtime/emit/delete.js.map +1 -1
  433. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  434. package/dist/src/runtime/emit/distinct.js +2 -1
  435. package/dist/src/runtime/emit/distinct.js.map +1 -1
  436. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  437. package/dist/src/runtime/emit/dml-executor.js +147 -34
  438. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  439. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  440. package/dist/src/runtime/emit/drop-assertion.js +2 -1
  441. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  442. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  443. package/dist/src/runtime/emit/drop-index.js +17 -1
  444. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  445. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  446. package/dist/src/runtime/emit/drop-table.js +11 -1
  447. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  448. package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -1
  449. package/dist/src/runtime/emit/eager-prefetch.js +2 -1
  450. package/dist/src/runtime/emit/eager-prefetch.js.map +1 -1
  451. package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -1
  452. package/dist/src/runtime/emit/envelope-scan.js +2 -1
  453. package/dist/src/runtime/emit/envelope-scan.js.map +1 -1
  454. package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -1
  455. package/dist/src/runtime/emit/fanout-lookup-join.js +3 -2
  456. package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -1
  457. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  458. package/dist/src/runtime/emit/filter.js +8 -3
  459. package/dist/src/runtime/emit/filter.js.map +1 -1
  460. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  461. package/dist/src/runtime/emit/hash-aggregate.js +16 -11
  462. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  463. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  464. package/dist/src/runtime/emit/insert.js +2 -1
  465. package/dist/src/runtime/emit/insert.js.map +1 -1
  466. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  467. package/dist/src/runtime/emit/join.js +20 -6
  468. package/dist/src/runtime/emit/join.js.map +1 -1
  469. package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
  470. package/dist/src/runtime/emit/limit-offset.js +2 -1
  471. package/dist/src/runtime/emit/limit-offset.js.map +1 -1
  472. package/dist/src/runtime/emit/literal.d.ts.map +1 -1
  473. package/dist/src/runtime/emit/literal.js +2 -1
  474. package/dist/src/runtime/emit/literal.js.map +1 -1
  475. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +22 -0
  476. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  477. package/dist/src/runtime/emit/materialized-view-helpers.js +123 -12
  478. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  479. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  480. package/dist/src/runtime/emit/materialized-view.js +6 -0
  481. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  482. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  483. package/dist/src/runtime/emit/merge-join.js +14 -4
  484. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  485. package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -1
  486. package/dist/src/runtime/emit/ordinal-slice.js +2 -1
  487. package/dist/src/runtime/emit/ordinal-slice.js.map +1 -1
  488. package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
  489. package/dist/src/runtime/emit/pragma.js +2 -1
  490. package/dist/src/runtime/emit/pragma.js.map +1 -1
  491. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  492. package/dist/src/runtime/emit/project.js +7 -2
  493. package/dist/src/runtime/emit/project.js.map +1 -1
  494. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  495. package/dist/src/runtime/emit/recursive-cte.js +2 -1
  496. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  497. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  498. package/dist/src/runtime/emit/returning.js +7 -2
  499. package/dist/src/runtime/emit/returning.js.map +1 -1
  500. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  501. package/dist/src/runtime/emit/scalar-function.js +2 -1
  502. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  503. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  504. package/dist/src/runtime/emit/scan.js +55 -17
  505. package/dist/src/runtime/emit/scan.js.map +1 -1
  506. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  507. package/dist/src/runtime/emit/schema-declarative.js +6 -5
  508. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  509. package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
  510. package/dist/src/runtime/emit/sequencing.js +2 -1
  511. package/dist/src/runtime/emit/sequencing.js.map +1 -1
  512. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  513. package/dist/src/runtime/emit/set-operation.js +6 -5
  514. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  515. package/dist/src/runtime/emit/sink.d.ts.map +1 -1
  516. package/dist/src/runtime/emit/sink.js +2 -1
  517. package/dist/src/runtime/emit/sink.js.map +1 -1
  518. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  519. package/dist/src/runtime/emit/sort.js +2 -1
  520. package/dist/src/runtime/emit/sort.js.map +1 -1
  521. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  522. package/dist/src/runtime/emit/subquery.js +42 -23
  523. package/dist/src/runtime/emit/subquery.js.map +1 -1
  524. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  525. package/dist/src/runtime/emit/table-valued-function.js +2 -1
  526. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  527. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  528. package/dist/src/runtime/emit/temporal-arithmetic.js +2 -1
  529. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  530. package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
  531. package/dist/src/runtime/emit/transaction.js +2 -1
  532. package/dist/src/runtime/emit/transaction.js.map +1 -1
  533. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  534. package/dist/src/runtime/emit/unary.js +2 -1
  535. package/dist/src/runtime/emit/unary.js.map +1 -1
  536. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  537. package/dist/src/runtime/emit/update.js +2 -1
  538. package/dist/src/runtime/emit/update.js.map +1 -1
  539. package/dist/src/runtime/emit/values.d.ts.map +1 -1
  540. package/dist/src/runtime/emit/values.js +2 -1
  541. package/dist/src/runtime/emit/values.js.map +1 -1
  542. package/dist/src/runtime/emit/view-mutation.d.ts +1 -1
  543. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  544. package/dist/src/runtime/emit/view-mutation.js +6 -3
  545. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  546. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  547. package/dist/src/runtime/emit/window.js +26 -9
  548. package/dist/src/runtime/emit/window.js.map +1 -1
  549. package/dist/src/runtime/emitters.d.ts +11 -3
  550. package/dist/src/runtime/emitters.d.ts.map +1 -1
  551. package/dist/src/runtime/emitters.js +13 -22
  552. package/dist/src/runtime/emitters.js.map +1 -1
  553. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  554. package/dist/src/runtime/foreign-key-actions.js +39 -13
  555. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  556. package/dist/src/runtime/parallel-driver.d.ts +18 -4
  557. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  558. package/dist/src/runtime/parallel-driver.js +72 -18
  559. package/dist/src/runtime/parallel-driver.js.map +1 -1
  560. package/dist/src/runtime/scheduler.d.ts +56 -7
  561. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  562. package/dist/src/runtime/scheduler.js +223 -200
  563. package/dist/src/runtime/scheduler.js.map +1 -1
  564. package/dist/src/runtime/strict-flags.d.ts +22 -0
  565. package/dist/src/runtime/strict-flags.d.ts.map +1 -0
  566. package/dist/src/runtime/strict-flags.js +26 -0
  567. package/dist/src/runtime/strict-flags.js.map +1 -0
  568. package/dist/src/runtime/strict-fork.d.ts +4 -4
  569. package/dist/src/runtime/strict-fork.d.ts.map +1 -1
  570. package/dist/src/runtime/strict-fork.js +175 -31
  571. package/dist/src/runtime/strict-fork.js.map +1 -1
  572. package/dist/src/runtime/types.d.ts +66 -4
  573. package/dist/src/runtime/types.d.ts.map +1 -1
  574. package/dist/src/runtime/types.js +37 -0
  575. package/dist/src/runtime/types.js.map +1 -1
  576. package/dist/src/runtime/utils.d.ts.map +1 -1
  577. package/dist/src/runtime/utils.js +8 -17
  578. package/dist/src/runtime/utils.js.map +1 -1
  579. package/dist/src/schema/column.d.ts +8 -0
  580. package/dist/src/schema/column.d.ts.map +1 -1
  581. package/dist/src/schema/column.js.map +1 -1
  582. package/dist/src/schema/ddl-generator.js +5 -0
  583. package/dist/src/schema/ddl-generator.js.map +1 -1
  584. package/dist/src/schema/lens-compiler.js +2 -2
  585. package/dist/src/schema/lens-compiler.js.map +1 -1
  586. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  587. package/dist/src/schema/lens-prover.js +2 -3
  588. package/dist/src/schema/lens-prover.js.map +1 -1
  589. package/dist/src/schema/lens.d.ts +1 -1
  590. package/dist/src/schema/manager.d.ts.map +1 -1
  591. package/dist/src/schema/manager.js +7 -2
  592. package/dist/src/schema/manager.js.map +1 -1
  593. package/dist/src/schema/rename-rewriter.d.ts +61 -0
  594. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  595. package/dist/src/schema/rename-rewriter.js +77 -0
  596. package/dist/src/schema/rename-rewriter.js.map +1 -1
  597. package/dist/src/schema/table.d.ts +36 -8
  598. package/dist/src/schema/table.d.ts.map +1 -1
  599. package/dist/src/schema/table.js +61 -11
  600. package/dist/src/schema/table.js.map +1 -1
  601. package/dist/src/schema/unique-enforcement.d.ts +28 -5
  602. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  603. package/dist/src/schema/unique-enforcement.js +37 -5
  604. package/dist/src/schema/unique-enforcement.js.map +1 -1
  605. package/dist/src/schema/view.d.ts +1 -1
  606. package/dist/src/schema/view.js +1 -1
  607. package/dist/src/types/json-type.d.ts.map +1 -1
  608. package/dist/src/types/json-type.js +18 -8
  609. package/dist/src/types/json-type.js.map +1 -1
  610. package/dist/src/types/logical-type.d.ts +26 -0
  611. package/dist/src/types/logical-type.d.ts.map +1 -1
  612. package/dist/src/types/logical-type.js.map +1 -1
  613. package/dist/src/util/comparison.d.ts +83 -59
  614. package/dist/src/util/comparison.d.ts.map +1 -1
  615. package/dist/src/util/comparison.js +191 -131
  616. package/dist/src/util/comparison.js.map +1 -1
  617. package/dist/src/util/json-canonical.d.ts +34 -0
  618. package/dist/src/util/json-canonical.d.ts.map +1 -0
  619. package/dist/src/util/json-canonical.js +32 -0
  620. package/dist/src/util/json-canonical.js.map +1 -0
  621. package/dist/src/util/key-serializer.d.ts +10 -3
  622. package/dist/src/util/key-serializer.d.ts.map +1 -1
  623. package/dist/src/util/key-serializer.js +43 -17
  624. package/dist/src/util/key-serializer.js.map +1 -1
  625. package/dist/src/util/key-tuple-codec.d.ts +37 -0
  626. package/dist/src/util/key-tuple-codec.d.ts.map +1 -0
  627. package/dist/src/util/key-tuple-codec.js +65 -0
  628. package/dist/src/util/key-tuple-codec.js.map +1 -0
  629. package/dist/src/util/latches.d.ts +29 -3
  630. package/dist/src/util/latches.d.ts.map +1 -1
  631. package/dist/src/util/latches.js +60 -6
  632. package/dist/src/util/latches.js.map +1 -1
  633. package/dist/src/util/patterns.d.ts +22 -8
  634. package/dist/src/util/patterns.d.ts.map +1 -1
  635. package/dist/src/util/patterns.js +87 -16
  636. package/dist/src/util/patterns.js.map +1 -1
  637. package/dist/src/util/qualified-name.d.ts +10 -0
  638. package/dist/src/util/qualified-name.d.ts.map +1 -0
  639. package/dist/src/util/qualified-name.js +15 -0
  640. package/dist/src/util/qualified-name.js.map +1 -0
  641. package/dist/src/vtab/backing-host.d.ts +8 -1
  642. package/dist/src/vtab/backing-host.d.ts.map +1 -1
  643. package/dist/src/vtab/backing-host.js +7 -0
  644. package/dist/src/vtab/backing-host.js.map +1 -1
  645. package/dist/src/vtab/best-access-plan.d.ts +18 -0
  646. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  647. package/dist/src/vtab/best-access-plan.js +15 -0
  648. package/dist/src/vtab/best-access-plan.js.map +1 -1
  649. package/dist/src/vtab/capabilities.d.ts +44 -0
  650. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  651. package/dist/src/vtab/filter-info.d.ts +42 -0
  652. package/dist/src/vtab/filter-info.d.ts.map +1 -1
  653. package/dist/src/vtab/filter-info.js +137 -1
  654. package/dist/src/vtab/filter-info.js.map +1 -1
  655. package/dist/src/vtab/idx-str.d.ts +62 -0
  656. package/dist/src/vtab/idx-str.d.ts.map +1 -0
  657. package/dist/src/vtab/idx-str.js +130 -0
  658. package/dist/src/vtab/idx-str.js.map +1 -0
  659. package/dist/src/vtab/index-descriptor.d.ts +122 -0
  660. package/dist/src/vtab/index-descriptor.d.ts.map +1 -0
  661. package/dist/src/vtab/index-descriptor.js +104 -0
  662. package/dist/src/vtab/index-descriptor.js.map +1 -0
  663. package/dist/src/vtab/mapping-advertisement.d.ts +1 -1
  664. package/dist/src/vtab/memory/index.d.ts +12 -4
  665. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  666. package/dist/src/vtab/memory/index.js +17 -9
  667. package/dist/src/vtab/memory/index.js.map +1 -1
  668. package/dist/src/vtab/memory/layer/base.d.ts +85 -31
  669. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  670. package/dist/src/vtab/memory/layer/base.js +127 -86
  671. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  672. package/dist/src/vtab/memory/layer/connection.d.ts +27 -0
  673. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  674. package/dist/src/vtab/memory/layer/connection.js +36 -1
  675. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  676. package/dist/src/vtab/memory/layer/interface.d.ts +24 -4
  677. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  678. package/dist/src/vtab/memory/layer/manager.d.ts +212 -16
  679. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  680. package/dist/src/vtab/memory/layer/manager.js +754 -170
  681. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  682. package/dist/src/vtab/memory/layer/plan-filter.d.ts +26 -1
  683. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  684. package/dist/src/vtab/memory/layer/plan-filter.js +29 -11
  685. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  686. package/dist/src/vtab/memory/layer/safe-iterate.d.ts +2 -2
  687. package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
  688. package/dist/src/vtab/memory/layer/safe-iterate.js +2 -2
  689. package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
  690. package/dist/src/vtab/memory/layer/scan-layer.d.ts +5 -1
  691. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  692. package/dist/src/vtab/memory/layer/scan-layer.js +38 -22
  693. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  694. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  695. package/dist/src/vtab/memory/layer/scan-plan.js +13 -21
  696. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  697. package/dist/src/vtab/memory/layer/transaction.d.ts +169 -7
  698. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  699. package/dist/src/vtab/memory/layer/transaction.js +334 -9
  700. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  701. package/dist/src/vtab/memory/module.d.ts +21 -4
  702. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  703. package/dist/src/vtab/memory/module.js +45 -16
  704. package/dist/src/vtab/memory/module.js.map +1 -1
  705. package/dist/src/vtab/memory/table.d.ts +30 -4
  706. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  707. package/dist/src/vtab/memory/table.js +63 -15
  708. package/dist/src/vtab/memory/table.js.map +1 -1
  709. package/dist/src/vtab/memory/utils/predicate.d.ts +9 -1
  710. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  711. package/dist/src/vtab/memory/utils/predicate.js +35 -14
  712. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  713. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -1
  714. package/dist/src/vtab/memory/utils/primary-key-encode.js +12 -6
  715. package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -1
  716. package/dist/src/vtab/memory/utils/primary-key.d.ts +6 -1
  717. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  718. package/dist/src/vtab/memory/utils/primary-key.js +12 -8
  719. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  720. package/dist/src/vtab/module.d.ts +64 -14
  721. package/dist/src/vtab/module.d.ts.map +1 -1
  722. package/dist/src/vtab/table.d.ts +41 -2
  723. package/dist/src/vtab/table.d.ts.map +1 -1
  724. package/dist/src/vtab/table.js +19 -0
  725. package/dist/src/vtab/table.js.map +1 -1
  726. package/package.json +5 -4
  727. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +0 -18
  728. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +0 -1
  729. package/dist/src/planner/rules/cache/rule-materialization-advisory.js +0 -65
  730. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-materialized-views-plan-builders.js","sourceRoot":"","sources":["../../../src/core/database-materialized-views-plan-builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,417 @@
1
+ /**
2
+ * Materialized-view maintenance — plan types and the manager's decoupling context.
3
+ *
4
+ * The tagged {@link MaintenancePlan} union (one arm per maintenance strategy) plus the
5
+ * shared plan shapes, the per-column {@link BackingProjector}, the coarsening-collision
6
+ * watch column, the per-statement {@link BackingConnectionCache}, and the
7
+ * {@link MaterializedViewManagerContext} the manager runs against. Split out of
8
+ * `database-materialized-views.ts` (its class + orchestration) so the type surface reads
9
+ * on its own; see that file and `docs/mv-maintenance.md` for how each arm is built and
10
+ * applied.
11
+ */
12
+ import type { SchemaManager } from '../schema/manager.js';
13
+ import type { SqlValue, Row } from '../common/types.js';
14
+ import type { CollationFunction, CollationResolver } from '../types/logical-type.js';
15
+ import type { PrimaryKeyColumnDefinition } from '../schema/table.js';
16
+ import { Scheduler } from '../runtime/scheduler.js';
17
+ import type { BindingMode } from '../planner/analysis/binding-extractor.js';
18
+ import type { MaintenanceSourceStats, MaintenanceStrategy } from '../planner/cost/index.js';
19
+ import type { DerivedRowConstraintValidator } from './derived-row-validator.js';
20
+ import type { MaintainedTableSchema } from '../schema/derivation.js';
21
+ import type { VirtualTableConnection } from '../vtab/connection.js';
22
+ import type { CompiledPredicate } from '../vtab/memory/utils/predicate.js';
23
+ import type { Database } from './database.js';
24
+ import type { DatabaseEventEmitter } from './database-events.js';
25
+ import type * as AST from '../parser/ast.js';
26
+ /**
27
+ * Database internals the materialized-view manager needs. Mirrors
28
+ * `AssertionEvaluatorContext` / `WatcherManagerContext` — keeps the manager
29
+ * decoupled from the full `Database`.
30
+ */
31
+ export interface MaterializedViewManagerContext {
32
+ readonly schemaManager: SchemaManager;
33
+ readonly optimizer: Database['optimizer'];
34
+ /** Database event emitter — the row-time collision telemetry channel
35
+ * ({@link MaterializedViewManager.detectAndReportCoarseningCollisions}) queues
36
+ * {@link MaintenanceCollisionEvent}s here. Already exposed for the transaction
37
+ * manager; reused narrowly. */
38
+ getEventEmitter(): DatabaseEventEmitter;
39
+ /** Name→function collation lookup against the owning database's registry (throws on an
40
+ * unregistered name). Every collation-aware comparison the manager makes — key identity,
41
+ * UNIQUE self-conflict, coarsening-collision divergence — resolves through this, so a
42
+ * collation registered with `db.registerCollation(...)` is honored instead of silently
43
+ * degrading to byte comparison. */
44
+ getCollationResolver(): CollationResolver;
45
+ _buildPlan(statements: AST.Statement[]): import('./database.js').BuildPlanResult;
46
+ _findTable(tableName: string, schemaName?: string): ReturnType<Database['_findTable']>;
47
+ /** Backing-connection resolution for row-time write-through (see {@link MaterializedViewManager.getBackingConnection}). */
48
+ getConnectionsForTable(tableName: string): VirtualTableConnection[];
49
+ registerConnection(connection: VirtualTableConnection): Promise<void>;
50
+ }
51
+ /**
52
+ * A compiled per-MV maintenance plan — how {@link MaterializedViewManager.applyMaintenancePlan}
53
+ * keeps an MV's backing table consistent with a source row-write. A tagged union over
54
+ * the maintenance strategies the incremental substrate names (the spike's
55
+ * `incremental-maintenance-substrate-spike` design). The builder
56
+ * ({@link MaterializedViewManager.buildMaintenancePlan}) produces four bounded-delta arms:
57
+ * `'inverse-projection'` (the covering-index shape), `'residual-recompute'` (single-source
58
+ * aggregates), `'prefix-delete'` (single-source lateral-TVF fan-out), and `'join-residual'`
59
+ * (the provably-1:1 inner join) — each applied **per source row, immediately**. The
60
+ * `'full-rebuild'` floor (the always-correct convergence point for bodies no bounded-delta
61
+ * arm fits) is the fall-through the builder routes to whenever no bounded-delta arm matches;
62
+ * it is the one **deferred** arm — marked dirty per row and rebuilt once per statement at
63
+ * {@link MaterializedViewManager.flushDeferredRebuilds}.
64
+ */
65
+ export type MaintenancePlan = InverseProjectionPlan | FullRebuildPlan | ResidualRecomputePlan | PrefixDeletePlan | JoinResidualPlan;
66
+ /**
67
+ * One backing primary-key column as a {@link MaintenancePlan} sees it: the btree's declared
68
+ * `(index, direction, collation-name)` triple plus the collation *function* the name resolves
69
+ * to, resolved once when the plan is built (`resolveBackingPkColumns`).
70
+ *
71
+ * The name stays for logging and plan equality; the function is what the per-row key
72
+ * comparisons in `database-materialized-views-apply.ts` call, so they never pay a registry
73
+ * lookup — nor silently fall back to byte comparison — per row.
74
+ */
75
+ export interface BackingPkColumn extends PrimaryKeyColumnDefinition {
76
+ /** Resolved comparator for {@link collation}; BINARY when the column declares no COLLATE. */
77
+ readonly collationFn: CollationFunction;
78
+ }
79
+ /**
80
+ * Structural subset of the fields the forward (driving-source) residual-recompute
81
+ * apply path reads — shared by the aggregate {@link ResidualRecomputePlan} and the
82
+ * 1:1-join {@link JoinResidualPlan} so both drive {@link MaterializedViewManager.applyForwardResidual}
83
+ * unchanged. For an aggregate the forward key is the group key (`'gk'`); for a join
84
+ * it is the driving table `T`'s PK (`'pk'`).
85
+ */
86
+ export interface ForwardResidualPlan {
87
+ mv: MaintainedTableSchema;
88
+ backingSchema: string;
89
+ backingTableName: string;
90
+ /** Cached scheduler for the key-filtered residual (the body with `injectKeyFilter`
91
+ * applied on the driving source). Re-run per affected key, bound through the live txn. */
92
+ residualScheduler: Scheduler;
93
+ bindParamPrefix: 'gk' | 'pk';
94
+ /** Source-column indices of the forward binding key (group columns / `T`'s PK columns). */
95
+ bindColumns: number[];
96
+ backingPkDefinition: ReadonlyArray<BackingPkColumn>;
97
+ backingPkSourceCols: number[];
98
+ }
99
+ /**
100
+ * How a single backing output column is derived from the changed source row — a pure
101
+ * per-row (per-statement) function. `'passthrough'` copies a source column (the column
102
+ * permutation that *every* PK / UNIQUE-covered column must use, so the backing key and
103
+ * the inverse-projection conflict map are recoverable); `'expr'` evaluates a
104
+ * deterministic scalar expression over the source row (a non-key derived column —
105
+ * `materialized-view-rowtime-expression-projections`). `eval` is the runtime-compiled
106
+ * evaluator (see {@link compileSourceRowEvaluator}), so a computed backing value is
107
+ * exactly what `select <body>` would produce.
108
+ */
109
+ export type BackingProjector = {
110
+ readonly kind: 'passthrough';
111
+ readonly sourceCol: number;
112
+ } | {
113
+ readonly kind: 'expr';
114
+ readonly eval: (sourceRow: Row) => SqlValue;
115
+ };
116
+ /**
117
+ * One **weakened** column of a coarsened backing key K′, precomputed once at
118
+ * registration for the row-time collision telemetry
119
+ * ({@link MaterializedViewManager.detectAndReportCoarseningCollisions}). Carries the
120
+ * backing column index to read from each {@link BackingRowChange} image, the
121
+ * **source** (pre-coarsening, stricter) collation the divergence test compares
122
+ * under, the **output** (coarsened) collation the backing key enforces, and the
123
+ * column name for the {@link MaintenanceCollisionEvent} payload. Derived from
124
+ * `mv.derivation.coarsenedKey.weakened` (column names) via `mv.columnIndexMap`.
125
+ */
126
+ export interface CoarseningWatchColumn {
127
+ /** Backing column index (= body output column index) the weakened K′ column lands at. */
128
+ readonly index: number;
129
+ /** Source key enforcement collation (pre-coarsening); the divergence test compares under it. */
130
+ readonly sourceCollation: string;
131
+ /** {@link sourceCollation} resolved against the database registry, once at registration. */
132
+ readonly sourceCollationFn: CollationFunction;
133
+ /** Output (coarsened) collation the backing key enforces. */
134
+ readonly outputCollation: string;
135
+ /** Backing/output column name (for the event payload's `weakenedColumns`). */
136
+ readonly column: string;
137
+ }
138
+ /**
139
+ * Common identity + cost-gate fields shared by every {@link MaintenancePlan} arm.
140
+ * `chosenStrategy` / `sourceStats` are set once by the create-time cost gate
141
+ * ({@link MaterializedViewManager.buildMaintenancePlan}, via `selectMaintenanceStrategy`)
142
+ * and are not re-evaluated per write, except for the residual → rebuild demotion
143
+ * (`shouldDegradeToRebuild`; dormant until the residual arm is reachable).
144
+ */
145
+ export interface MaintenancePlanCommon {
146
+ /** The MV this plan maintains. */
147
+ mv: MaintainedTableSchema;
148
+ /** Lowercased `schema.table` of the single source `T`. */
149
+ sourceBase: string;
150
+ backingSchema: string;
151
+ backingTableName: string;
152
+ /** Strategy the cost gate chose: argmin `maintenanceCost` over the body's sound strategies. */
153
+ chosenStrategy: MaintenanceStrategy;
154
+ /** Create-time cost inputs (StatsProvider + forward optimizer), retained so the DML
155
+ * boundary can re-cost residual vs. rebuild against the actual changeCardinality. */
156
+ sourceStats: MaintenanceSourceStats;
157
+ /** Compiled declared-CHECK/FK validator over derived row images — present ONLY
158
+ * when the maintained table declares ≥1 applicable CHECK or ≥1 FK (the
159
+ * zero-overhead gate: MV-sugar backings and constraint-less maintained tables
160
+ * carry `undefined` and pay nothing per write). Built once at registration
161
+ * ({@link MaterializedViewManager.registerMaterializedView}); applied to each
162
+ * insert/update {@link BackingRowChange} before the cascade. */
163
+ derivedRowValidator?: DerivedRowConstraintValidator;
164
+ /** Precomputed weakened-K′-column watch list for row-time collision telemetry —
165
+ * present ONLY when `mv.derivation.coarsenedKey` is stamped (the zero-overhead
166
+ * gate: a provable-key / refining-lineage-key MV carries `undefined` and pays
167
+ * nothing per write — detection short-circuits on this field). Built once at
168
+ * registration ({@link MaterializedViewManager.registerMaterializedView} →
169
+ * {@link MaterializedViewManager.buildCoarseningWatch}); read by
170
+ * {@link MaterializedViewManager.detectAndReportCoarseningCollisions} from both
171
+ * the bounded-delta and full-rebuild maintenance arms. */
172
+ coarseningWatch?: ReadonlyArray<CoarseningWatchColumn>;
173
+ /** Backing columns that are BOTH declared NOT NULL AND physical-PK members AND whose
174
+ * re-derived body output column is nullable — the exact reachable "NOT-NULL
175
+ * ordering-seeded PK over a loosened source" skew. Present ONLY when non-empty (the
176
+ * zero-overhead gate: nearly every MV carries `undefined` and pays a single boolean
177
+ * check per maintained write — the NOT-NULL/physical-PK set alone is non-empty for
178
+ * almost every MV, so the discriminator is the body-nullability term). Precomputed once
179
+ * at plan build ({@link MaterializedViewManager.buildMaintenancePlan}). Read by the
180
+ * row-time guard in {@link MaterializedViewManager.maintainRowTime} /
181
+ * {@link MaterializedViewManager.flushDeferredRebuilds}. The refresh path has its own
182
+ * materialized-row equivalent (`assertNoNullInNotNullSeededPk` in
183
+ * runtime/emit/materialized-view-helpers.ts). See
184
+ * fix/bug-mv-rowtime-null-into-notnull-seeded-pk. */
185
+ nullGuardColumns?: ReadonlyArray<{
186
+ readonly index: number;
187
+ readonly name: string;
188
+ }>;
189
+ }
190
+ export interface InverseProjectionPlan extends MaintenancePlanCommon {
191
+ readonly kind: 'inverse-projection';
192
+ /** Backing-table physical primary-key definition (the column order the btree keys on). */
193
+ backingPkDefinition: ReadonlyArray<BackingPkColumn>;
194
+ /** `projectors[j]` derives backing output column `j` from the changed source row —
195
+ * either a passthrough copy of a source column or a deterministic scalar expression
196
+ * over the source row. Every PK / backing-key column is `'passthrough'` (eligibility
197
+ * rejects a computed column that lands in the backing key); non-key columns may be
198
+ * `'expr'`. {@link MaterializedViewManager.lookupCoveringConflicts} reads only the
199
+ * passthrough projectors for its inverse (source↔backing) map. */
200
+ projectors: BackingProjector[];
201
+ /** Partial-WHERE predicate evaluated on a single source row; absent ⇒ every row
202
+ * is in scope. A source row contributes a backing row only when this is
203
+ * unambiguously TRUE (mirrors partial-UNIQUE / partial-index semantics). */
204
+ predicate?: CompiledPredicate;
205
+ }
206
+ /**
207
+ * The always-correct **floor**: a body for which no bounded-delta arm is sound is
208
+ * maintained by re-evaluating it in full per writing statement and replacing the backing
209
+ * transactionally (a single `'replace-all'` {@link MaintenanceOp} — a keyed diff against
210
+ * the backing's pending layer, so the delta still commits/rolls-back with the source
211
+ * write and still drives the MV-over-MV cascade). The whole optimized body is compiled
212
+ * once at registration into {@link bodyScheduler}; {@link MaterializedViewManager.applyFullRebuild}
213
+ * runs it to completion against live source state and diffs the result into the backing.
214
+ *
215
+ * Reachability: `buildMaintenancePlan` routes a body here whenever no bounded-delta arm
216
+ * fits ({@link MaterializedViewManager.tryBuildBoundedDeltaArm} returns `null`). It is the
217
+ * one **deferred** arm — marked dirty per source row and rebuilt exactly once at the
218
+ * end-of-statement flush ({@link MaterializedViewManager.flushDeferredRebuilds}), so a bulk
219
+ * write is O(body) not O(rows × body). See `docs/mv-maintenance.md` § Full-rebuild floor.
220
+ */
221
+ export interface FullRebuildPlan extends MaintenancePlanCommon {
222
+ readonly kind: 'full-rebuild';
223
+ /** The optimized body compiled once at registration — the **whole** body (no
224
+ * `injectKeyFilter`), with the read-side MV rewrite suppressed so it reads its sources,
225
+ * not the backing it populates. Re-run to completion per writing statement, bound
226
+ * through the live transaction (reads-own-writes), to recompute every backing row. */
227
+ bodyScheduler: Scheduler;
228
+ /** Every source base (lowercased `schema.table`) the body reads — set-op legs, every
229
+ * join source, etc. The plan is indexed under each in `rowTimeBySource` (via
230
+ * {@link planSourceBases}), so a write to **any** of them triggers a rebuild; missing
231
+ * one would leave the MV stale on that source's writes. `sourceBase` (the
232
+ * {@link MaintenancePlanCommon} field) holds the first of these for parity. */
233
+ sourceBases: string[];
234
+ }
235
+ /**
236
+ * The general-body residual-recompute arm: per source change, derive the affected
237
+ * binding key(s) from the changed row, run a key-filtered residual of the body against
238
+ * **live mid-transaction source state**, and apply the keyed diff — upsert the recomputed
239
+ * slice (replacing the old row at the same backing key; a value-identical recompute is
240
+ * suppressed by the host, see vtab/backing-host.ts) or, when the residual returns
241
+ * nothing, delete the emptied key. Wired for the **single-source aggregate** shape
242
+ * (`select g1,… , agg(…) from T [where P] group by g1,…` over bare group columns) by
243
+ * `materialized-view-rowtime-residual-recompute`; the 1:1 row-preserving join shape
244
+ * (`'row'` binding) reuses the same kernel in a follow-on ticket.
245
+ *
246
+ * The residual is the body with a key-equality filter injected on `T`'s
247
+ * `TableReferenceNode` via {@link injectKeyFilter} (parameterized `gk0…` for a group
248
+ * binding, `pk0…` for a row binding), compiled + cached once at registration and run
249
+ * synchronously through the live transaction so the source read is reads-own-writes —
250
+ * the synchronous analogue of `database-assertions.ts`'s residual path.
251
+ *
252
+ * It carries the {@link BindingMode} the spike names as the convergence point (built
253
+ * directly from the body's shape — for an aggregate, the bare GROUP BY columns; NOT
254
+ * via `extractBindings`, whose `'group'` classification additionally requires the group
255
+ * key to cover a source unique key and so reports `'global'` for the common
256
+ * `group by <non-key>` body). `degradeToRebuild` is the cost gate's full-rebuild escape
257
+ * flag — dormant in v1 (the per-row recompute is correct without batching, and the
258
+ * full-rebuild arm is unwired).
259
+ */
260
+ export interface ResidualRecomputePlan extends MaintenancePlanCommon {
261
+ readonly kind: 'residual-recompute';
262
+ binding: BindingMode;
263
+ degradeToRebuild: boolean;
264
+ /** Cached scheduler for the key-filtered residual (the body with `injectKeyFilter`
265
+ * applied on `T`). Re-run per affected key tuple, bound through the live transaction. */
266
+ residualScheduler: Scheduler;
267
+ /** Bind-parameter prefix the residual was compiled with: `'gk'` (group) / `'pk'` (row). */
268
+ bindParamPrefix: 'gk' | 'pk';
269
+ /** Source-column indices of the binding key (group columns / row key columns). The
270
+ * affected key tuple is `bindColumns.map(c => changedRow[c])`, bound to `${prefix}{i}`. */
271
+ bindColumns: number[];
272
+ /** Backing-table physical primary-key definition (the column order the btree keys on). */
273
+ backingPkDefinition: ReadonlyArray<BackingPkColumn>;
274
+ /** Source column projected (passthrough) into each backing-PK column, in
275
+ * `backingPkDefinition` order. The old backing slice's delete key for a changed row
276
+ * `R` is `buildPrimaryKeyFromValues(backingPkSourceCols.map(sc => R[sc]), backingPkDefinition)`. */
277
+ backingPkSourceCols: number[];
278
+ }
279
+ /**
280
+ * The single-source lateral-TVF fan-out arm: a body of the shape
281
+ * `select T.pk…, …, f.* from T cross join lateral tvf(<args over T>) f`, where each base
282
+ * row of `T` fans out to **N** backing rows (one per row the TVF emits for it). The
283
+ * backing PK is the **composite product key** `(T.pk ∪ tvf-key)` that
284
+ * `optimizer-keyed-cross-product-join-keys` advertises through `keysOf` over the lateral
285
+ * join, with the base PK as its **leading prefix** (asserted at build).
286
+ *
287
+ * Per changed base row, maintenance is a **keyed diff of the recomputed fan-out against
288
+ * the existing effective slice for the base-PK prefix** (read via the host's
289
+ * `scanEffective`, since one base row owns many backing rows sharing the prefix): re-run
290
+ * the TVF fan-out **residual** for that base row, delete only the existing keys the
291
+ * recompute no longer produces, and **upsert** each recomputed row (value-identical
292
+ * upserts are suppressed by the host). An UPDATE diffs both the OLD and NEW base keys
293
+ * (the base PK may move); a DELETE diffs the old slice to all-deletes; an INSERT diffs
294
+ * against an empty slice. This reuses the residual kernel of {@link ResidualRecomputePlan}
295
+ * unchanged — the affected-key derivation, the `injectKeyFilter` residual (pinned to the
296
+ * base `TableReferenceNode` with the `'pk'` prefix), reads-own-writes execution, the cost
297
+ * gate — and differs only in the **prefix-slice** diff (vs point-key) and the **N-row**
298
+ * residual (vs ≤1). The body's WHERE, if any, is part of the residual (so an out-of-scope
299
+ * base row fans out to zero rows), exactly as in the aggregate arm.
300
+ *
301
+ * `chosenStrategy` is `'residual-recompute'` (the shared key-filtered re-execution cost
302
+ * shape — the fan-out factor is unknown at create); `kind` is `'prefix-delete'` (the
303
+ * apply-arm dispatcher). `degradeToRebuild` is dormant (as in the aggregate arm).
304
+ */
305
+ export interface PrefixDeletePlan extends MaintenancePlanCommon {
306
+ readonly kind: 'prefix-delete';
307
+ /** Substrate parity (the base-PK 'row' binding); unread by the apply path, which uses
308
+ * `bindColumns` / `backingPrefixSourceCols`. */
309
+ binding: BindingMode;
310
+ degradeToRebuild: boolean;
311
+ /** Cached scheduler for the base-PK-keyed residual (the body with `injectKeyFilter`
312
+ * applied on `T`, `'pk'` prefix). Re-run per affected base key; fans out to N rows. */
313
+ residualScheduler: Scheduler;
314
+ bindParamPrefix: 'pk';
315
+ /** Source-`T` PK column indices (the base key). The affected key tuple is
316
+ * `bindColumns.map(c => changedRow[c])`, bound to `pk{i}`. */
317
+ bindColumns: number[];
318
+ /** Full backing-table physical primary key (base-PK prefix ++ TVF-key tail). */
319
+ backingPkDefinition: ReadonlyArray<BackingPkColumn>;
320
+ /** Number of leading backing-PK columns that form the base-PK prefix (= `bindColumns.length`). */
321
+ basePrefixLength: number;
322
+ /** Source-`T` column projected into each leading (base-prefix) backing-PK column, in
323
+ * backing-PK order. The by-prefix delete key for a changed row `R` is
324
+ * `backingPrefixSourceCols.map(sc => R[sc])`. */
325
+ backingPrefixSourceCols: number[];
326
+ }
327
+ /**
328
+ * The 1:1 row-preserving **inner/cross join** arm: a body
329
+ * `select … from T join P on T.fk = P.id` where `T` contributes **exactly one** MV row
330
+ * per governed `T` row (proven by {@link proveOneToOneJoin} — no row loss via NOT-NULL
331
+ * FK→PK referential integrity, no fan-out via `isUnique(T.pk)` at the join frame). The
332
+ * backing is keyed on `T`'s PK (the composite product key `keysOf` advertises across the
333
+ * 1:1 join collapses to `T`'s PK), so each changed `T` row maps to one backing row.
334
+ *
335
+ * Reuses the residual kernel of {@link ResidualRecomputePlan} on its **driving (`T`)**
336
+ * side via {@link ForwardResidualPlan}: a `T`-keyed (`'pk'`) residual recomputes the one
337
+ * joined row for a changed `T` row (run residual → upsert the recomputed row, or delete
338
+ * the key when it returns nothing), identical to a `'row'`-binding aggregate of size 1.
339
+ * `applyForwardResidual` drives it.
340
+ *
341
+ * The **lookup (`P`)** side is the join arm's distinct problem: the MV's `sourceTables`
342
+ * includes `P`, so a write to `P` also fires maintenance, but the forward residual is
343
+ * keyed on `T`'s PK and a `P` row joins *many* `T` rows. This plan therefore carries a
344
+ * **second residual keyed on `P`'s PK** (`lookupResidualScheduler`): for a `P` change it
345
+ * runs `… where P.pk = :pk0` (the body **including** its WHERE) against live state,
346
+ * returning every currently in-scope joined row (each carrying its `T.pk` backing key), and
347
+ * **upserts** each.
348
+ *
349
+ * **WHERE handling — bounded-delta over a partial-WHERE 1:1 join.** A body WHERE is
350
+ * classified at build by which base table(s) its columns reference
351
+ * ({@link MaterializedViewManager.buildJoinResidualPlan}):
352
+ * - **`T`-only predicate** — no extra machinery. The forward (`T`) residual already injects
353
+ * + applies the WHERE (an out-of-scope `T` row recomputes to zero residual rows ⇒ its
354
+ * delete-without-upsert removes the backing row), and a `T`-column predicate cannot move
355
+ * the membership set `{ T : T.fk = P.pk }`, so the lookup side stays **upsert-only**
356
+ * (`lookupMembershipResidualScheduler` absent) — sound for the same reason the no-WHERE
357
+ * arm is.
358
+ * - **`P`-referencing predicate** (or both sides) — a `P` write can flip a row's WHERE truth
359
+ * and so add/remove a backing row, which upsert-only could never delete. The lookup side
360
+ * becomes **delete-capable**: `lookupMembershipResidualScheduler` is the body with
361
+ * `injectKeyFilter` on `P` but the WHERE **stripped** (membership only). Per affected `P`
362
+ * key {@link MaterializedViewManager.applyLookupResidual} diffs it against the in-scope
363
+ * `lookupResidualScheduler` (WHERE retained): membership keys the in-scope recompute no
364
+ * longer produces are deleted, the in-scope rows are upserted — a keyed diff that converges
365
+ * the membership both ways without churning the unchanged rows.
366
+ *
367
+ * Still inner/cross only; outer joins and **fanning** (non-1:1) joins continue to fall to the
368
+ * full-rebuild floor. See `docs/incremental-maintenance.md` § join-residual and the soundness
369
+ * note in {@link MaterializedViewManager.applyLookupResidual}.
370
+ */
371
+ export interface JoinResidualPlan extends MaintenancePlanCommon, ForwardResidualPlan {
372
+ readonly kind: 'join-residual';
373
+ /** Substrate parity: the driving `T`'s `'row'`/PK binding. */
374
+ binding: BindingMode;
375
+ degradeToRebuild: boolean;
376
+ bindParamPrefix: 'pk';
377
+ /** Lowercased `schema.table` of the lookup source `P` (distinct from `sourceBase` = `T`). */
378
+ lookupBase: string;
379
+ /** Cached scheduler for the in-scope lookup-keyed residual (the body — WHERE **retained** —
380
+ * with `injectKeyFilter` applied on `P`, `'pk'` prefix). Re-run per affected `P` key;
381
+ * returns the currently in-scope joined rows to upsert. */
382
+ lookupResidualScheduler: Scheduler;
383
+ /** Delete-capable lookup membership residual (the body with the WHERE **stripped** and
384
+ * `injectKeyFilter` on `P`). Present **iff** the body WHERE references `P`: the lookup side
385
+ * must then delete the backing key of every currently-referencing `T` row (regardless of
386
+ * scope) before re-upserting the in-scope survivors, so a `P` write that flips a row's WHERE
387
+ * membership adds/removes its backing row. Absent for a no-WHERE or `T`-only-WHERE body
388
+ * (the lookup side is sound upsert-only — membership cannot move on a `P` write). */
389
+ lookupMembershipResidualScheduler?: Scheduler;
390
+ /** Source-`P` PK column indices (the lookup key). The affected key tuple for a `P`
391
+ * change is `lookupBindColumns.map(c => changedRow[c])`, bound to `pk{i}`. */
392
+ lookupBindColumns: number[];
393
+ lookupBindParamPrefix: 'pk';
394
+ }
395
+ /**
396
+ * Per-statement cache of resolved backing {@link VirtualTableConnection}s, keyed by the
397
+ * lowercased backing `schema.table`. Created **once per DML generator run** (one
398
+ * statement) and threaded through the maintenance path so the backing-connection
399
+ * resolution — a scan over *all* the Database's active connections in
400
+ * {@link MaterializedViewManager.getBackingConnection} — is paid once per
401
+ * (statement, backing) instead of once per source row. This amortizes the dominant
402
+ * per-row overhead of a bulk `insert`/`update`/`delete` over a covered table.
403
+ *
404
+ * It is purely a resolution cache: each **bounded-delta** arm's per-row ops are still
405
+ * applied **immediately** to the cached connection's pending transaction layer, so a later
406
+ * same-statement row's enforcement scan (`lookupCoveringConflicts`) still observes every
407
+ * earlier row's backing write. The one exception is the **full-rebuild** arm, which the DML
408
+ * boundary defers to a single end-of-statement {@link MaterializedViewManager.flushDeferredRebuilds}
409
+ * (tracked in a separate per-statement dirty set, not this cache) — sound because a
410
+ * full-rebuild MV is never a covering structure, so no enforcement scan depends on its
411
+ * per-row visibility. See `docs/mv-maintenance.md` § Synchronous, transactional,
412
+ * per-statement. Because the cache is scoped to one generator run, the connection it holds
413
+ * cannot be torn down mid-statement; the cold enforcement/eviction paths that omit the cache
414
+ * re-resolve the *same* connection deterministically, so reads-own-writes is unaffected.
415
+ */
416
+ export type BackingConnectionCache = Map<string, VirtualTableConnection>;
417
+ //# sourceMappingURL=database-materialized-views-plans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-materialized-views-plans.d.ts","sourceRoot":"","sources":["../../../src/core/database-materialized-views-plans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Materialized-view maintenance — plan types and the manager's decoupling context.
3
+ *
4
+ * The tagged {@link MaintenancePlan} union (one arm per maintenance strategy) plus the
5
+ * shared plan shapes, the per-column {@link BackingProjector}, the coarsening-collision
6
+ * watch column, the per-statement {@link BackingConnectionCache}, and the
7
+ * {@link MaterializedViewManagerContext} the manager runs against. Split out of
8
+ * `database-materialized-views.ts` (its class + orchestration) so the type surface reads
9
+ * on its own; see that file and `docs/mv-maintenance.md` for how each arm is built and
10
+ * applied.
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=database-materialized-views-plans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-materialized-views-plans.js","sourceRoot":"","sources":["../../../src/core/database-materialized-views-plans.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}