@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
@@ -5,6 +5,7 @@ import type { TableReferenceNode } from './reference.js';
5
5
  import type { RelationType } from '../../common/datatype.js';
6
6
  import type { ConflictResolution } from '../../common/constants.js';
7
7
  import { RowOp } from '../../common/types.js';
8
+ import type { LogicalType } from '../../types/logical-type.js';
8
9
  /**
9
10
  * Represents a planned UPSERT clause for INSERT operations.
10
11
  * This contains the pre-built plan nodes for ON CONFLICT DO UPDATE handling.
@@ -12,6 +13,26 @@ import { RowOp } from '../../common/types.js';
12
13
  export interface UpsertClausePlan {
13
14
  /** Conflict target column indices (matches PK if undefined) */
14
15
  conflictTargetIndices?: number[];
16
+ /**
17
+ * Per-conflict-target-column enforcement collation NAME, index-aligned with
18
+ * {@link conflictTargetIndices} (an `undefined` entry means BINARY). This is the
19
+ * collation the targeted constraint *enforces* under — a PK column def's collation,
20
+ * or a UNIQUE constraint's `uniqueEnforcementCollations` (which prefers an
21
+ * index-derived per-column COLLATE) — not merely the column's declared collation.
22
+ * Resolved to comparison functions at emit time; consumed by the runtime
23
+ * conflict-target match so a collation-equal conflict (e.g. NOCASE case-variant)
24
+ * routes to the DO UPDATE / DO NOTHING arm instead of aborting. Set only when
25
+ * {@link conflictTargetIndices} is set.
26
+ */
27
+ conflictTargetCollations?: (string | undefined)[];
28
+ /**
29
+ * Per-conflict-target-column logical type, index-aligned with
30
+ * {@link conflictTargetIndices}. The runtime match applies this column's affinity to
31
+ * the (pre-affinity-coercion) proposed value before the enforcement-collation
32
+ * comparison, so an affinity-coerced conflict (e.g. `'1'` proposed into an INTEGER
33
+ * key holding `1`) matches. Set only when {@link conflictTargetIndices} is set.
34
+ */
35
+ conflictTargetTypes?: LogicalType[];
15
36
  /** Action: 'nothing' skips the row, 'update' performs column updates */
16
37
  action: 'nothing' | 'update';
17
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"dml-executor-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/dml-executor-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAoB,MAAM,gBAAgB,CAAC;AACvK,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,+DAA+D;IAC/D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,wEAAwE;IACxE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,yDAAyD;IACzD,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,aAAa,CAAC;IACjC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,aAAa,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,QAAS,YAAW,kBAAkB;aAKvD,MAAM,EAAE,kBAAkB;aAC1B,KAAK,EAAE,kBAAkB;aACzB,SAAS,EAAE,KAAK;aAChB,UAAU,CAAC,EAAE,kBAAkB;aAC/B,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;aACnD,iBAAiB,CAAC,EAAE,SAAS,EAAE;aAC/B,iBAAiB,CAAC,EAAE,aAAa;aACjC,aAAa,CAAC,EAAE,gBAAgB,EAAE;IAClD;;;;;;;;;;;;OAYG;aACa,UAAU,EAAE,OAAO;IAzBrC,SAAkB,QAAQ,+BAA+B;gBAGvD,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,KAAK,EAChB,UAAU,CAAC,EAAE,kBAAkB,YAAA,EAAE,gDAAgD;IACjF,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,YAAA,EAAE,qCAAqC;IAC1F,iBAAiB,CAAC,EAAE,SAAS,EAAE,YAAA,EAAE,8BAA8B;IAC/D,iBAAiB,CAAC,EAAE,aAAa,YAAA,EAAE,kCAAkC;IACrE,aAAa,CAAC,EAAE,gBAAgB,EAAE,YAAA,EAAE,4CAA4C;IAChG;;;;;;;;;;;;OAYG;IACa,UAAU,GAAE,OAAe;IAK7C,OAAO,IAAI,YAAY;IAIvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,YAAY,IAAI,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAIjE,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAiCxD,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAEQ,QAAQ,IAAI,MAAM;IAIlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA2BxD,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAU/C"}
1
+ {"version":3,"file":"dml-executor-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/dml-executor-node.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dml-executor-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/dml-executor-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dml-executor-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/dml-executor-node.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import type { Scope } from '../scopes/scope.js';
14
14
  * op of one view insert shares the same `rctx`, they all read the SAME envelope
15
15
  * rows: the shared surrogate is generated exactly once per produced logical row
16
16
  * and threaded identically across the fan-out, so the branches cannot diverge
17
- * (docs/view-updateability.md § Mutation Context).
17
+ * (docs/vu-mutation-context.md § Mutation Context).
18
18
  *
19
19
  * It is a leaf — its rows come from the context, not a child subtree — so
20
20
  * `withChildren` (inherited) returns `this`, preserving the {@link descriptor}
@@ -13,7 +13,7 @@ import { Cached } from '../../util/cached.js';
13
13
  * op of one view insert shares the same `rctx`, they all read the SAME envelope
14
14
  * rows: the shared surrogate is generated exactly once per produced logical row
15
15
  * and threaded identically across the fan-out, so the branches cannot diverge
16
- * (docs/view-updateability.md § Mutation Context).
16
+ * (docs/vu-mutation-context.md § Mutation Context).
17
17
  *
18
18
  * It is a leaf — its rows come from the context, not a child subtree — so
19
19
  * `withChildren` (inherited) returns `this`, preserving the {@link descriptor}
@@ -1 +1 @@
1
- {"version":3,"file":"fanout-lookup-join-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/fanout-lookup-join-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACN,QAAQ,EAER,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,kBAAkB,EAKvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,GAAG,YAAY,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,oBAAqB,SAAQ,QAAS,YAAW,kBAAkB;aAM9D,KAAK,EAAE,kBAAkB;aACzB,QAAQ,EAAE,SAAS,gBAAgB,EAAE;aACrC,cAAc,EAAE,MAAM;aACtB,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;aAC3C,SAAS,EAAE,eAAe;IAT3C,SAAkB,QAAQ,iCAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;gBAG9D,KAAK,EAAE,KAAK,EACI,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,cAAc,EAAE,MAAM,EACtB,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE,YAAA,EAC3C,SAAS,GAAE,eAA0B;IAQtD,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA+CnC,OAAO,CAAC,eAAe;IAmBvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,OAAO,IAAI,YAAY;IA+BvB,eAAe,CAAC,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2D7F;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAa5B,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,kBAAkB,EAAE;IAI7C,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IA2C/C,QAAQ,IAAI,MAAM;IAQlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAYxD"}
1
+ {"version":3,"file":"fanout-lookup-join-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/fanout-lookup-join-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACN,QAAQ,EAER,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,kBAAkB,EAKvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,GAAG,YAAY,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,oBAAqB,SAAQ,QAAS,YAAW,kBAAkB;aAM9D,KAAK,EAAE,kBAAkB;aACzB,QAAQ,EAAE,SAAS,gBAAgB,EAAE;aACrC,cAAc,EAAE,MAAM;aACtB,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;aAC3C,SAAS,EAAE,eAAe;IAT3C,SAAkB,QAAQ,iCAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;gBAG9D,KAAK,EAAE,KAAK,EACI,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,cAAc,EAAE,MAAM,EACtB,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE,YAAA,EAC3C,SAAS,GAAE,eAA0B;IAUtD,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA+CnC,OAAO,CAAC,eAAe;IAmBvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,OAAO,IAAI,YAAY;IA+BvB,eAAe,CAAC,gBAAgB,EAAE,SAAS,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2D7F;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;IAa5B,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,kBAAkB,EAAE;IAI7C,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IA2C/C,QAAQ,IAAI,MAAM;IAQlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAYxD"}
@@ -59,8 +59,10 @@ export class FanOutLookupJoinNode extends PlanNode {
59
59
  attributesCache;
60
60
  constructor(scope, outer, branches, concurrencyCap, preserveAttributeIds, outerMode = 'serial') {
61
61
  FanOutLookupJoinNode.validateConstruction(outer, branches, concurrencyCap, preserveAttributeIds, outerMode);
62
- const branchCost = branches.reduce((acc, b) => acc + b.child.getTotalCost(), 0);
63
- super(scope, outer.getTotalCost() + branchCost);
62
+ // Self-cost only: the outer and every branch child are in getChildren(), so
63
+ // their subtree costs flow in via getTotalCost(). The fan-out node's own
64
+ // overhead is negligible (it forks child sub-plans; no per-row work of its own).
65
+ super(scope, 0.01);
64
66
  this.outer = outer;
65
67
  this.branches = branches;
66
68
  this.concurrencyCap = concurrencyCap;
@@ -1 +1 @@
1
- {"version":3,"file":"fanout-lookup-join-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/fanout-lookup-join-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fanout-lookup-join-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/fanout-lookup-join-node.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,12 @@ import { PlanNodeType } from './plan-node-type.js';
2
2
  import { PlanNode, type RelationalPlanNode, type ScalarPlanNode, type UnaryRelationalNode, type Attribute, type PhysicalProperties } from './plan-node.js';
3
3
  import type { RelationType } from '../../common/datatype.js';
4
4
  import type { Scope } from '../scopes/scope.js';
5
- import { PredicateCapable, type PredicateSourceCapable } from '../framework/characteristics.js';
5
+ import type { PredicateCapable, PredicateSourceCapable } from '../framework/characteristics.js';
6
+ /**
7
+ * Last-resort selectivity used by {@link FilterNode.estimatedRows} when no
8
+ * stats-derived estimate has been stamped (see `rule-filter-selectivity`).
9
+ */
10
+ export declare const DEFAULT_FILTER_SELECTIVITY = 0.5;
6
11
  /**
7
12
  * Represents a filter operation (WHERE clause).
8
13
  * It takes an input relation and a predicate expression,
@@ -11,8 +16,11 @@ import { PredicateCapable, type PredicateSourceCapable } from '../framework/char
11
16
  export declare class FilterNode extends PlanNode implements UnaryRelationalNode, PredicateCapable, PredicateSourceCapable {
12
17
  readonly source: RelationalPlanNode;
13
18
  readonly predicate: ScalarPlanNode;
19
+ readonly selectivity?: number | undefined;
14
20
  readonly nodeType = PlanNodeType.Filter;
15
- constructor(scope: Scope, source: RelationalPlanNode, predicate: ScalarPlanNode, estimatedCostOverride?: number);
21
+ readonly isPredicateCapable: true;
22
+ readonly isPredicateSourceCapable: true;
23
+ constructor(scope: Scope, source: RelationalPlanNode, predicate: ScalarPlanNode, estimatedCostOverride?: number, selectivity?: number | undefined);
16
24
  getType(): RelationType;
17
25
  getAttributes(): readonly Attribute[];
18
26
  getChildren(): readonly [RelationalPlanNode, ScalarPlanNode];
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAkC,KAAK,kBAAkB,EAAmD,MAAM,gBAAgB,CAAC;AAC5O,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAMhG;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,QAAS,YAAW,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;aAK/F,MAAM,EAAE,kBAAkB;aAC1B,SAAS,EAAE,cAAc;IAL1C,SAAkB,QAAQ,uBAAuB;gBAGhD,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,cAAc,EACzC,qBAAqB,CAAC,EAAE,MAAM;IAM/B,OAAO,IAAI,YAAY;IAKvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAKrC,WAAW,IAAI,SAAS,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAI5D,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAOtC;IAED,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4G3E,QAAQ,IAAI,MAAM;IAIlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IA6BxD,YAAY,IAAI,cAAc,GAAG,IAAI;IAIrC,aAAa,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,GAAG,QAAQ;IAiB5D,aAAa,IAAI,SAAS,cAAc,EAAE;CAG1C"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAkC,KAAK,kBAAkB,EAAmD,MAAM,gBAAgB,CAAC;AAC5O,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAOhG;;;GAGG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,QAAS,YAAW,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;aAO/F,MAAM,EAAE,kBAAkB;aAC1B,SAAS,EAAE,cAAc;aAMzB,WAAW,CAAC,EAAE,MAAM;IAbrC,SAAkB,QAAQ,uBAAuB;IACjD,QAAQ,CAAC,kBAAkB,EAAG,IAAI,CAAU;IAC5C,QAAQ,CAAC,wBAAwB,EAAG,IAAI,CAAU;gBAGjD,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,cAAc,EACzC,qBAAqB,CAAC,EAAE,MAAM,EAKd,WAAW,CAAC,EAAE,MAAM,YAAA;IAcrC,OAAO,IAAI,YAAY;IAKvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAKrC,WAAW,IAAI,SAAS,CAAC,kBAAkB,EAAE,cAAc,CAAC;IAI5D,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CActC;IAED,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkI3E,QAAQ,IAAI,MAAM;IAIlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IA2CxD,YAAY,IAAI,cAAc,GAAG,IAAI;IAIrC,aAAa,CAAC,YAAY,EAAE,cAAc,GAAG,IAAI,GAAG,QAAQ;IAmB5D,aAAa,IAAI,SAAS,cAAc,EAAE;CAG1C"}
@@ -7,6 +7,12 @@ import { createTableInfoFromNode, extractConstraints } from '../analysis/constra
7
7
  import { normalizePredicate } from '../analysis/predicate-normalizer.js';
8
8
  import { addFd, addSingletonFd, closeConstantBindingsOverEcs, extractEqualityFds, mergeConstantBindings, mergeEquivClasses, predicateImpliesGuard, stripGuard } from '../util/fd-utils.js';
9
9
  import { deriveFilterAttributeDefaults } from '../analysis/update-lineage.js';
10
+ import { filterCost } from '../cost/index.js';
11
+ /**
12
+ * Last-resort selectivity used by {@link FilterNode.estimatedRows} when no
13
+ * stats-derived estimate has been stamped (see `rule-filter-selectivity`).
14
+ */
15
+ export const DEFAULT_FILTER_SELECTIVITY = 0.5;
10
16
  /**
11
17
  * Represents a filter operation (WHERE clause).
12
18
  * It takes an input relation and a predicate expression,
@@ -15,12 +21,29 @@ import { deriveFilterAttributeDefaults } from '../analysis/update-lineage.js';
15
21
  export class FilterNode extends PlanNode {
16
22
  source;
17
23
  predicate;
24
+ selectivity;
18
25
  nodeType = PlanNodeType.Filter;
19
- constructor(scope, source, predicate, estimatedCostOverride) {
20
- // Cost: cost of source + cost of evaluating predicate for each source row
21
- super(scope, estimatedCostOverride ?? (source.getTotalCost() + (source.estimatedRows ?? 1) * predicate.getTotalCost()));
26
+ isPredicateCapable = true;
27
+ isPredicateSourceCapable = true;
28
+ constructor(scope, source, predicate, estimatedCostOverride,
29
+ // Stats-derived selectivity in [0,1], stamped by `rule-filter-selectivity`
30
+ // during the Physical pass. Undefined until that rule runs (or when the
31
+ // source table can't be identified / the provider declines) — see
32
+ // `estimatedRows`, which falls back to DEFAULT_FILTER_SELECTIVITY.
33
+ selectivity) {
34
+ // Self-cost only: both children — source AND predicate (getChildren() is
35
+ // [source, predicate]) — flow in via getTotalCost(). Self is the per-row
36
+ // predicate-evaluation overhead; the predicate's own subtree cost is added
37
+ // once as a child, so it must NOT be folded here.
38
+ // NOTE: under self-cost-only the predicate's subtree cost is added once, not
39
+ // multiplied by row count (the pre-fix formula did rows * predicate.getTotalCost()).
40
+ // So an expensive predicate over a large input is now under-weighted; if predicate
41
+ // complexity ever needs to drive plan choice, fold a per-row predicate factor into
42
+ // filterCost() rather than re-summing the child here.
43
+ super(scope, estimatedCostOverride ?? filterCost(source.estimatedRows ?? 1));
22
44
  this.source = source;
23
45
  this.predicate = predicate;
46
+ this.selectivity = selectivity;
24
47
  }
25
48
  getType() {
26
49
  // Filter preserves the type of the source relation
@@ -37,24 +60,45 @@ export class FilterNode extends PlanNode {
37
60
  return [this.source];
38
61
  }
39
62
  get estimatedRows() {
40
- // This is a rough estimate. A more sophisticated planner would use selectivity estimates.
41
- // For now, assume a selectivity of 0.5 if source has rows, otherwise 0.
42
- // TODO: Use selectivity estimates
63
+ // Selectivity is stamped by `rule-filter-selectivity` (Physical pass), which
64
+ // consults the stats provider (histogram / 1-over-ndv / null-fraction, with a
65
+ // NaiveStatsProvider per-nodeType fallback).
66
+ // NOTE: DEFAULT_FILTER_SELECTIVITY (0.5) is the LAST-RESORT default, used only
67
+ // before that rule runs (e.g. Structural-pass cost comparisons) or when the
68
+ // source table can't be identified / the provider declines — it is NOT the
69
+ // real heuristic path, which lives in the stats provider.
43
70
  const sourceRows = this.source.estimatedRows;
44
71
  if (sourceRows === undefined)
45
72
  return undefined;
46
- return sourceRows > 0 ? Math.max(1, Math.floor(sourceRows * 0.5)) : 0;
73
+ const sel = this.selectivity ?? DEFAULT_FILTER_SELECTIVITY;
74
+ // selectivity 0 (provider says nothing matches) floors to 1, matching the
75
+ // empty-source path's min-1 convention — never negative / NaN.
76
+ return sourceRows > 0 ? Math.max(1, Math.floor(sourceRows * sel)) : 0;
47
77
  }
48
78
  computePhysical(childrenPhysical) {
49
79
  const sourcePhysical = childrenPhysical[0];
50
80
  const srcRows = sourcePhysical?.estimatedRows;
51
81
  const est = this.estimatedRows;
52
- let rows = (typeof srcRows === 'number' && typeof est === 'number')
53
- ? Math.min(srcRows, est)
54
- : (srcRows ?? est);
82
+ // Apply the stamped selectivity to the PHYSICAL source cardinality. The
83
+ // logical `estimatedRows` getter multiplies `this.source.estimatedRows`, but a
84
+ // physical access-node source (IndexScan/IndexSeek) exposes no logical row
85
+ // count, so the getter yields undefined and the selectivity stamped by
86
+ // `rule-filter-selectivity` would be lost after the Retrieve→access-node
87
+ // conversion. computePhysical holds the real physical source cardinality, so
88
+ // apply selectivity here when stamped (matching the getter's min-1 / 0-empty
89
+ // floor); fall back to the logical estimate (min against source) when unstamped.
90
+ let rows;
91
+ if (typeof srcRows === 'number' && this.selectivity !== undefined) {
92
+ rows = srcRows > 0 ? Math.max(1, Math.floor(srcRows * this.selectivity)) : 0;
93
+ }
94
+ else if (typeof srcRows === 'number' && typeof est === 'number') {
95
+ rows = Math.min(srcRows, est);
96
+ }
97
+ else {
98
+ rows = srcRows ?? est;
99
+ }
55
100
  const sourceAttrs = this.source.getAttributes();
56
- const attrIdToIndex = new Map();
57
- sourceAttrs.forEach((a, i) => attrIdToIndex.set(a.id, i));
101
+ const attrIdToIndex = this.source.getAttributeIndex();
58
102
  const { fds: predFds, equivPairs, constantBindings: predBindings } = extractEqualityFds(this.predicate, attrIdToIndex);
59
103
  // Merge ECs and bindings up front so guard activation can consult the
60
104
  // post-predicate view of equivalence classes and constant bindings.
@@ -102,6 +146,16 @@ export class FilterNode extends PlanNode {
102
146
  // Attempt logical covered-key detection: if equality conjuncts cover a
103
147
  // unique key on the source table, the Filter emits at-most-one row. Encode
104
148
  // that as the singleton FD `∅ → all_cols`.
149
+ // NOTE: this re-runs on every re-mint even when `this.predicate` is the
150
+ // same object (the common `withChildren` source-only-remint case). A
151
+ // predicate-keyed cache was considered (ticket 3-planner-plan-time-mechanical)
152
+ // but `tableInfo.relationKey` embeds the source's per-instance node id, so it
153
+ // never agrees across two distinct source instances — and the covered-key
154
+ // result also depends on `tableInfo.fds`/`equivClasses`, which are
155
+ // physical-strategy-dependent and not cheaply hashable, so a signature broad
156
+ // enough to be sound would need to fingerprint those too. If this shows up
157
+ // hot in profiling, revisit with a cache keyed on `this.predicate` (WeakMap)
158
+ // plus a signature over `tableInfo.uniqueKeys`/`fds`/`equivClasses`.
105
159
  const tableInfo = createTableInfoFromNode(this.source);
106
160
  if (tableInfo.uniqueKeys && tableInfo.uniqueKeys.length > 0) {
107
161
  const result = extractConstraints(this.predicate, [tableInfo]);
@@ -152,12 +206,23 @@ export class FilterNode extends PlanNode {
152
206
  if (!isScalarNode(newPredicate)) {
153
207
  quereusError('FilterNode: second child must be a ScalarPlanNode', StatusCode.INTERNAL);
154
208
  }
155
- // Return same instance if nothing changed
209
+ // Return same instance if nothing changed (this fast-path also preserves
210
+ // `selectivity` for free — the common source-and-predicate-unchanged case).
156
211
  if (newSource === this.source && newPredicate === this.predicate) {
157
212
  return this;
158
213
  }
214
+ // The stamped selectivity is predicate-specific: carry it through ONLY when
215
+ // the predicate is unchanged; drop it (undefined → recompute default until
216
+ // re-stamped) when the predicate changes.
217
+ // NOTE (tripwire): a carried selectivity was computed against THIS source's
218
+ // table. If a later pass ever re-sources a stamped Filter (same predicate,
219
+ // different source), the carried estimate goes slightly stale. In practice the
220
+ // Physical pass is the last rule-bearing pass over Filters, so nothing
221
+ // re-sources a stamped one. If that ever changes, also drop selectivity when
222
+ // `newSource !== this.source`.
223
+ const preservedSelectivity = newPredicate === this.predicate ? this.selectivity : undefined;
159
224
  // Create new instance preserving attributes (filter preserves source attributes)
160
- return new FilterNode(this.scope, newSource, newPredicate);
225
+ return new FilterNode(this.scope, newSource, newPredicate, undefined, preservedSelectivity);
161
226
  }
162
227
  // PredicateCapable interface implementation
163
228
  getPredicate() {
@@ -171,6 +236,8 @@ export class FilterNode extends PlanNode {
171
236
  if (newPredicate === this.predicate) {
172
237
  return this;
173
238
  }
239
+ // Predicate changed → do NOT carry `selectivity` (it was predicate-specific);
240
+ // leave it undefined so rule-filter-selectivity re-derives against the new one.
174
241
  return new FilterNode(this.scope, this.source, newPredicate);
175
242
  }
176
243
  // PredicateSourceCapable interface implementation:
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/planner/nodes/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../src/planner/nodes/filter.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,14 @@ import { PlanNodeType } from './plan-node-type.js';
2
2
  import { PlanNode, type RelationalPlanNode, type UnaryRelationalNode, type ScalarPlanNode, type PhysicalProperties, type Attribute } from './plan-node.js';
3
3
  import type { RelationType } from '../../common/datatype.js';
4
4
  import type { Scope } from '../scopes/scope.js';
5
+ import type { AggregationCapable } from '../framework/characteristics.js';
5
6
  /**
6
7
  * Physical node representing a hash-based aggregate operation.
7
8
  * Does NOT require input to be ordered by grouping columns.
8
9
  * Builds a hash map keyed by GROUP BY columns, accumulates aggregate state per group,
9
10
  * and emits all groups at the end.
10
11
  */
11
- export declare class HashAggregateNode extends PlanNode implements UnaryRelationalNode {
12
+ export declare class HashAggregateNode extends PlanNode implements UnaryRelationalNode, AggregationCapable {
12
13
  readonly source: RelationalPlanNode;
13
14
  readonly groupBy: readonly ScalarPlanNode[];
14
15
  readonly aggregates: readonly {
@@ -17,6 +18,7 @@ export declare class HashAggregateNode extends PlanNode implements UnaryRelation
17
18
  }[];
18
19
  readonly preserveAttributeIds?: readonly Attribute[] | undefined;
19
20
  readonly nodeType = PlanNodeType.HashAggregate;
21
+ readonly isAggregationCapable: true;
20
22
  private attributesCache;
21
23
  constructor(scope: Scope, source: RelationalPlanNode, groupBy: readonly ScalarPlanNode[], aggregates: readonly {
22
24
  expression: ScalarPlanNode;
@@ -34,5 +36,14 @@ export declare class HashAggregateNode extends PlanNode implements UnaryRelation
34
36
  toString(): string;
35
37
  getLogicalAttributes(): Record<string, unknown>;
36
38
  withChildren(newChildren: readonly PlanNode[]): PlanNode;
39
+ getGroupingKeys(): readonly ScalarPlanNode[];
40
+ getAggregateExpressions(): readonly {
41
+ expr: ScalarPlanNode;
42
+ alias: string;
43
+ attributeId: number;
44
+ }[];
45
+ requiresOrdering(): boolean;
46
+ canStreamAggregate(): boolean;
47
+ getSource(): RelationalPlanNode;
37
48
  }
38
49
  //# sourceMappingURL=hash-aggregate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/hash-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7K,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAShD;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,mBAAmB;aAO5D,MAAM,EAAE,kBAAkB;aAC1B,OAAO,EAAE,SAAS,cAAc,EAAE;aAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;aAEpE,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;IAV5D,SAAkB,QAAQ,8BAA8B;IAExD,OAAO,CAAC,eAAe,CAAsB;gBAG5C,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,EACpF,qBAAqB,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE,YAAA;IAY5D,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,IAAI,YAAY;IAqCvB,aAAa,IAAI,SAAS,EAAE;IAI5B,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAuBhD,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAStC;IAED,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsB3E,QAAQ,IAAI,MAAM;IAiBlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoBxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;CAoCxD"}
1
+ {"version":3,"file":"hash-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/hash-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAC7K,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAQhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,mBAAmB,EAAE,kBAAkB;aAQhF,MAAM,EAAE,kBAAkB;aAC1B,OAAO,EAAE,SAAS,cAAc,EAAE;aAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;aAEpE,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE;IAX5D,SAAkB,QAAQ,8BAA8B;IACxD,QAAQ,CAAC,oBAAoB,EAAG,IAAI,CAAU;IAE9C,OAAO,CAAC,eAAe,CAAsB;gBAG5C,KAAK,EAAE,KAAK,EACI,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,UAAU,EAAE,SAAS;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,EACpF,qBAAqB,CAAC,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,SAAS,SAAS,EAAE,YAAA;IAc5D,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,IAAI,YAAY;IAqCvB,aAAa,IAAI,SAAS,EAAE;IAI5B,iBAAiB,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAuBhD,WAAW,IAAI,SAAS,QAAQ,EAAE;IAIlC,YAAY,IAAI,SAAS,CAAC,kBAAkB,CAAC;IAI7C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAStC;IAED,eAAe,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsB3E,QAAQ,IAAI,MAAM;IAiBlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoBxD,YAAY,CAAC,WAAW,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ;IAwCxD,eAAe,IAAI,SAAS,cAAc,EAAE;IAI5C,uBAAuB,IAAI,SAAS;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE;IAUlG,gBAAgB,IAAI,OAAO;IAI3B,kBAAkB,IAAI,OAAO;IAI7B,SAAS,IAAI,kBAAkB;CAG/B"}
@@ -18,13 +18,16 @@ export class HashAggregateNode extends PlanNode {
18
18
  aggregates;
19
19
  preserveAttributeIds;
20
20
  nodeType = PlanNodeType.HashAggregate;
21
+ isAggregationCapable = true;
21
22
  attributesCache;
22
23
  constructor(scope, source, groupBy, aggregates, estimatedCostOverride, preserveAttributeIds) {
23
24
  const sourceRows = source.estimatedRows ?? 1000;
24
25
  const estimatedGroups = Math.max(1, Math.floor(sourceRows / 10));
25
26
  const hashCost = sourceRows * COST_CONSTANTS.HASH_AGG_BUILD_PER_ROW
26
27
  + estimatedGroups * COST_CONSTANTS.HASH_AGG_PER_GROUP;
27
- super(scope, estimatedCostOverride ?? (source.getTotalCost() + hashCost));
28
+ // Self-cost only: the source (and group-by/aggregate exprs) flow in via
29
+ // getChildren(). Self is the hash build + per-group finalization cost.
30
+ super(scope, estimatedCostOverride ?? hashCost);
28
31
  this.source = source;
29
32
  this.groupBy = groupBy;
30
33
  this.aggregates = aggregates;
@@ -203,5 +206,29 @@ export class HashAggregateNode extends PlanNode {
203
206
  }));
204
207
  return new HashAggregateNode(this.scope, newSource, newGroupBy, newAggregates, undefined, this.preserveAttributeIds);
205
208
  }
209
+ // AggregationCapable interface. See StreamAggregateNode for why the physical
210
+ // aggregate carries these (brand contract + defensive fanout descent); the
211
+ // physical-selection rule never re-runs on this node.
212
+ getGroupingKeys() {
213
+ return this.groupBy;
214
+ }
215
+ getAggregateExpressions() {
216
+ const attributes = this.getAttributes();
217
+ const groupByCount = this.groupBy.length;
218
+ return this.aggregates.map((agg, index) => ({
219
+ expr: agg.expression,
220
+ alias: agg.alias,
221
+ attributeId: attributes[groupByCount + index].id
222
+ }));
223
+ }
224
+ requiresOrdering() {
225
+ return false; // hash aggregation does not require ordered input
226
+ }
227
+ canStreamAggregate() {
228
+ return false; // this IS the hash strategy — not a streaming aggregate
229
+ }
230
+ getSource() {
231
+ return this.source;
232
+ }
206
233
  }
207
234
  //# sourceMappingURL=hash-aggregate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash-aggregate.js","sourceRoot":"","sources":["../../../../src/planner/nodes/hash-aggregate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hash-aggregate.js","sourceRoot":"","sources":["../../../../src/planner/nodes/hash-aggregate.ts"],"names":[],"mappings":"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"}
@@ -3,19 +3,21 @@ import type { RelationType } from '../../common/datatype.js';
3
3
  import { PlanNodeType } from './plan-node-type.js';
4
4
  import type { Scope } from '../scopes/scope.js';
5
5
  import type { CTEScopeNode } from './cte-node.js';
6
+ import type { RecursiveCTERefCapable } from '../framework/characteristics.js';
6
7
  /**
7
8
  * Plan node for internal recursive CTE references.
8
9
  * This represents a reference to the working table within a recursive CTE's recursive case.
9
10
  * Unlike CTEReferenceNode, this doesn't materialize the CTE but looks up the working table
10
11
  * from the runtime table context.
11
12
  */
12
- export declare class InternalRecursiveCTERefNode extends ZeroAryRelationalBase implements CTEScopeNode {
13
+ export declare class InternalRecursiveCTERefNode extends ZeroAryRelationalBase implements CTEScopeNode, RecursiveCTERefCapable {
13
14
  readonly cteName: string;
14
15
  readonly attributes: Attribute[];
15
16
  readonly relationType: RelationType;
16
17
  readonly workingTableDescriptor: TableDescriptor;
17
18
  readonly alias?: string | undefined;
18
19
  readonly nodeType = PlanNodeType.InternalRecursiveCTERef;
20
+ readonly isRecursiveCTERefCapable: true;
19
21
  private attributesCache;
20
22
  constructor(scope: Scope, cteName: string, attributes: Attribute[], relationType: RelationType, workingTableDescriptor: TableDescriptor, alias?: string | undefined);
21
23
  private buildAttributes;
@@ -1 +1 @@
1
- {"version":3,"file":"internal-recursive-cte-ref-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/internal-recursive-cte-ref-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,qBAAsB,YAAW,YAAY;aAO5E,OAAO,EAAE,MAAM;aACf,UAAU,EAAE,SAAS,EAAE;aACvB,YAAY,EAAE,YAAY;aAC1B,sBAAsB,EAAE,eAAe;aACvC,KAAK,CAAC,EAAE,MAAM;IAV/B,QAAQ,CAAC,QAAQ,wCAAwC;IAEzD,OAAO,CAAC,eAAe,CAAsB;gBAG5C,KAAK,EAAE,KAAK,EACI,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,EAAE,EACvB,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,eAAe,EACvC,KAAK,CAAC,EAAE,MAAM,YAAA;IAM/B,OAAO,CAAC,eAAe;IAUvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,OAAO,IAAI,YAAY;IAIvB,QAAQ,IAAI,MAAM;IAKlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAO/C"}
1
+ {"version":3,"file":"internal-recursive-cte-ref-node.d.ts","sourceRoot":"","sources":["../../../../src/planner/nodes/internal-recursive-cte-ref-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,qBAAsB,YAAW,YAAY,EAAE,sBAAsB;aAQpG,OAAO,EAAE,MAAM;aACf,UAAU,EAAE,SAAS,EAAE;aACvB,YAAY,EAAE,YAAY;aAC1B,sBAAsB,EAAE,eAAe;aACvC,KAAK,CAAC,EAAE,MAAM;IAX/B,QAAQ,CAAC,QAAQ,wCAAwC;IACzD,QAAQ,CAAC,wBAAwB,EAAG,IAAI,CAAU;IAElD,OAAO,CAAC,eAAe,CAAsB;gBAG5C,KAAK,EAAE,KAAK,EACI,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,EAAE,EACvB,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,eAAe,EACvC,KAAK,CAAC,EAAE,MAAM,YAAA;IAM/B,OAAO,CAAC,eAAe;IAUvB,aAAa,IAAI,SAAS,SAAS,EAAE;IAIrC,OAAO,IAAI,YAAY;IAIvB,QAAQ,IAAI,MAAM;IAKlB,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAO/C"}
@@ -14,6 +14,7 @@ export class InternalRecursiveCTERefNode extends ZeroAryRelationalBase {
14
14
  workingTableDescriptor;
15
15
  alias;
16
16
  nodeType = PlanNodeType.InternalRecursiveCTERef;
17
+ isRecursiveCTERefCapable = true;
17
18
  attributesCache;
18
19
  constructor(scope, cteName, attributes, relationType, workingTableDescriptor, alias) {
19
20
  super(scope, 0.01); // Very low cost since we're just reading from working table
@@ -1 +1 @@
1
- {"version":3,"file":"internal-recursive-cte-ref-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/internal-recursive-cte-ref-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAwC,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,qBAAqB;IAOpD;IACA;IACA;IACA;IACA;IAVR,QAAQ,GAAG,YAAY,CAAC,uBAAuB,CAAC;IAEjD,eAAe,CAAsB;IAE7C,YACC,KAAY,EACI,OAAe,EACf,UAAuB,EACvB,YAA0B,EAC1B,sBAAuC,EACvC,KAAc;QAE9B,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,4DAA4D;QANhE,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAa;QACvB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,2BAAsB,GAAtB,sBAAsB,CAAiB;QACvC,UAAK,GAAL,KAAK,CAAS;QAG9B,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAEO,eAAe;QACtB,iEAAiE;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,iBAAiB,IAAI,CAAC,OAAO,EAAE;SAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,QAAQ;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,0BAA0B,IAAI,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED,oBAAoB;QACnB,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACnD,CAAC;IACH,CAAC;CACD"}
1
+ {"version":3,"file":"internal-recursive-cte-ref-node.js","sourceRoot":"","sources":["../../../../src/planner/nodes/internal-recursive-cte-ref-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAwC,MAAM,gBAAgB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,qBAAqB;IAQpD;IACA;IACA;IACA;IACA;IAXR,QAAQ,GAAG,YAAY,CAAC,uBAAuB,CAAC;IAChD,wBAAwB,GAAG,IAAa,CAAC;IAE1C,eAAe,CAAsB;IAE7C,YACC,KAAY,EACI,OAAe,EACf,UAAuB,EACvB,YAA0B,EAC1B,sBAAuC,EACvC,KAAc;QAE9B,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,4DAA4D;QANhE,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAa;QACvB,iBAAY,GAAZ,YAAY,CAAc;QAC1B,2BAAsB,GAAtB,sBAAsB,CAAiB;QACvC,UAAK,GAAL,KAAK,CAAS;QAG9B,IAAI,CAAC,eAAe,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAEO,eAAe;QACtB,iEAAiE;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,cAAc,EAAE,iBAAiB,IAAI,CAAC,OAAO,EAAE;SAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,QAAQ;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,0BAA0B,IAAI,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;IAC7D,CAAC;IAED,oBAAoB;QACnB,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;SACnD,CAAC;IACH,CAAC;CACD"}
@@ -4,7 +4,7 @@ import type { RelationType } from '../../common/datatype.js';
4
4
  import type { PhysicalProperties } from './plan-node.js';
5
5
  import { PlanNodeType } from './plan-node-type.js';
6
6
  import type { Scope } from '../scopes/scope.js';
7
- import { JoinCapable, type PredicateSourceCapable } from '../framework/characteristics.js';
7
+ import type { JoinCapable, PredicateSourceCapable } from '../framework/characteristics.js';
8
8
  export type JoinType = 'inner' | 'left' | 'right' | 'full' | 'cross' | 'semi' | 'anti';
9
9
  /**
10
10
  * One `exists [<side>] as <name>` existence match-flag column the JoinNode
@@ -57,6 +57,8 @@ export declare class JoinNode extends PlanNode implements BinaryRelationalNode,
57
57
  readonly usingColumns?: readonly string[] | undefined;
58
58
  readonly existence?: readonly ExistenceColumnSpec[] | undefined;
59
59
  readonly nodeType = PlanNodeType.Join;
60
+ readonly isJoinCapable: true;
61
+ readonly isPredicateSourceCapable: true;
60
62
  private attributesCache;
61
63
  constructor(scope: Scope, left: RelationalPlanNode, right: RelationalPlanNode, joinType: JoinType, condition?: ScalarPlanNode | undefined, usingColumns?: readonly string[] | undefined, existence?: readonly ExistenceColumnSpec[] | undefined);
62
64
  computePhysical(childrenPhysical: PhysicalProperties[]): Partial<PhysicalProperties>;