@quereus/quereus 4.3.1 → 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 (721) 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.js +2 -2
  98. package/dist/src/planner/building/delete.js.map +1 -1
  99. package/dist/src/planner/building/dml-target.d.ts +2 -2
  100. package/dist/src/planner/building/dml-target.js +2 -2
  101. package/dist/src/planner/building/insert.d.ts.map +1 -1
  102. package/dist/src/planner/building/insert.js +53 -2
  103. package/dist/src/planner/building/insert.js.map +1 -1
  104. package/dist/src/planner/building/schema-resolution.d.ts +3 -0
  105. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  106. package/dist/src/planner/building/schema-resolution.js +4 -5
  107. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  108. package/dist/src/planner/building/select.js +3 -3
  109. package/dist/src/planner/building/select.js.map +1 -1
  110. package/dist/src/planner/building/update.js +2 -2
  111. package/dist/src/planner/building/update.js.map +1 -1
  112. package/dist/src/planner/building/view-mutation-builder.js +7 -7
  113. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  114. package/dist/src/planner/cache/materialization-advisory.d.ts +1 -2
  115. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  116. package/dist/src/planner/cache/materialization-advisory.js +21 -14
  117. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  118. package/dist/src/planner/cache/reference-graph.d.ts +14 -1
  119. package/dist/src/planner/cache/reference-graph.d.ts.map +1 -1
  120. package/dist/src/planner/cache/reference-graph.js +26 -26
  121. package/dist/src/planner/cache/reference-graph.js.map +1 -1
  122. package/dist/src/planner/cost/index.d.ts +7 -3
  123. package/dist/src/planner/cost/index.d.ts.map +1 -1
  124. package/dist/src/planner/cost/index.js.map +1 -1
  125. package/dist/src/planner/debug.d.ts +3 -2
  126. package/dist/src/planner/debug.d.ts.map +1 -1
  127. package/dist/src/planner/debug.js +9 -3
  128. package/dist/src/planner/debug.js.map +1 -1
  129. package/dist/src/planner/framework/characteristics.d.ts +46 -19
  130. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  131. package/dist/src/planner/framework/characteristics.js +50 -134
  132. package/dist/src/planner/framework/characteristics.js.map +1 -1
  133. package/dist/src/planner/framework/context.d.ts +8 -44
  134. package/dist/src/planner/framework/context.d.ts.map +1 -1
  135. package/dist/src/planner/framework/context.js +0 -91
  136. package/dist/src/planner/framework/context.js.map +1 -1
  137. package/dist/src/planner/framework/pass.d.ts +7 -0
  138. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  139. package/dist/src/planner/framework/pass.js +84 -0
  140. package/dist/src/planner/framework/pass.js.map +1 -1
  141. package/dist/src/planner/framework/registry.d.ts +13 -42
  142. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  143. package/dist/src/planner/framework/registry.js +14 -182
  144. package/dist/src/planner/framework/registry.js.map +1 -1
  145. package/dist/src/planner/mutation/backward-body.d.ts +2 -2
  146. package/dist/src/planner/mutation/cte-flatten.js +1 -1
  147. package/dist/src/planner/mutation/decomposition.d.ts +2 -2
  148. package/dist/src/planner/mutation/decomposition.js +1 -1
  149. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  150. package/dist/src/planner/mutation/lens-enforcement.js +2 -1
  151. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  152. package/dist/src/planner/mutation/multi-source.d.ts +8 -8
  153. package/dist/src/planner/mutation/multi-source.js +11 -11
  154. package/dist/src/planner/mutation/multi-source.js.map +1 -1
  155. package/dist/src/planner/mutation/propagate.d.ts +1 -1
  156. package/dist/src/planner/mutation/propagate.js +1 -1
  157. package/dist/src/planner/mutation/scope-transform.d.ts +2 -2
  158. package/dist/src/planner/mutation/scope-transform.js +3 -3
  159. package/dist/src/planner/mutation/scope-transform.js.map +1 -1
  160. package/dist/src/planner/mutation/set-op.d.ts +1 -1
  161. package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
  162. package/dist/src/planner/mutation/set-op.js +3 -2
  163. package/dist/src/planner/mutation/set-op.js.map +1 -1
  164. package/dist/src/planner/mutation/single-source.d.ts +3 -3
  165. package/dist/src/planner/mutation/single-source.js +9 -9
  166. package/dist/src/planner/mutation/single-source.js.map +1 -1
  167. package/dist/src/planner/nodes/aggregate-function.d.ts +3 -1
  168. package/dist/src/planner/nodes/aggregate-function.d.ts.map +1 -1
  169. package/dist/src/planner/nodes/aggregate-function.js +1 -0
  170. package/dist/src/planner/nodes/aggregate-function.js.map +1 -1
  171. package/dist/src/planner/nodes/aggregate-node.d.ts +1 -0
  172. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  173. package/dist/src/planner/nodes/aggregate-node.js +8 -1
  174. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  175. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  176. package/dist/src/planner/nodes/alias-node.js +3 -1
  177. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  178. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  179. package/dist/src/planner/nodes/asof-scan-node.js +3 -2
  180. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  181. package/dist/src/planner/nodes/asserted-keys-node.d.ts +1 -1
  182. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  183. package/dist/src/planner/nodes/asserted-keys-node.js +5 -2
  184. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  185. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  186. package/dist/src/planner/nodes/async-gather-node.js +3 -1
  187. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  188. package/dist/src/planner/nodes/block.js +3 -3
  189. package/dist/src/planner/nodes/block.js.map +1 -1
  190. package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
  191. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/bloom-join-node.js +5 -1
  193. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  194. package/dist/src/planner/nodes/cache-node.d.ts +1 -0
  195. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/cache-node.js +1 -0
  197. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  198. package/dist/src/planner/nodes/cte-node.d.ts +1 -0
  199. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  200. package/dist/src/planner/nodes/cte-node.js +4 -1
  201. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  202. package/dist/src/planner/nodes/distinct-node.js +3 -3
  203. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  204. package/dist/src/planner/nodes/dml-executor-node.d.ts +21 -0
  205. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  206. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  207. package/dist/src/planner/nodes/envelope-scan-node.d.ts +1 -1
  208. package/dist/src/planner/nodes/envelope-scan-node.js +1 -1
  209. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  210. package/dist/src/planner/nodes/fanout-lookup-join-node.js +4 -2
  211. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  212. package/dist/src/planner/nodes/filter.d.ts +10 -2
  213. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  214. package/dist/src/planner/nodes/filter.js +81 -14
  215. package/dist/src/planner/nodes/filter.js.map +1 -1
  216. package/dist/src/planner/nodes/hash-aggregate.d.ts +12 -1
  217. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  218. package/dist/src/planner/nodes/hash-aggregate.js +28 -1
  219. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  220. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts +3 -1
  221. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.d.ts.map +1 -1
  222. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js +1 -0
  223. package/dist/src/planner/nodes/internal-recursive-cte-ref-node.js.map +1 -1
  224. package/dist/src/planner/nodes/join-node.d.ts +3 -1
  225. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  226. package/dist/src/planner/nodes/join-node.js +5 -5
  227. package/dist/src/planner/nodes/join-node.js.map +1 -1
  228. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  229. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +4 -1
  230. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  231. package/dist/src/planner/nodes/limit-offset.d.ts +1 -0
  232. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  233. package/dist/src/planner/nodes/limit-offset.js +4 -3
  234. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  235. package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
  236. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  237. package/dist/src/planner/nodes/merge-join-node.js +6 -1
  238. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  239. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  240. package/dist/src/planner/nodes/ordinal-slice-node.js +3 -1
  241. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  242. package/dist/src/planner/nodes/plan-node.d.ts +68 -5
  243. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  244. package/dist/src/planner/nodes/plan-node.js +137 -24
  245. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  246. package/dist/src/planner/nodes/project-node.d.ts +3 -2
  247. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  248. package/dist/src/planner/nodes/project-node.js +1 -0
  249. package/dist/src/planner/nodes/project-node.js.map +1 -1
  250. package/dist/src/planner/nodes/recursive-cte-node.d.ts.map +1 -1
  251. package/dist/src/planner/nodes/recursive-cte-node.js +8 -2
  252. package/dist/src/planner/nodes/recursive-cte-node.js.map +1 -1
  253. package/dist/src/planner/nodes/reference.d.ts +5 -1
  254. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  255. package/dist/src/planner/nodes/reference.js +3 -0
  256. package/dist/src/planner/nodes/reference.js.map +1 -1
  257. package/dist/src/planner/nodes/remote-query-node.d.ts.map +1 -1
  258. package/dist/src/planner/nodes/remote-query-node.js +3 -1
  259. package/dist/src/planner/nodes/remote-query-node.js.map +1 -1
  260. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  261. package/dist/src/planner/nodes/retrieve-node.js +3 -1
  262. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  263. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  264. package/dist/src/planner/nodes/set-operation-node.js +3 -1
  265. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  266. package/dist/src/planner/nodes/sink-node.d.ts.map +1 -1
  267. package/dist/src/planner/nodes/sink-node.js +3 -1
  268. package/dist/src/planner/nodes/sink-node.js.map +1 -1
  269. package/dist/src/planner/nodes/sort.d.ts +2 -1
  270. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  271. package/dist/src/planner/nodes/sort.js +9 -5
  272. package/dist/src/planner/nodes/sort.js.map +1 -1
  273. package/dist/src/planner/nodes/stream-aggregate.d.ts +12 -1
  274. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  275. package/dist/src/planner/nodes/stream-aggregate.js +32 -3
  276. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  277. package/dist/src/planner/nodes/table-access-nodes.d.ts +2 -1
  278. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  279. package/dist/src/planner/nodes/table-access-nodes.js +2 -0
  280. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  281. package/dist/src/planner/nodes/view-mutation-node.d.ts +2 -2
  282. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  283. package/dist/src/planner/nodes/view-mutation-node.js +5 -1
  284. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  285. package/dist/src/planner/nodes/window-function.d.ts +3 -1
  286. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  287. package/dist/src/planner/nodes/window-function.js +1 -0
  288. package/dist/src/planner/nodes/window-function.js.map +1 -1
  289. package/dist/src/planner/optimizer.d.ts +52 -8
  290. package/dist/src/planner/optimizer.d.ts.map +1 -1
  291. package/dist/src/planner/optimizer.js +885 -894
  292. package/dist/src/planner/optimizer.js.map +1 -1
  293. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  294. package/dist/src/planner/rules/access/rule-select-access-path.js +235 -202
  295. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  296. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +2 -2
  297. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +2 -2
  298. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts +1 -1
  299. package/dist/src/planner/rules/cache/rule-scalar-cse.js +1 -1
  300. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +1 -1
  301. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +1 -1
  302. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +1 -1
  303. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +1 -1
  304. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +1 -1
  305. package/dist/src/planner/rules/join/rule-join-elimination.js +1 -1
  306. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +5 -6
  307. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  308. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
  309. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
  310. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts +2 -2
  311. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
  312. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +4 -3
  313. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
  314. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +19 -0
  315. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -0
  316. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +48 -0
  317. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -0
  318. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js +12 -1
  319. package/dist/src/planner/rules/predicate/rule-sargable-range-rewrite.js.map +1 -1
  320. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  321. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +22 -20
  322. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  323. package/dist/src/planner/rules/shared/index-style-context.d.ts +39 -0
  324. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -0
  325. package/dist/src/planner/rules/shared/index-style-context.js +26 -0
  326. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -0
  327. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
  328. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +1 -1
  329. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts +1 -1
  330. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +1 -1
  331. package/dist/src/planner/stats/analyze.d.ts.map +1 -1
  332. package/dist/src/planner/stats/analyze.js +2 -20
  333. package/dist/src/planner/stats/analyze.js.map +1 -1
  334. package/dist/src/planner/stats/histogram.d.ts.map +1 -1
  335. package/dist/src/planner/stats/histogram.js +4 -0
  336. package/dist/src/planner/stats/histogram.js.map +1 -1
  337. package/dist/src/planner/util/fd-utils.d.ts +2 -3
  338. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  339. package/dist/src/planner/util/fd-utils.js +2 -3
  340. package/dist/src/planner/util/fd-utils.js.map +1 -1
  341. package/dist/src/planner/validation/plan-validator.d.ts +16 -0
  342. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  343. package/dist/src/planner/validation/plan-validator.js +36 -0
  344. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  345. package/dist/src/runtime/async-util.d.ts +26 -0
  346. package/dist/src/runtime/async-util.d.ts.map +1 -1
  347. package/dist/src/runtime/async-util.js +139 -55
  348. package/dist/src/runtime/async-util.js.map +1 -1
  349. package/dist/src/runtime/context-helpers.d.ts +32 -4
  350. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  351. package/dist/src/runtime/context-helpers.js +26 -9
  352. package/dist/src/runtime/context-helpers.js.map +1 -1
  353. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  354. package/dist/src/runtime/deferred-constraint-queue.js +2 -1
  355. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  356. package/dist/src/runtime/emission-context.d.ts +27 -3
  357. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  358. package/dist/src/runtime/emission-context.js +38 -7
  359. package/dist/src/runtime/emission-context.js.map +1 -1
  360. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  361. package/dist/src/runtime/emit/add-constraint.js +7 -1
  362. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  363. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  364. package/dist/src/runtime/emit/aggregate.js +17 -13
  365. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  366. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  367. package/dist/src/runtime/emit/alter-table.js +98 -9
  368. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  369. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  370. package/dist/src/runtime/emit/analyze.js +2 -1
  371. package/dist/src/runtime/emit/analyze.js.map +1 -1
  372. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  373. package/dist/src/runtime/emit/asof-scan.js +13 -10
  374. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  375. package/dist/src/runtime/emit/async-gather.d.ts.map +1 -1
  376. package/dist/src/runtime/emit/async-gather.js +4 -3
  377. package/dist/src/runtime/emit/async-gather.js.map +1 -1
  378. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  379. package/dist/src/runtime/emit/between.js +2 -1
  380. package/dist/src/runtime/emit/between.js.map +1 -1
  381. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  382. package/dist/src/runtime/emit/binary.js +122 -14
  383. package/dist/src/runtime/emit/binary.js.map +1 -1
  384. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  385. package/dist/src/runtime/emit/block.js +2 -1
  386. package/dist/src/runtime/emit/block.js.map +1 -1
  387. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  388. package/dist/src/runtime/emit/bloom-join.js +20 -8
  389. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  390. package/dist/src/runtime/emit/cache.d.ts.map +1 -1
  391. package/dist/src/runtime/emit/cache.js +2 -1
  392. package/dist/src/runtime/emit/cache.js.map +1 -1
  393. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  394. package/dist/src/runtime/emit/case.js +66 -45
  395. package/dist/src/runtime/emit/case.js.map +1 -1
  396. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  397. package/dist/src/runtime/emit/cast.js +2 -1
  398. package/dist/src/runtime/emit/cast.js.map +1 -1
  399. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  400. package/dist/src/runtime/emit/constraint-check.js +13 -7
  401. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  402. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  403. package/dist/src/runtime/emit/create-assertion.js +2 -1
  404. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  405. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  406. package/dist/src/runtime/emit/create-index.js +12 -1
  407. package/dist/src/runtime/emit/create-index.js.map +1 -1
  408. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  409. package/dist/src/runtime/emit/create-table.js +12 -1
  410. package/dist/src/runtime/emit/create-table.js.map +1 -1
  411. package/dist/src/runtime/emit/cte-reference.d.ts.map +1 -1
  412. package/dist/src/runtime/emit/cte-reference.js +2 -1
  413. package/dist/src/runtime/emit/cte-reference.js.map +1 -1
  414. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  415. package/dist/src/runtime/emit/cte.js +2 -1
  416. package/dist/src/runtime/emit/cte.js.map +1 -1
  417. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts +50 -0
  418. package/dist/src/runtime/emit/ddl-transaction-policy.d.ts.map +1 -0
  419. package/dist/src/runtime/emit/ddl-transaction-policy.js +69 -0
  420. package/dist/src/runtime/emit/ddl-transaction-policy.js.map +1 -0
  421. package/dist/src/runtime/emit/delete.d.ts.map +1 -1
  422. package/dist/src/runtime/emit/delete.js +2 -1
  423. package/dist/src/runtime/emit/delete.js.map +1 -1
  424. package/dist/src/runtime/emit/distinct.d.ts.map +1 -1
  425. package/dist/src/runtime/emit/distinct.js +2 -1
  426. package/dist/src/runtime/emit/distinct.js.map +1 -1
  427. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  428. package/dist/src/runtime/emit/dml-executor.js +70 -31
  429. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  430. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  431. package/dist/src/runtime/emit/drop-assertion.js +2 -1
  432. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  433. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  434. package/dist/src/runtime/emit/drop-index.js +17 -1
  435. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  436. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  437. package/dist/src/runtime/emit/drop-table.js +11 -1
  438. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  439. package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -1
  440. package/dist/src/runtime/emit/eager-prefetch.js +2 -1
  441. package/dist/src/runtime/emit/eager-prefetch.js.map +1 -1
  442. package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -1
  443. package/dist/src/runtime/emit/envelope-scan.js +2 -1
  444. package/dist/src/runtime/emit/envelope-scan.js.map +1 -1
  445. package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -1
  446. package/dist/src/runtime/emit/fanout-lookup-join.js +3 -2
  447. package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -1
  448. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  449. package/dist/src/runtime/emit/filter.js +8 -3
  450. package/dist/src/runtime/emit/filter.js.map +1 -1
  451. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  452. package/dist/src/runtime/emit/hash-aggregate.js +16 -11
  453. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  454. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  455. package/dist/src/runtime/emit/insert.js +2 -1
  456. package/dist/src/runtime/emit/insert.js.map +1 -1
  457. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  458. package/dist/src/runtime/emit/join.js +20 -6
  459. package/dist/src/runtime/emit/join.js.map +1 -1
  460. package/dist/src/runtime/emit/limit-offset.d.ts.map +1 -1
  461. package/dist/src/runtime/emit/limit-offset.js +2 -1
  462. package/dist/src/runtime/emit/limit-offset.js.map +1 -1
  463. package/dist/src/runtime/emit/literal.d.ts.map +1 -1
  464. package/dist/src/runtime/emit/literal.js +2 -1
  465. package/dist/src/runtime/emit/literal.js.map +1 -1
  466. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +22 -0
  467. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  468. package/dist/src/runtime/emit/materialized-view-helpers.js +123 -12
  469. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  470. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  471. package/dist/src/runtime/emit/materialized-view.js +6 -0
  472. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  473. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  474. package/dist/src/runtime/emit/merge-join.js +14 -4
  475. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  476. package/dist/src/runtime/emit/ordinal-slice.d.ts.map +1 -1
  477. package/dist/src/runtime/emit/ordinal-slice.js +2 -1
  478. package/dist/src/runtime/emit/ordinal-slice.js.map +1 -1
  479. package/dist/src/runtime/emit/pragma.d.ts.map +1 -1
  480. package/dist/src/runtime/emit/pragma.js +2 -1
  481. package/dist/src/runtime/emit/pragma.js.map +1 -1
  482. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  483. package/dist/src/runtime/emit/project.js +7 -2
  484. package/dist/src/runtime/emit/project.js.map +1 -1
  485. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  486. package/dist/src/runtime/emit/recursive-cte.js +2 -1
  487. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  488. package/dist/src/runtime/emit/returning.d.ts.map +1 -1
  489. package/dist/src/runtime/emit/returning.js +7 -2
  490. package/dist/src/runtime/emit/returning.js.map +1 -1
  491. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  492. package/dist/src/runtime/emit/scalar-function.js +2 -1
  493. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  494. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  495. package/dist/src/runtime/emit/scan.js +55 -17
  496. package/dist/src/runtime/emit/scan.js.map +1 -1
  497. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  498. package/dist/src/runtime/emit/schema-declarative.js +6 -5
  499. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  500. package/dist/src/runtime/emit/sequencing.d.ts.map +1 -1
  501. package/dist/src/runtime/emit/sequencing.js +2 -1
  502. package/dist/src/runtime/emit/sequencing.js.map +1 -1
  503. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  504. package/dist/src/runtime/emit/set-operation.js +6 -5
  505. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  506. package/dist/src/runtime/emit/sink.d.ts.map +1 -1
  507. package/dist/src/runtime/emit/sink.js +2 -1
  508. package/dist/src/runtime/emit/sink.js.map +1 -1
  509. package/dist/src/runtime/emit/sort.d.ts.map +1 -1
  510. package/dist/src/runtime/emit/sort.js +2 -1
  511. package/dist/src/runtime/emit/sort.js.map +1 -1
  512. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  513. package/dist/src/runtime/emit/subquery.js +42 -23
  514. package/dist/src/runtime/emit/subquery.js.map +1 -1
  515. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  516. package/dist/src/runtime/emit/table-valued-function.js +2 -1
  517. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  518. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  519. package/dist/src/runtime/emit/temporal-arithmetic.js +2 -1
  520. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  521. package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
  522. package/dist/src/runtime/emit/transaction.js +2 -1
  523. package/dist/src/runtime/emit/transaction.js.map +1 -1
  524. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  525. package/dist/src/runtime/emit/unary.js +2 -1
  526. package/dist/src/runtime/emit/unary.js.map +1 -1
  527. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  528. package/dist/src/runtime/emit/update.js +2 -1
  529. package/dist/src/runtime/emit/update.js.map +1 -1
  530. package/dist/src/runtime/emit/values.d.ts.map +1 -1
  531. package/dist/src/runtime/emit/values.js +2 -1
  532. package/dist/src/runtime/emit/values.js.map +1 -1
  533. package/dist/src/runtime/emit/view-mutation.d.ts +1 -1
  534. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  535. package/dist/src/runtime/emit/view-mutation.js +6 -3
  536. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  537. package/dist/src/runtime/emit/window.d.ts.map +1 -1
  538. package/dist/src/runtime/emit/window.js +26 -9
  539. package/dist/src/runtime/emit/window.js.map +1 -1
  540. package/dist/src/runtime/emitters.d.ts +11 -3
  541. package/dist/src/runtime/emitters.d.ts.map +1 -1
  542. package/dist/src/runtime/emitters.js +13 -22
  543. package/dist/src/runtime/emitters.js.map +1 -1
  544. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  545. package/dist/src/runtime/foreign-key-actions.js +39 -13
  546. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  547. package/dist/src/runtime/parallel-driver.d.ts +18 -4
  548. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  549. package/dist/src/runtime/parallel-driver.js +72 -18
  550. package/dist/src/runtime/parallel-driver.js.map +1 -1
  551. package/dist/src/runtime/scheduler.d.ts +56 -7
  552. package/dist/src/runtime/scheduler.d.ts.map +1 -1
  553. package/dist/src/runtime/scheduler.js +223 -200
  554. package/dist/src/runtime/scheduler.js.map +1 -1
  555. package/dist/src/runtime/strict-flags.d.ts +22 -0
  556. package/dist/src/runtime/strict-flags.d.ts.map +1 -0
  557. package/dist/src/runtime/strict-flags.js +26 -0
  558. package/dist/src/runtime/strict-flags.js.map +1 -0
  559. package/dist/src/runtime/strict-fork.d.ts +4 -4
  560. package/dist/src/runtime/strict-fork.d.ts.map +1 -1
  561. package/dist/src/runtime/strict-fork.js +175 -31
  562. package/dist/src/runtime/strict-fork.js.map +1 -1
  563. package/dist/src/runtime/types.d.ts +66 -4
  564. package/dist/src/runtime/types.d.ts.map +1 -1
  565. package/dist/src/runtime/types.js +37 -0
  566. package/dist/src/runtime/types.js.map +1 -1
  567. package/dist/src/runtime/utils.d.ts.map +1 -1
  568. package/dist/src/runtime/utils.js +8 -17
  569. package/dist/src/runtime/utils.js.map +1 -1
  570. package/dist/src/schema/column.d.ts +8 -0
  571. package/dist/src/schema/column.d.ts.map +1 -1
  572. package/dist/src/schema/column.js.map +1 -1
  573. package/dist/src/schema/ddl-generator.js +5 -0
  574. package/dist/src/schema/ddl-generator.js.map +1 -1
  575. package/dist/src/schema/lens-compiler.js +2 -2
  576. package/dist/src/schema/lens-compiler.js.map +1 -1
  577. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  578. package/dist/src/schema/lens-prover.js +2 -3
  579. package/dist/src/schema/lens-prover.js.map +1 -1
  580. package/dist/src/schema/lens.d.ts +1 -1
  581. package/dist/src/schema/manager.d.ts.map +1 -1
  582. package/dist/src/schema/manager.js +7 -2
  583. package/dist/src/schema/manager.js.map +1 -1
  584. package/dist/src/schema/rename-rewriter.d.ts +61 -0
  585. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  586. package/dist/src/schema/rename-rewriter.js +77 -0
  587. package/dist/src/schema/rename-rewriter.js.map +1 -1
  588. package/dist/src/schema/table.d.ts +36 -8
  589. package/dist/src/schema/table.d.ts.map +1 -1
  590. package/dist/src/schema/table.js +61 -11
  591. package/dist/src/schema/table.js.map +1 -1
  592. package/dist/src/schema/unique-enforcement.d.ts +28 -5
  593. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  594. package/dist/src/schema/unique-enforcement.js +37 -5
  595. package/dist/src/schema/unique-enforcement.js.map +1 -1
  596. package/dist/src/schema/view.d.ts +1 -1
  597. package/dist/src/schema/view.js +1 -1
  598. package/dist/src/types/json-type.d.ts.map +1 -1
  599. package/dist/src/types/json-type.js +18 -8
  600. package/dist/src/types/json-type.js.map +1 -1
  601. package/dist/src/types/logical-type.d.ts +26 -0
  602. package/dist/src/types/logical-type.d.ts.map +1 -1
  603. package/dist/src/types/logical-type.js.map +1 -1
  604. package/dist/src/util/comparison.d.ts +83 -59
  605. package/dist/src/util/comparison.d.ts.map +1 -1
  606. package/dist/src/util/comparison.js +191 -131
  607. package/dist/src/util/comparison.js.map +1 -1
  608. package/dist/src/util/json-canonical.d.ts +34 -0
  609. package/dist/src/util/json-canonical.d.ts.map +1 -0
  610. package/dist/src/util/json-canonical.js +32 -0
  611. package/dist/src/util/json-canonical.js.map +1 -0
  612. package/dist/src/util/key-serializer.d.ts +10 -3
  613. package/dist/src/util/key-serializer.d.ts.map +1 -1
  614. package/dist/src/util/key-serializer.js +43 -17
  615. package/dist/src/util/key-serializer.js.map +1 -1
  616. package/dist/src/util/key-tuple-codec.d.ts +37 -0
  617. package/dist/src/util/key-tuple-codec.d.ts.map +1 -0
  618. package/dist/src/util/key-tuple-codec.js +65 -0
  619. package/dist/src/util/key-tuple-codec.js.map +1 -0
  620. package/dist/src/util/latches.d.ts +29 -3
  621. package/dist/src/util/latches.d.ts.map +1 -1
  622. package/dist/src/util/latches.js +60 -6
  623. package/dist/src/util/latches.js.map +1 -1
  624. package/dist/src/util/patterns.d.ts +22 -8
  625. package/dist/src/util/patterns.d.ts.map +1 -1
  626. package/dist/src/util/patterns.js +87 -16
  627. package/dist/src/util/patterns.js.map +1 -1
  628. package/dist/src/util/qualified-name.d.ts +10 -0
  629. package/dist/src/util/qualified-name.d.ts.map +1 -0
  630. package/dist/src/util/qualified-name.js +15 -0
  631. package/dist/src/util/qualified-name.js.map +1 -0
  632. package/dist/src/vtab/backing-host.d.ts +8 -1
  633. package/dist/src/vtab/backing-host.d.ts.map +1 -1
  634. package/dist/src/vtab/backing-host.js +7 -0
  635. package/dist/src/vtab/backing-host.js.map +1 -1
  636. package/dist/src/vtab/best-access-plan.d.ts +18 -0
  637. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  638. package/dist/src/vtab/best-access-plan.js +15 -0
  639. package/dist/src/vtab/best-access-plan.js.map +1 -1
  640. package/dist/src/vtab/capabilities.d.ts +44 -0
  641. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  642. package/dist/src/vtab/filter-info.d.ts +42 -0
  643. package/dist/src/vtab/filter-info.d.ts.map +1 -1
  644. package/dist/src/vtab/filter-info.js +137 -1
  645. package/dist/src/vtab/filter-info.js.map +1 -1
  646. package/dist/src/vtab/idx-str.d.ts +62 -0
  647. package/dist/src/vtab/idx-str.d.ts.map +1 -0
  648. package/dist/src/vtab/idx-str.js +130 -0
  649. package/dist/src/vtab/idx-str.js.map +1 -0
  650. package/dist/src/vtab/index-descriptor.d.ts +122 -0
  651. package/dist/src/vtab/index-descriptor.d.ts.map +1 -0
  652. package/dist/src/vtab/index-descriptor.js +104 -0
  653. package/dist/src/vtab/index-descriptor.js.map +1 -0
  654. package/dist/src/vtab/mapping-advertisement.d.ts +1 -1
  655. package/dist/src/vtab/memory/index.d.ts +12 -4
  656. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  657. package/dist/src/vtab/memory/index.js +17 -9
  658. package/dist/src/vtab/memory/index.js.map +1 -1
  659. package/dist/src/vtab/memory/layer/base.d.ts +85 -31
  660. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  661. package/dist/src/vtab/memory/layer/base.js +127 -86
  662. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  663. package/dist/src/vtab/memory/layer/connection.d.ts +27 -0
  664. package/dist/src/vtab/memory/layer/connection.d.ts.map +1 -1
  665. package/dist/src/vtab/memory/layer/connection.js +36 -1
  666. package/dist/src/vtab/memory/layer/connection.js.map +1 -1
  667. package/dist/src/vtab/memory/layer/interface.d.ts +24 -4
  668. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  669. package/dist/src/vtab/memory/layer/manager.d.ts +212 -16
  670. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  671. package/dist/src/vtab/memory/layer/manager.js +754 -170
  672. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  673. package/dist/src/vtab/memory/layer/plan-filter.d.ts +26 -1
  674. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  675. package/dist/src/vtab/memory/layer/plan-filter.js +29 -11
  676. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  677. package/dist/src/vtab/memory/layer/safe-iterate.d.ts +2 -2
  678. package/dist/src/vtab/memory/layer/safe-iterate.d.ts.map +1 -1
  679. package/dist/src/vtab/memory/layer/safe-iterate.js +2 -2
  680. package/dist/src/vtab/memory/layer/safe-iterate.js.map +1 -1
  681. package/dist/src/vtab/memory/layer/scan-layer.d.ts +5 -1
  682. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  683. package/dist/src/vtab/memory/layer/scan-layer.js +38 -22
  684. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  685. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  686. package/dist/src/vtab/memory/layer/scan-plan.js +13 -21
  687. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  688. package/dist/src/vtab/memory/layer/transaction.d.ts +169 -7
  689. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  690. package/dist/src/vtab/memory/layer/transaction.js +334 -9
  691. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  692. package/dist/src/vtab/memory/module.d.ts +11 -4
  693. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  694. package/dist/src/vtab/memory/module.js +35 -16
  695. package/dist/src/vtab/memory/module.js.map +1 -1
  696. package/dist/src/vtab/memory/table.d.ts +30 -4
  697. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  698. package/dist/src/vtab/memory/table.js +63 -15
  699. package/dist/src/vtab/memory/table.js.map +1 -1
  700. package/dist/src/vtab/memory/utils/predicate.d.ts +9 -1
  701. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  702. package/dist/src/vtab/memory/utils/predicate.js +35 -14
  703. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  704. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -1
  705. package/dist/src/vtab/memory/utils/primary-key-encode.js +12 -6
  706. package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -1
  707. package/dist/src/vtab/memory/utils/primary-key.d.ts +6 -1
  708. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  709. package/dist/src/vtab/memory/utils/primary-key.js +12 -8
  710. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  711. package/dist/src/vtab/module.d.ts +38 -14
  712. package/dist/src/vtab/module.d.ts.map +1 -1
  713. package/dist/src/vtab/table.d.ts +41 -2
  714. package/dist/src/vtab/table.d.ts.map +1 -1
  715. package/dist/src/vtab/table.js +19 -0
  716. package/dist/src/vtab/table.js.map +1 -1
  717. package/package.json +5 -4
  718. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts +0 -18
  719. package/dist/src/planner/rules/cache/rule-materialization-advisory.d.ts.map +0 -1
  720. package/dist/src/planner/rules/cache/rule-materialization-advisory.js +0 -65
  721. package/dist/src/planner/rules/cache/rule-materialization-advisory.js.map +0 -1
@@ -0,0 +1,502 @@
1
+ /**
2
+ * Materialized-view maintenance — plan-tree analysis helpers.
3
+ *
4
+ * The stateless utilities the maintenance plan builders lean on: recursive plan-tree
5
+ * walks (find/count node types, collect table refs + attribute provenance), the
6
+ * collation/determinism/replicability gates, the create-time rejection diagnostics, and
7
+ * the single-source scalar-expression evaluator. Split out of
8
+ * `database-materialized-views.ts` so the manager class and its plan builders read on
9
+ * their own; every function here is a pure move (no `MaterializedViewManager` state).
10
+ */
11
+ import { QuereusError } from '../common/errors.js';
12
+ import { StatusCode } from '../common/types.js';
13
+ import { isRelationalNode, isScalarNode } from '../planner/nodes/plan-node.js';
14
+ import { ColumnReferenceNode, TableReferenceNode } from '../planner/nodes/reference.js';
15
+ import { FilterNode } from '../planner/nodes/filter.js';
16
+ import { AggregateNode } from '../planner/nodes/aggregate-node.js';
17
+ import { TableFunctionCallNode } from '../planner/nodes/table-function-call.js';
18
+ import { PlanNodeType } from '../planner/nodes/plan-node-type.js';
19
+ import { checkDeterministic } from '../planner/validation/determinism-validator.js';
20
+ import { emitPlanNode } from '../runtime/emitters.js';
21
+ import { EmissionContext } from '../runtime/emission-context.js';
22
+ import { Scheduler } from '../runtime/scheduler.js';
23
+ import { RowContextMap } from '../runtime/context-helpers.js';
24
+ import { normalizeCollationName } from '../util/comparison.js';
25
+ import { uniqueEnforcementCollations } from '../schema/unique-enforcement.js';
26
+ /** True for the default (binary) collation: an absent name or a case-insensitive
27
+ * `BINARY`. Non-binary collations gate off the prefix-scan fast path (see
28
+ * {@link MaterializedViewManager.tryBuildCoveringPrefix}). */
29
+ export function isBinaryCollation(collation) {
30
+ return collation === undefined || collation.toUpperCase() === 'BINARY';
31
+ }
32
+ /** Canonical upper-case collation name (absent ⇒ `BINARY`). Used to compare a backing-PK
33
+ * column's collation against its source PK column's at plan-build (see
34
+ * {@link MaterializedViewManager.buildLateralTvfPrefixDeletePlan}). */
35
+ export function normalizeCollation(collation) {
36
+ return (collation ?? 'BINARY').toUpperCase();
37
+ }
38
+ export function mvKey(schemaName, name) {
39
+ return `${schemaName}.${name}`.toLowerCase();
40
+ }
41
+ /** Every source base (lowercased `schema.table`) a plan must be indexed under in
42
+ * `rowTimeBySource`. Single-source arms read one base; the 1:1-join arm also reads
43
+ * the lookup base, so a write to `P` fires maintenance too; the full-rebuild floor reads
44
+ * every source its body touches (set-op legs, all join sources). */
45
+ export function planSourceBases(plan) {
46
+ if (plan.kind === 'full-rebuild') {
47
+ return plan.sourceBases;
48
+ }
49
+ if (plan.kind === 'join-residual' && plan.lookupBase !== plan.sourceBase) {
50
+ return [plan.sourceBase, plan.lookupBase];
51
+ }
52
+ return [plan.sourceBase];
53
+ }
54
+ /** Walk the whole plan; return the string form of the first non-deterministic scalar
55
+ * expression (a `random()`/`now()`/volatile UDF, anywhere in the body), or `undefined`
56
+ * when the body is fully deterministic. The full-rebuild floor's whole-body determinism
57
+ * gate uses this — a non-deterministic body can never be kept equal to its plain view.
58
+ * `physical.deterministic` is computed lazily and propagates from leaves, so checking each
59
+ * scalar node is sound on either the pre-physical or optimized plan. */
60
+ export function findNonDeterministic(node) {
61
+ if (isScalarNode(node)) {
62
+ const det = checkDeterministic(node);
63
+ if (!det.valid)
64
+ return det.expression ?? node.toString();
65
+ }
66
+ for (const child of node.getChildren()) {
67
+ const found = findNonDeterministic(child);
68
+ if (found)
69
+ return found;
70
+ }
71
+ return undefined;
72
+ }
73
+ /** Walk the whole plan; return the NAME of the first function whose schema is not declared
74
+ * REPLICABLE (bit-identical across peers/platforms/app-versions — built-ins auto-qualify),
75
+ * or `undefined` when every function in the body qualifies. Mirrors {@link findNonDeterministic}'s
76
+ * `getChildren()` recursion so nested calls (a UDF inside a builtin inside a UDF) and the
77
+ * WHERE / GROUP BY / aggregate-arg / TVF-arg positions are all reached. The structural
78
+ * `'functionSchema' in node` test covers all four function-bearing node kinds uniformly —
79
+ * scalar (`function.ts`), aggregate (`aggregate-function.ts`), TVF call
80
+ * (`table-function-call.ts`), and TVF reference (`reference.ts`) — without per-type imports.
81
+ * Window functions live in a separate builtin-only registry with no UDF registration path and
82
+ * carry no scalar/aggregate/TVF `functionSchema` on these nodes, so they are inherently
83
+ * replicable and are never flagged. Consumed only when the backing host declares
84
+ * `requiresReplicableDerivations` (see {@link MaterializedViewManager.buildMaintenancePlan}). */
85
+ export function findNonReplicableFunction(node) {
86
+ if ('functionSchema' in node) {
87
+ const schema = node.functionSchema;
88
+ if (schema.replicable !== true)
89
+ return schema.name;
90
+ }
91
+ for (const child of node.getChildren()) {
92
+ const found = findNonReplicableFunction(child);
93
+ if (found)
94
+ return found;
95
+ }
96
+ return undefined;
97
+ }
98
+ /** The built-in collation names. These are pure JS string operations (`<`/`>`,
99
+ * locale-independent `toLowerCase()`, ASCII-space trim), so they are bit-identical
100
+ * across peers' JS engines and auto-qualify as REPLICABLE — exactly parallel to why
101
+ * built-in functions do. A custom collation must opt in with `replicable: true` at
102
+ * registration. Short-circuiting on name (regardless of `collationSource`) keeps the
103
+ * walk free of rank reasoning: a `default` BINARY and an `explicit` NOCASE both pass;
104
+ * only a custom name is ever subjected to `_isCollationReplicable`. */
105
+ const BUILTIN_COLLATION_NAMES = new Set(['BINARY', 'NOCASE', 'RTRIM']);
106
+ /** True when `collation` is a non-builtin name the database does not assert REPLICABLE.
107
+ * `undefined`/builtin/replicable ⇒ not offending. */
108
+ function collationIsOffending(collation, db) {
109
+ if (collation === undefined)
110
+ return false;
111
+ const norm = normalizeCollationName(collation);
112
+ if (BUILTIN_COLLATION_NAMES.has(norm))
113
+ return false;
114
+ return !db._isCollationReplicable(norm);
115
+ }
116
+ /**
117
+ * The collation analogue of {@link findNonReplicableFunction}: return the NAME of the
118
+ * first collation that governs derived bytes and is neither built-in nor declared
119
+ * REPLICABLE, or `undefined` when every collation qualifies. Two sources, soundness-first
120
+ * (any non-builtin non-replicable collation anywhere rejects — see the soundness note in
121
+ * `replicable-collation-class`):
122
+ *
123
+ * 1. **Body scalars** — every fold/order/key site (explicit `COLLATE`, a declared/default
124
+ * column collation, a comparison's effective collation, ORDER BY / GROUP BY / DISTINCT
125
+ * keys) resolves through some scalar node whose `getType().collationName` carries the
126
+ * name. One `getChildren()` walk reading that field uniformly reaches them all, including
127
+ * nested COLLATE, subquery/CTE/set-op legs, and MV-over-MV bodies (whose source columns
128
+ * carry the producing backing's published collation).
129
+ * 2. **Backing key** — a custom collation can govern the backing key MERGE without appearing
130
+ * on any body scalar type (a maintained table declared with an explicit
131
+ * `UNIQUE (… COLLATE custom)` or PK collation the SELECT body never names). The body walk
132
+ * alone would miss it, so the maintained table's own PK column collations + declared
133
+ * secondary UNIQUE per-column enforcement collations (resolving an index-derived override
134
+ * via {@link uniqueEnforcementCollations}) are checked directly — the robust closure.
135
+ *
136
+ * Consumed only when the backing host declares `requiresReplicableDerivations`.
137
+ */
138
+ export function findNonReplicableCollation(node, mv, db) {
139
+ const bodyOffender = findNonReplicableBodyCollation(node, db);
140
+ if (bodyOffender !== undefined)
141
+ return bodyOffender;
142
+ return findNonReplicableKeyCollation(mv, db);
143
+ }
144
+ /** Source 1: walk the plan; first scalar node whose resolved `collationName` is a
145
+ * non-builtin non-replicable collation. Mirrors {@link findNonReplicableFunction}'s
146
+ * recursion so every body position is reached. */
147
+ function findNonReplicableBodyCollation(node, db) {
148
+ if (isScalarNode(node)) {
149
+ const collation = node.getType().collationName;
150
+ if (collationIsOffending(collation, db))
151
+ return normalizeCollationName(collation);
152
+ }
153
+ for (const child of node.getChildren()) {
154
+ const found = findNonReplicableBodyCollation(child, db);
155
+ if (found !== undefined)
156
+ return found;
157
+ }
158
+ return undefined;
159
+ }
160
+ /** Source 2: the maintained table's backing-key collations — PK column collations and
161
+ * declared secondary UNIQUE per-column enforcement collations. First non-builtin
162
+ * non-replicable name returns. */
163
+ function findNonReplicableKeyCollation(mv, db) {
164
+ for (const pk of mv.primaryKeyDefinition) {
165
+ if (collationIsOffending(pk.collation, db))
166
+ return normalizeCollationName(pk.collation);
167
+ }
168
+ for (const uc of mv.uniqueConstraints ?? []) {
169
+ for (const collation of uniqueEnforcementCollations(mv, uc)) {
170
+ if (collationIsOffending(collation, db))
171
+ return normalizeCollationName(collation);
172
+ }
173
+ }
174
+ return undefined;
175
+ }
176
+ /** Canonical, order-stable, bigint-safe string for a key tuple — used to dedup the
177
+ * distinct affected backing keys of a single change in the residual-recompute arm. */
178
+ export function canonKeyValues(values) {
179
+ return JSON.stringify(values, (_k, v) => (typeof v === 'bigint' ? `${v}n` : v));
180
+ }
181
+ /** Aggregate node types (logical + physical) — the analyzed plan may carry any. */
182
+ const AGGREGATE_NODE_TYPES = new Set([
183
+ PlanNodeType.Aggregate,
184
+ PlanNodeType.StreamAggregate,
185
+ PlanNodeType.HashAggregate,
186
+ ]);
187
+ /** Find the first aggregate node anywhere in the plan. */
188
+ export function findAggregate(node) {
189
+ if (AGGREGATE_NODE_TYPES.has(node.nodeType))
190
+ return node;
191
+ for (const child of node.getChildren()) {
192
+ const found = findAggregate(child);
193
+ if (found)
194
+ return found;
195
+ }
196
+ return undefined;
197
+ }
198
+ /**
199
+ * Join-bearing PlanNodeTypes (logical + physical). `optimizeForAnalysis` stops
200
+ * before physical join selection, so the analyzed plan carries the logical
201
+ * {@link PlanNodeType.Join}; the physical variants are included so the
202
+ * eligibility gate stays correct if analysis ever surfaces them.
203
+ */
204
+ const JOIN_NODE_TYPES = new Set([
205
+ PlanNodeType.Join,
206
+ PlanNodeType.NestedLoopJoin,
207
+ PlanNodeType.HashJoin,
208
+ PlanNodeType.MergeJoin,
209
+ PlanNodeType.FanOutLookupJoin,
210
+ PlanNodeType.AsofScan,
211
+ ]);
212
+ /** True if any node in the plan has the given type (recursive `getChildren` walk). */
213
+ export function containsNodeType(node, type) {
214
+ if (node.nodeType === type)
215
+ return true;
216
+ for (const child of node.getChildren()) {
217
+ if (containsNodeType(child, type))
218
+ return true;
219
+ }
220
+ return false;
221
+ }
222
+ /** True if the plan carries any join node (logical or physical). Used by the
223
+ * row-time gate, which is single-source — any join is ineligible. */
224
+ export function containsAnyJoin(node) {
225
+ for (const t of JOIN_NODE_TYPES) {
226
+ if (containsNodeType(node, t))
227
+ return true;
228
+ }
229
+ return false;
230
+ }
231
+ /** Count nodes of the given type (recursive `getChildren` walk). Used by the
232
+ * lateral-TVF gate to reject nested/multiple TVFs. */
233
+ export function countNodeType(node, type) {
234
+ let n = node.nodeType === type ? 1 : 0;
235
+ for (const child of node.getChildren())
236
+ n += countNodeType(child, type);
237
+ return n;
238
+ }
239
+ /** Count join nodes (logical + physical) in the plan — used to reject a chained
240
+ * lateral join (the admitted lateral-TVF shape carries exactly one). */
241
+ export function countJoins(node) {
242
+ let n = 0;
243
+ for (const t of JOIN_NODE_TYPES)
244
+ n += countNodeType(node, t);
245
+ return n;
246
+ }
247
+ /** Find the first {@link TableFunctionCallNode} anywhere in the plan, or `undefined`. */
248
+ export function findTableFunctionCall(node) {
249
+ if (node instanceof TableFunctionCallNode)
250
+ return node;
251
+ for (const child of node.getChildren()) {
252
+ const found = findTableFunctionCall(child);
253
+ if (found)
254
+ return found;
255
+ }
256
+ return undefined;
257
+ }
258
+ /** Collect `relationKey → TableReferenceNode` over a plan. */
259
+ export function collectTableRefs(node, out = new Map()) {
260
+ if (node instanceof TableReferenceNode) {
261
+ const base = `${node.tableSchema.schemaName}.${node.tableSchema.name}`.toLowerCase();
262
+ out.set(`${base}#${node.id ?? 'unknown'}`, node);
263
+ }
264
+ for (const child of node.getChildren())
265
+ collectTableRefs(child, out);
266
+ return out;
267
+ }
268
+ /**
269
+ * Merge attribute provenance (output attr id → producing scalar expr) from every
270
+ * node that exposes it. Physical aggregates expose `getProducingExprs()`; the
271
+ * logical {@link AggregateNode} present in the pre-physical analyzed plan does
272
+ * not, so its group-by → output-attr mapping is reconstructed directly here.
273
+ */
274
+ export function collectProducingExprs(node, out = new Map()) {
275
+ const fn = node.getProducingExprs;
276
+ if (typeof fn === 'function') {
277
+ for (const [attrId, expr] of fn.call(node)) {
278
+ if (!out.has(attrId))
279
+ out.set(attrId, expr);
280
+ }
281
+ }
282
+ else if (node instanceof AggregateNode) {
283
+ const attrs = node.getAttributes();
284
+ node.groupBy.forEach((expr, i) => {
285
+ const attr = attrs[i];
286
+ if (attr && !out.has(attr.id))
287
+ out.set(attr.id, expr);
288
+ });
289
+ node.aggregates.forEach((agg, i) => {
290
+ const attr = attrs[node.groupBy.length + i];
291
+ if (attr && !out.has(attr.id))
292
+ out.set(attr.id, agg.expression);
293
+ });
294
+ }
295
+ for (const child of node.getChildren())
296
+ collectProducingExprs(child, out);
297
+ return out;
298
+ }
299
+ /**
300
+ * Transitive provenance: chase an output-attr → producing `ColumnReference` chain (a
301
+ * Project-over-Aggregate or a passthrough-through-Join adds a hop the single-hop
302
+ * {@link resolveSourceCol} cannot follow) until landing on a base-source column, or
303
+ * `undefined` (e.g. a TVF-output column with no base-source identity). Shared by the
304
+ * aggregate-residual and lateral-TVF arms.
305
+ */
306
+ export function resolveTransitiveSourceCol(attrId, sourceAttrToCol, producingByAttrId) {
307
+ const seen = new Set();
308
+ let cur = attrId;
309
+ while (cur !== undefined && !seen.has(cur)) {
310
+ seen.add(cur);
311
+ const direct = sourceAttrToCol.get(cur);
312
+ if (direct !== undefined)
313
+ return direct;
314
+ const expr = producingByAttrId.get(cur);
315
+ if (expr instanceof ColumnReferenceNode) {
316
+ cur = expr.attributeId;
317
+ continue;
318
+ }
319
+ return undefined;
320
+ }
321
+ return undefined;
322
+ }
323
+ /**
324
+ * True iff the analyzed join body's WHERE references the lookup table `P` (or any base other
325
+ * than the driving `T`) — the classification the join-residual arm uses to decide whether the
326
+ * lookup side must be delete-capable (see {@link MaterializedViewManager.buildJoinResidualPlan}).
327
+ * The body WHERE — possibly split by predicate-pushdown — surfaces as one or more
328
+ * {@link FilterNode}s above/around the join; the join's own `ON` condition lives inside the
329
+ * JoinNode (not a Filter) and so is excluded. Each column a filter predicate references is
330
+ * resolved against `T`'s attribute→source-column map (transitively); a reference that does NOT
331
+ * resolve to a `T` column is a `P` (the arm requires exactly two base refs, `T` and `P`) — or
332
+ * otherwise non-`T` — reference. Conservative by construction: an unresolved reference counts as
333
+ * lookup-referencing, so the cheaper `T`-only upsert-only path is taken only when **every**
334
+ * filter column provably belongs to `T`.
335
+ */
336
+ export function bodyWhereReferencesLookup(analyzed, tAttrToCol, producingByAttrId) {
337
+ const filterAttrs = new Set();
338
+ collectFilterPredicateAttrs(analyzed, filterAttrs);
339
+ for (const attrId of filterAttrs) {
340
+ if (resolveTransitiveSourceCol(attrId, tAttrToCol, producingByAttrId) === undefined)
341
+ return true;
342
+ }
343
+ return false;
344
+ }
345
+ /** Collect every attribute id referenced by a ColumnReferenceNode inside any {@link FilterNode}
346
+ * predicate in the plan (the body WHERE; the join `ON` condition is not a Filter). */
347
+ function collectFilterPredicateAttrs(node, out) {
348
+ if (node instanceof FilterNode)
349
+ collectColumnRefAttrs(node.predicate, out);
350
+ for (const child of node.getChildren())
351
+ collectFilterPredicateAttrs(child, out);
352
+ }
353
+ /** Collect every {@link ColumnReferenceNode} attribute id in a scalar subtree. */
354
+ function collectColumnRefAttrs(node, out) {
355
+ if (node instanceof ColumnReferenceNode)
356
+ out.add(node.attributeId);
357
+ for (const child of node.getChildren())
358
+ collectColumnRefAttrs(child, out);
359
+ }
360
+ /**
361
+ * True iff any {@link FilterNode} predicate in the body (the body WHERE) is non-deterministic.
362
+ * The join-residual arm embeds the body WHERE in every residual (forward, in-scope reverse, and
363
+ * — when delete-capable — membership), so a volatile predicate (`random()`/`now()`/a volatile
364
+ * UDF) would make them irreproducible and diverge from the plain view. The arm therefore declines
365
+ * such a body (returns `null` → the full-rebuild floor, which applies the **pragma-gated**
366
+ * whole-body determinism reject — rejected without `pragma nondeterministic_schema`, accepted as a
367
+ * wholesale rebuild with it), preserving the pre-WHERE-widening behavior rather than building an
368
+ * unsound bounded-delta residual.
369
+ */
370
+ export function bodyWhereIsNonDeterministic(analyzed) {
371
+ const visit = (node) => {
372
+ if (node instanceof FilterNode && !checkDeterministic(node.predicate).valid)
373
+ return true;
374
+ for (const child of node.getChildren()) {
375
+ if (visit(child))
376
+ return true;
377
+ }
378
+ return false;
379
+ };
380
+ return visit(analyzed);
381
+ }
382
+ /** Read the output attributes of a block's final relational statement. */
383
+ export function relationalAttributes(block) {
384
+ const children = block.getChildren();
385
+ for (let i = children.length - 1; i >= 0; i--) {
386
+ const child = children[i];
387
+ if (typeof child.getAttributes === 'function')
388
+ return child.getAttributes();
389
+ }
390
+ return undefined;
391
+ }
392
+ /** The root relational node of a block's final relational statement — the node whose
393
+ * attributes {@link relationalAttributes} reads — or `undefined`. Feeds the shared
394
+ * coverage-prover join predicates ({@link proveOneToOneJoin}) for the join-residual arm. */
395
+ export function rootRelationalNode(block) {
396
+ const children = block.getChildren();
397
+ for (let i = children.length - 1; i >= 0; i--) {
398
+ const child = children[i];
399
+ if (isRelationalNode(child))
400
+ return child;
401
+ }
402
+ return undefined;
403
+ }
404
+ /**
405
+ * The diagnostic for a create-time **hard** reject — one of the four non-shape rejections
406
+ * the cost-gated-with-floor model keeps (non-determinism, bag/no-key, no relational output,
407
+ * size). Names the MV and steers to a plain `view` (live re-evaluation) or
408
+ * `create table ... as <body>` (a one-off snapshot) — never a refresh policy, never an
409
+ * internal implementation detail. Used by the arm builders (for their arm-specific
410
+ * determinism diagnostic) and by {@link MaterializedViewManager.buildFullRebuildPlan}.
411
+ */
412
+ export function cannotMaterialize(mvName, detail) {
413
+ return new QuereusError(`materialized view '${mvName}' cannot be materialized: ${detail}. For this body, use a `
414
+ + `plain 'create view' (live re-evaluation) or 'create table ... as <body>' (a one-off snapshot)`, StatusCode.UNSUPPORTED);
415
+ }
416
+ /**
417
+ * The diagnostic for the create-time **replicable-determinism** reject — distinct from
418
+ * {@link cannotMaterialize} because the fix here is not "use a plain view": the body is
419
+ * fine, it just calls a function the backing host requires be REPLICABLE. So this names the
420
+ * function and steers to declaring it `replicable: true` at registration (built-ins qualify
421
+ * automatically). Fires only when the resolved backing host declares
422
+ * `requiresReplicableDerivations`. `StatusCode.UNSUPPORTED`.
423
+ */
424
+ export function nonReplicableDerivationError(mvName, fnName) {
425
+ return new QuereusError(`materialized view '${mvName}' cannot be materialized on this backing host: it calls non-replicable `
426
+ + `function '${fnName}'. This host requires every function in the body to be bit-identical across `
427
+ + `peers/platforms; declare the function \`replicable: true\` at registration (built-in functions `
428
+ + `qualify automatically)`, StatusCode.UNSUPPORTED);
429
+ }
430
+ /**
431
+ * The diagnostic for the create-time **replicable-collation** reject — the collation
432
+ * analogue of {@link nonReplicableDerivationError}. The body is fine; it just folds or
433
+ * orders (comparison / ORDER BY / GROUP BY / DISTINCT / backing key) under a collation the
434
+ * backing host requires be bit-identical across peers — so this does NOT steer to a plain
435
+ * view. It names the collation and steers to declaring it `replicable: true` at registration
436
+ * (built-in collations qualify automatically). Fires only when the resolved backing host
437
+ * declares `requiresReplicableDerivations`. `StatusCode.UNSUPPORTED`.
438
+ */
439
+ export function nonReplicableCollationDerivationError(mvName, collationName) {
440
+ return new QuereusError(`materialized view '${mvName}' cannot be materialized on this backing host: it folds or orders under `
441
+ + `non-replicable collation '${collationName}'. This host requires every collation in the body to be `
442
+ + `bit-identical across peers/platforms; declare the collation \`replicable: true\` at registration `
443
+ + `(built-in collations qualify automatically)`, StatusCode.UNSUPPORTED);
444
+ }
445
+ /**
446
+ * True iff a computed projection expression can be evaluated as a pure function of the
447
+ * changed source row — i.e. it contains no subquery / relational subtree (cross-row) and
448
+ * every column reference resolves to a source column (no correlated / outer reference).
449
+ * This is the "shape" gate distinct from the determinism gate (a determinism failure is
450
+ * caught earlier by `checkDeterministic`); a `false` here is a `null` fall-through to the
451
+ * full-rebuild floor, not a hard reject.
452
+ */
453
+ export function isSingleRowEvaluable(expr, sourceDescriptor) {
454
+ const visit = (node) => {
455
+ if (node !== expr && isRelationalNode(node))
456
+ return false; // a subquery / relational subtree
457
+ if (node instanceof ColumnReferenceNode && sourceDescriptor[node.attributeId] === undefined) {
458
+ return false; // references a value outside the source row
459
+ }
460
+ for (const child of node.getChildren()) {
461
+ if (!visit(child))
462
+ return false;
463
+ }
464
+ return true;
465
+ };
466
+ return visit(expr);
467
+ }
468
+ /**
469
+ * Compile a deterministic scalar plan node into a per-source-row evaluator by reusing
470
+ * the runtime: emit the node once, then run it against a row context that maps each
471
+ * source attribute id to its column index in the changed row. Reusing the runtime
472
+ * (rather than a hand-rolled scalar interpreter) guarantees a computed backing value is
473
+ * byte-for-byte what `select <body>` would produce — the materialized-view ≡ view
474
+ * contract. The gated forms (deterministic scalars over a single row, no subqueries —
475
+ * see {@link assertSingleRowEvaluable}) resolve synchronously; a Promise result would
476
+ * signal an unsupported async form and is surfaced loudly rather than silently awaited.
477
+ */
478
+ export function compileSourceRowEvaluator(db, expr, sourceDescriptor) {
479
+ const instruction = emitPlanNode(expr, new EmissionContext(db));
480
+ const scheduler = new Scheduler(instruction);
481
+ const context = new RowContextMap();
482
+ let currentRow = [];
483
+ // Installed once; the getter reads the closed-over `currentRow`, refreshed per call.
484
+ context.set(sourceDescriptor, () => currentRow);
485
+ const rctx = {
486
+ db,
487
+ stmt: undefined,
488
+ params: {},
489
+ context,
490
+ tableContexts: new Map(),
491
+ enableMetrics: false,
492
+ };
493
+ return (row) => {
494
+ currentRow = row;
495
+ const result = scheduler.run(rctx);
496
+ if (result instanceof Promise) {
497
+ throw new QuereusError('a row-time projection expression evaluated asynchronously (unexpected for a gated single-row scalar)', StatusCode.INTERNAL);
498
+ }
499
+ return result;
500
+ };
501
+ }
502
+ //# sourceMappingURL=database-materialized-views-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-materialized-views-analysis.js","sourceRoot":"","sources":["../../../src/core/database-materialized-views-analysis.ts"],"names":[],"mappings":"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"}