@quereus/quereus 4.5.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/README.md +4 -3
  2. package/dist/src/core/database-events.d.ts +99 -1
  3. package/dist/src/core/database-events.d.ts.map +1 -1
  4. package/dist/src/core/database-events.js +219 -3
  5. package/dist/src/core/database-events.js.map +1 -1
  6. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  7. package/dist/src/core/database-materialized-views-plan-builders.js +29 -2
  8. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  9. package/dist/src/core/database-transaction.d.ts +9 -0
  10. package/dist/src/core/database-transaction.d.ts.map +1 -1
  11. package/dist/src/core/database-transaction.js +9 -0
  12. package/dist/src/core/database-transaction.js.map +1 -1
  13. package/dist/src/core/database.d.ts +7 -1
  14. package/dist/src/core/database.d.ts.map +1 -1
  15. package/dist/src/core/database.js +20 -5
  16. package/dist/src/core/database.js.map +1 -1
  17. package/dist/src/func/builtins/aggregate.js +11 -11
  18. package/dist/src/func/builtins/aggregate.js.map +1 -1
  19. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  20. package/dist/src/func/builtins/builtin-window-functions.js +15 -85
  21. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  22. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  23. package/dist/src/func/builtins/conversion.js +10 -9
  24. package/dist/src/func/builtins/conversion.js.map +1 -1
  25. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  26. package/dist/src/func/builtins/datetime.js +28 -10
  27. package/dist/src/func/builtins/datetime.js.map +1 -1
  28. package/dist/src/func/builtins/json.d.ts.map +1 -1
  29. package/dist/src/func/builtins/json.js +23 -17
  30. package/dist/src/func/builtins/json.js.map +1 -1
  31. package/dist/src/func/builtins/mutation.js +2 -2
  32. package/dist/src/func/builtins/mutation.js.map +1 -1
  33. package/dist/src/func/builtins/return-types.d.ts +327 -0
  34. package/dist/src/func/builtins/return-types.d.ts.map +1 -0
  35. package/dist/src/func/builtins/return-types.js +43 -0
  36. package/dist/src/func/builtins/return-types.js.map +1 -0
  37. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  38. package/dist/src/func/builtins/scalar.js +138 -71
  39. package/dist/src/func/builtins/scalar.js.map +1 -1
  40. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  41. package/dist/src/func/builtins/schema.js +11 -3
  42. package/dist/src/func/builtins/schema.js.map +1 -1
  43. package/dist/src/func/builtins/string.d.ts.map +1 -1
  44. package/dist/src/func/builtins/string.js +4 -2
  45. package/dist/src/func/builtins/string.js.map +1 -1
  46. package/dist/src/func/builtins/timespan.d.ts +3 -0
  47. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  48. package/dist/src/func/builtins/timespan.js +15 -11
  49. package/dist/src/func/builtins/timespan.js.map +1 -1
  50. package/dist/src/func/registration.d.ts +35 -1
  51. package/dist/src/func/registration.d.ts.map +1 -1
  52. package/dist/src/func/registration.js +235 -41
  53. package/dist/src/func/registration.js.map +1 -1
  54. package/dist/src/index.d.ts +11 -4
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +12 -3
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/parser/parser.d.ts +46 -0
  59. package/dist/src/parser/parser.d.ts.map +1 -1
  60. package/dist/src/parser/parser.js +160 -44
  61. package/dist/src/parser/parser.js.map +1 -1
  62. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  63. package/dist/src/planner/analysis/check-extraction.js +37 -4
  64. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  65. package/dist/src/planner/analysis/comparison-collation.d.ts +20 -22
  66. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  67. package/dist/src/planner/analysis/comparison-collation.js +29 -26
  68. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  69. package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
  70. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  71. package/dist/src/planner/analysis/constraint-extractor.js +59 -59
  72. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  73. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  74. package/dist/src/planner/building/alter-table.js +65 -27
  75. package/dist/src/planner/building/alter-table.js.map +1 -1
  76. package/dist/src/planner/building/coercion.d.ts +21 -45
  77. package/dist/src/planner/building/coercion.d.ts.map +1 -1
  78. package/dist/src/planner/building/coercion.js +42 -91
  79. package/dist/src/planner/building/coercion.js.map +1 -1
  80. package/dist/src/planner/building/expression.d.ts +17 -0
  81. package/dist/src/planner/building/expression.d.ts.map +1 -1
  82. package/dist/src/planner/building/expression.js +28 -17
  83. package/dist/src/planner/building/expression.js.map +1 -1
  84. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  85. package/dist/src/planner/building/function-call.js +7 -2
  86. package/dist/src/planner/building/function-call.js.map +1 -1
  87. package/dist/src/planner/building/select-aggregates.d.ts +1 -1
  88. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  89. package/dist/src/planner/building/select-aggregates.js +53 -2
  90. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  91. package/dist/src/planner/building/select-context.d.ts +7 -0
  92. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  93. package/dist/src/planner/building/select-context.js +10 -40
  94. package/dist/src/planner/building/select-context.js.map +1 -1
  95. package/dist/src/planner/building/select.d.ts +37 -1
  96. package/dist/src/planner/building/select.d.ts.map +1 -1
  97. package/dist/src/planner/building/select.js +112 -51
  98. package/dist/src/planner/building/select.js.map +1 -1
  99. package/dist/src/planner/cost/conjunct-cost.d.ts +40 -0
  100. package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -1
  101. package/dist/src/planner/cost/conjunct-cost.js +45 -0
  102. package/dist/src/planner/cost/conjunct-cost.js.map +1 -1
  103. package/dist/src/planner/cost/index.d.ts +10 -0
  104. package/dist/src/planner/cost/index.d.ts.map +1 -1
  105. package/dist/src/planner/cost/index.js +15 -0
  106. package/dist/src/planner/cost/index.js.map +1 -1
  107. package/dist/src/planner/nodes/aggregate-node.d.ts +6 -0
  108. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  109. package/dist/src/planner/nodes/aggregate-node.js +10 -2
  110. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  111. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  112. package/dist/src/planner/nodes/alias-node.js +2 -1
  113. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  114. package/dist/src/planner/nodes/alter-table-node.d.ts +24 -8
  115. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  116. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  117. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  118. package/dist/src/planner/nodes/asof-scan-node.js +4 -1
  119. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  120. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  121. package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
  122. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  123. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  124. package/dist/src/planner/nodes/bloom-join-node.js +8 -3
  125. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  126. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  127. package/dist/src/planner/nodes/cache-node.js +2 -1
  128. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  129. package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
  130. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  131. package/dist/src/planner/nodes/distinct-node.js +10 -2
  132. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  133. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  134. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
  135. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  136. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
  137. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  138. package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
  139. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  140. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  141. package/dist/src/planner/nodes/filter.js +12 -5
  142. package/dist/src/planner/nodes/filter.js.map +1 -1
  143. package/dist/src/planner/nodes/hash-aggregate.d.ts +6 -0
  144. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  145. package/dist/src/planner/nodes/hash-aggregate.js +10 -2
  146. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  147. package/dist/src/planner/nodes/join-node.d.ts +20 -1
  148. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  149. package/dist/src/planner/nodes/join-node.js +30 -9
  150. package/dist/src/planner/nodes/join-node.js.map +1 -1
  151. package/dist/src/planner/nodes/join-utils.d.ts +21 -0
  152. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  153. package/dist/src/planner/nodes/join-utils.js +26 -0
  154. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  155. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -1
  156. package/dist/src/planner/nodes/key-set-semi-join-node.js +5 -1
  157. package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -1
  158. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  159. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
  160. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  161. package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
  162. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  163. package/dist/src/planner/nodes/limit-offset.js +10 -2
  164. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  165. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  166. package/dist/src/planner/nodes/merge-join-node.js +8 -3
  167. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  168. package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
  169. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  170. package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
  171. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  172. package/dist/src/planner/nodes/plan-node.d.ts +24 -0
  173. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  174. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  175. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  176. package/dist/src/planner/nodes/project-node.js +2 -1
  177. package/dist/src/planner/nodes/project-node.js.map +1 -1
  178. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  179. package/dist/src/planner/nodes/reference.js +3 -2
  180. package/dist/src/planner/nodes/reference.js.map +1 -1
  181. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  182. package/dist/src/planner/nodes/retrieve-node.js +2 -1
  183. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  184. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  185. package/dist/src/planner/nodes/scalar.js +5 -18
  186. package/dist/src/planner/nodes/scalar.js.map +1 -1
  187. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  188. package/dist/src/planner/nodes/sort.js +3 -1
  189. package/dist/src/planner/nodes/sort.js.map +1 -1
  190. package/dist/src/planner/nodes/stream-aggregate.d.ts +6 -0
  191. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/stream-aggregate.js +10 -2
  193. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  194. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  195. package/dist/src/planner/nodes/table-access-nodes.js +5 -0
  196. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  197. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  198. package/dist/src/planner/nodes/window-function.js +8 -0
  199. package/dist/src/planner/nodes/window-function.js.map +1 -1
  200. package/dist/src/planner/nodes/window-node.d.ts +1 -1
  201. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/window-node.js +3 -1
  203. package/dist/src/planner/nodes/window-node.js.map +1 -1
  204. package/dist/src/planner/optimizer.d.ts +9 -1
  205. package/dist/src/planner/optimizer.d.ts.map +1 -1
  206. package/dist/src/planner/optimizer.js +77 -6
  207. package/dist/src/planner/optimizer.js.map +1 -1
  208. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  209. package/dist/src/planner/rules/access/rule-key-set-seek.js +3 -68
  210. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  211. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +19 -0
  212. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  213. package/dist/src/planner/rules/access/rule-select-access-path.js +24 -3
  214. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  215. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  216. package/dist/src/planner/rules/cache/rule-cte-optimization.js +9 -0
  217. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  218. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  219. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  220. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  221. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +5 -31
  222. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  223. package/dist/src/planner/rules/join/equi-pair-extractor.js +4 -44
  224. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  225. package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
  226. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
  227. package/dist/src/planner/rules/join/index-nested-loop.js +285 -0
  228. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
  229. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
  230. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
  231. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  232. package/dist/src/planner/rules/join/rule-join-physical-selection.js +83 -27
  233. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  234. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +4 -4
  235. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  236. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +21 -8
  237. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -1
  238. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +70 -14
  239. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -1
  240. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +42 -17
  241. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
  242. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +84 -154
  243. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  244. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +73 -0
  245. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
  246. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +205 -0
  247. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
  248. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
  249. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  250. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
  251. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  252. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +7 -1
  253. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
  254. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +7 -1
  255. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  256. package/dist/src/planner/rules/shared/access-leaf.d.ts +39 -0
  257. package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
  258. package/dist/src/planner/rules/shared/access-leaf.js +79 -0
  259. package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
  260. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  261. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +18 -8
  262. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  263. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +3 -1
  264. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  265. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +27 -10
  266. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  267. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  268. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +69 -11
  269. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  270. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
  271. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  272. package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
  273. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  274. package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
  275. package/dist/src/planner/scopes/aliased.js +6 -0
  276. package/dist/src/planner/scopes/aliased.js.map +1 -1
  277. package/dist/src/planner/stats/catalog-stats.d.ts +44 -13
  278. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
  279. package/dist/src/planner/stats/catalog-stats.js +137 -61
  280. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  281. package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
  282. package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
  283. package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
  284. package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
  285. package/dist/src/planner/stats/index.d.ts +22 -3
  286. package/dist/src/planner/stats/index.d.ts.map +1 -1
  287. package/dist/src/planner/stats/index.js.map +1 -1
  288. package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
  289. package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
  290. package/dist/src/planner/stats/table-cardinality.js +29 -0
  291. package/dist/src/planner/stats/table-cardinality.js.map +1 -0
  292. package/dist/src/planner/util/column-origins.d.ts +29 -8
  293. package/dist/src/planner/util/column-origins.d.ts.map +1 -1
  294. package/dist/src/planner/util/column-origins.js +74 -14
  295. package/dist/src/planner/util/column-origins.js.map +1 -1
  296. package/dist/src/planner/util/fd-utils.d.ts +32 -8
  297. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  298. package/dist/src/planner/util/fd-utils.js +46 -9
  299. package/dist/src/planner/util/fd-utils.js.map +1 -1
  300. package/dist/src/planner/util/ind-utils.d.ts +56 -17
  301. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  302. package/dist/src/planner/util/ind-utils.js +82 -21
  303. package/dist/src/planner/util/ind-utils.js.map +1 -1
  304. package/dist/src/planner/util/key-utils.d.ts +20 -2
  305. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  306. package/dist/src/planner/util/key-utils.js +37 -3
  307. package/dist/src/planner/util/key-utils.js.map +1 -1
  308. package/dist/src/planner/util/row-estimates.d.ts +28 -0
  309. package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
  310. package/dist/src/planner/util/row-estimates.js +40 -0
  311. package/dist/src/planner/util/row-estimates.js.map +1 -0
  312. package/dist/src/planner/util/row-population.d.ts +42 -0
  313. package/dist/src/planner/util/row-population.d.ts.map +1 -0
  314. package/dist/src/planner/util/row-population.js +71 -0
  315. package/dist/src/planner/util/row-population.js.map +1 -0
  316. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  317. package/dist/src/runtime/emit/add-constraint.js +39 -1
  318. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  319. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  320. package/dist/src/runtime/emit/aggregate.js +4 -4
  321. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  322. package/dist/src/runtime/emit/alter-schema-event.d.ts +42 -0
  323. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
  324. package/dist/src/runtime/emit/alter-schema-event.js +28 -0
  325. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
  326. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  327. package/dist/src/runtime/emit/alter-table.js +380 -154
  328. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  329. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  330. package/dist/src/runtime/emit/analyze.js +35 -3
  331. package/dist/src/runtime/emit/analyze.js.map +1 -1
  332. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  333. package/dist/src/runtime/emit/cast.js +4 -19
  334. package/dist/src/runtime/emit/cast.js.map +1 -1
  335. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  336. package/dist/src/runtime/emit/dml-executor.js +64 -27
  337. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  338. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  339. package/dist/src/runtime/emit/drop-index.js +4 -3
  340. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  341. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  342. package/dist/src/runtime/emit/hash-aggregate.js +2 -2
  343. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  344. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  345. package/dist/src/runtime/emit/join.js +8 -67
  346. package/dist/src/runtime/emit/join.js.map +1 -1
  347. package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -1
  348. package/dist/src/runtime/emit/key-set-semi-join.js +6 -0
  349. package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -1
  350. package/dist/src/runtime/emit/operand-comparator.d.ts +30 -0
  351. package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -1
  352. package/dist/src/runtime/emit/operand-comparator.js +34 -0
  353. package/dist/src/runtime/emit/operand-comparator.js.map +1 -1
  354. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  355. package/dist/src/runtime/emit/schema-declarative.js +30 -0
  356. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  357. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  358. package/dist/src/runtime/emit/subquery.js +153 -52
  359. package/dist/src/runtime/emit/subquery.js.map +1 -1
  360. package/dist/src/runtime/emit/window.js +36 -23
  361. package/dist/src/runtime/emit/window.js.map +1 -1
  362. package/dist/src/schema/catalog-persistability.d.ts +19 -16
  363. package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
  364. package/dist/src/schema/catalog-persistability.js +76 -20
  365. package/dist/src/schema/catalog-persistability.js.map +1 -1
  366. package/dist/src/schema/catalog.d.ts +67 -2
  367. package/dist/src/schema/catalog.d.ts.map +1 -1
  368. package/dist/src/schema/catalog.js +194 -3
  369. package/dist/src/schema/catalog.js.map +1 -1
  370. package/dist/src/schema/column.d.ts +26 -3
  371. package/dist/src/schema/column.d.ts.map +1 -1
  372. package/dist/src/schema/column.js.map +1 -1
  373. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  374. package/dist/src/schema/ddl-generator.js +19 -6
  375. package/dist/src/schema/ddl-generator.js.map +1 -1
  376. package/dist/src/schema/function.d.ts +32 -1
  377. package/dist/src/schema/function.d.ts.map +1 -1
  378. package/dist/src/schema/function.js +10 -2
  379. package/dist/src/schema/function.js.map +1 -1
  380. package/dist/src/schema/manager.d.ts +84 -7
  381. package/dist/src/schema/manager.d.ts.map +1 -1
  382. package/dist/src/schema/manager.js +153 -53
  383. package/dist/src/schema/manager.js.map +1 -1
  384. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  385. package/dist/src/schema/schema-differ.js +104 -28
  386. package/dist/src/schema/schema-differ.js.map +1 -1
  387. package/dist/src/schema/table.d.ts +149 -1
  388. package/dist/src/schema/table.d.ts.map +1 -1
  389. package/dist/src/schema/table.js +248 -1
  390. package/dist/src/schema/table.js.map +1 -1
  391. package/dist/src/schema/unique-enforcement.d.ts +5 -3
  392. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  393. package/dist/src/schema/unique-enforcement.js +5 -3
  394. package/dist/src/schema/unique-enforcement.js.map +1 -1
  395. package/dist/src/types/builtin-types.d.ts +16 -0
  396. package/dist/src/types/builtin-types.d.ts.map +1 -1
  397. package/dist/src/types/builtin-types.js +46 -8
  398. package/dist/src/types/builtin-types.js.map +1 -1
  399. package/dist/src/types/cast-semantics.d.ts +42 -0
  400. package/dist/src/types/cast-semantics.d.ts.map +1 -1
  401. package/dist/src/types/cast-semantics.js +64 -0
  402. package/dist/src/types/cast-semantics.js.map +1 -1
  403. package/dist/src/types/comparison-coercion.d.ts +101 -0
  404. package/dist/src/types/comparison-coercion.d.ts.map +1 -0
  405. package/dist/src/types/comparison-coercion.js +162 -0
  406. package/dist/src/types/comparison-coercion.js.map +1 -0
  407. package/dist/src/types/index.d.ts +2 -2
  408. package/dist/src/types/index.d.ts.map +1 -1
  409. package/dist/src/types/index.js +2 -2
  410. package/dist/src/types/index.js.map +1 -1
  411. package/dist/src/types/logical-type.d.ts +7 -0
  412. package/dist/src/types/logical-type.d.ts.map +1 -1
  413. package/dist/src/types/logical-type.js.map +1 -1
  414. package/dist/src/types/validation.d.ts +56 -0
  415. package/dist/src/types/validation.d.ts.map +1 -1
  416. package/dist/src/types/validation.js +68 -0
  417. package/dist/src/types/validation.js.map +1 -1
  418. package/dist/src/util/coercion.d.ts +8 -0
  419. package/dist/src/util/coercion.d.ts.map +1 -1
  420. package/dist/src/util/coercion.js +8 -0
  421. package/dist/src/util/coercion.js.map +1 -1
  422. package/dist/src/util/comparison.d.ts +16 -3
  423. package/dist/src/util/comparison.d.ts.map +1 -1
  424. package/dist/src/util/comparison.js +21 -5
  425. package/dist/src/util/comparison.js.map +1 -1
  426. package/dist/src/util/key-serializer.d.ts +46 -0
  427. package/dist/src/util/key-serializer.d.ts.map +1 -1
  428. package/dist/src/util/key-serializer.js +47 -0
  429. package/dist/src/util/key-serializer.js.map +1 -1
  430. package/dist/src/util/value-set.d.ts +21 -0
  431. package/dist/src/util/value-set.d.ts.map +1 -0
  432. package/dist/src/util/value-set.js +22 -0
  433. package/dist/src/util/value-set.js.map +1 -0
  434. package/dist/src/vtab/capabilities.d.ts +1 -1
  435. package/dist/src/vtab/events.d.ts +5 -1
  436. package/dist/src/vtab/events.d.ts.map +1 -1
  437. package/dist/src/vtab/events.js.map +1 -1
  438. package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
  439. package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
  440. package/dist/src/vtab/memory/layer/alter-column.js +214 -0
  441. package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
  442. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  443. package/dist/src/vtab/memory/layer/base.js +4 -3
  444. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  445. package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
  446. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  447. package/dist/src/vtab/memory/layer/manager.d.ts +176 -25
  448. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  449. package/dist/src/vtab/memory/layer/manager.js +572 -495
  450. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  451. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  452. package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
  453. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  454. package/dist/src/vtab/memory/layer/transaction.d.ts +101 -15
  455. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  456. package/dist/src/vtab/memory/layer/transaction.js +133 -45
  457. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  458. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  459. package/dist/src/vtab/memory/module.js +2 -1
  460. package/dist/src/vtab/memory/module.js.map +1 -1
  461. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  462. package/dist/src/vtab/memory/table.js +11 -6
  463. package/dist/src/vtab/memory/table.js.map +1 -1
  464. package/dist/src/vtab/module.d.ts +51 -21
  465. package/dist/src/vtab/module.d.ts.map +1 -1
  466. package/dist/src/vtab/table.d.ts +1 -1
  467. package/dist/src/vtab/table.js +1 -1
  468. package/package.json +3 -3
@@ -7,7 +7,7 @@ import { createLogger } from '../../common/logger.js';
7
7
  import { ColumnReferenceNode, ParameterReferenceNode } from '../nodes/reference.js';
8
8
  import { BetweenNode, BinaryOpNode, CastNode, CollateNode, LiteralNode, UnaryOpNode } from '../nodes/scalar.js';
9
9
  import { InNode } from '../nodes/subquery.js';
10
- import { compareSqlValues, normalizeCollationName } from '../../util/comparison.js';
10
+ import { compareSqlValues, normalizeCollationName, semanticOrderingsAgree } from '../../util/comparison.js';
11
11
  import { flipComparison } from '../analysis/predicate-shape.js';
12
12
  import { effectiveBetweenBoundCollation, effectiveComparisonCollation, effectiveInCollation, isValueDiscriminatingEquality, operandCollation } from '../analysis/comparison-collation.js';
13
13
  const log = createLogger('planner:fd');
@@ -864,18 +864,42 @@ export function isAtMostOneRow(rel) {
864
864
  *
865
865
  * Non-equality conjuncts contribute nothing.
866
866
  *
867
- * **Collation gate.** Every extracted fact is a VALUE-level claim (a pinned
868
- * column has one value across rows; `col1 = col2` rows are value-equal), so a
869
- * conjunct only contributes when its comparison is value-discriminating
870
- * (`isValueDiscriminatingEquality`): for textual operands the effective
871
- * comparison collation must be BINARY. A NOCASE/RTRIM comparison — via a
872
- * `COLLATE` wrapper on either side or a non-BINARY declared column collation —
873
- * passes value-DIFFERENT rows ('Bob' = 'bob' NOCASE), so its facts would
874
- * over-claim (false ≤1-row keys, false EC-driven inferences, wrong insert
867
+ * **Collation gate (all shapes).** Every extracted fact is a VALUE-level claim
868
+ * (a pinned column has one value across rows; `col1 = col2` rows are
869
+ * value-equal), so a conjunct only contributes when its comparison is
870
+ * value-discriminating (`isValueDiscriminatingEquality`): for textual operands
871
+ * the effective comparison collation must be BINARY. A NOCASE/RTRIM comparison —
872
+ * via a `COLLATE` wrapper on either side or a non-BINARY declared column
873
+ * collation — passes value-DIFFERENT rows ('Bob' = 'bob' NOCASE), so its facts
874
+ * would over-claim (false ≤1-row keys, false EC-driven inferences, wrong insert
875
875
  * defaults — ticket `collation-blind-equality-fact-extraction`). Declared-
876
876
  * collation covered-key ≤1-row detection is NOT lost: it flows through the
877
877
  * independent (and collation-sound) `extractConstraints` path in
878
878
  * `FilterNode.computePhysical`.
879
+ *
880
+ * **Semantic-ordering gate (`col1 = col2` ONLY).** A few logical types compare
881
+ * by meaning rather than by stored text (`timespan`: 'PT1H' = 'PT60M'; `json`:
882
+ * '{"a":1}' = '{ "a" : 1 }'). For a MIXED pair — `d timespan = s text` — the
883
+ * mirror FDs and the equivalence class are both FALSE: two surviving rows can
884
+ * agree on `d` (same elapsed time) while disagreeing on `s` (distinct strings),
885
+ * because the two columns have no common notion of "same value". So the col=col
886
+ * arm additionally requires `semanticOrderingsAgree` on the two declared logical
887
+ * types, mirroring the two join-side extractors that mint the same kind of fact
888
+ * (`extractEquiPairsFromCondition` in `nodes/join-node.ts`, `extractEquiPairs`
889
+ * in `rules/join/equi-pair-extractor.ts`). Same-type pairs (`timespan =
890
+ * timespan`) stay admitted — under the type's own identity both facts hold.
891
+ * Invariant OPT-051; ticket `debt-filter-equality-facts-ignore-semantic-ordering`.
892
+ *
893
+ * **The constant-pin arms are deliberately NOT semantic-ordering-gated.** This is
894
+ * intentional, not an oversight. `where d = 'PT60M'` keeps every row whose `d` is
895
+ * one hour whatever text it stores, and under the engine's identity for a
896
+ * `timespan` column — the same identity `distinct`/`group by`/`unique` use —
897
+ * those rows all hold *the same value*, so `∅ → d` is true. The
898
+ * `ConstantBinding` claim is likewise true as defined (see its declaration in
899
+ * `nodes/plan-node.ts`): the column *compares equal to* the bound value under its
900
+ * own comparison. Gating this arm would decline EVERY constant pin on a
901
+ * `timespan`/`json` column (a literal never declares a semantic-ordering type),
902
+ * losing real optimizations to "fix" a claim that is not wrong.
879
903
  */
880
904
  export function extractEqualityFds(predicate, attrIdToIndex) {
881
905
  const fds = [];
@@ -901,6 +925,11 @@ export function extractEqualityFds(predicate, attrIdToIndex) {
901
925
  const lConst = constantValueOf(n.left);
902
926
  const rConst = constantValueOf(n.right);
903
927
  if (lIsCol && rIsCol) {
928
+ // Semantic-ordering gate — cross-COLUMN facts only (see doc). A mixed
929
+ // pair has no shared notion of "same value", so neither the mirror FDs
930
+ // nor the equivalence class hold. Symmetric, so operand order is moot.
931
+ if (!semanticOrderingsAgree(n.left.getType().logicalType, n.right.getType().logicalType))
932
+ continue;
904
933
  const lIdx = attrIdToIndex.get(n.left.attributeId);
905
934
  const rIdx = attrIdToIndex.get(n.right.attributeId);
906
935
  if (lIdx !== undefined && rIdx !== undefined && lIdx !== rIdx) {
@@ -1078,6 +1107,14 @@ function buildPredicateFacts(predicate, attrIdToIndex, isColumnNumeric, declared
1078
1107
  if (lIdx !== undefined && rIdx !== undefined) {
1079
1108
  // Both sides are bare column refs; require their contributed
1080
1109
  // collations to agree so any resolution order matches the guard's.
1110
+ // NOTE: deliberately NOT semantic-ordering-gated, unlike the
1111
+ // cross-column arm of `extractEqualityFds` (invariant OPT-051).
1112
+ // A `columnEqs` fact only ever discharges an `eq-column` guard
1113
+ // clause, which is the SAME comparison re-evaluated under the same
1114
+ // declared types at enforcement time — so filter-rows and
1115
+ // guard-scope-rows coincide whether or not semantic ordering is in
1116
+ // play. Adding the gate here for symmetry would be a pure
1117
+ // completeness loss. Do not "fix".
1081
1118
  if (operandCollation(n.left) === operandCollation(n.right)) {
1082
1119
  addColumnEq(lIdx, rIdx);
1083
1120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fd-utils.js","sourceRoot":"","sources":["../../../../src/planner/util/fd-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fd-utils.js","sourceRoot":"","sources":["../../../../src/planner/util/fd-utils.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@
7
7
  * all need the same primitives:
8
8
  * - find a declared FK on the child that covers a given set of equi-pairs
9
9
  * against a parent table,
10
- * - extract the underlying `TableSchema` of a relational subtree (through
11
- * standard row-preserving wrappers),
10
+ * - resolve the underlying `TableSchema` of a relational subtree together
11
+ * with the map from its output columns back to that table's columns,
12
12
  * - decide whether a relational subtree exposes the full row set of its
13
13
  * underlying base table (no row-reducing wrapper between the join and the
14
14
  * table).
@@ -16,8 +16,8 @@
16
16
  * `extractTableSchema` and `checkFkPkAlignment` live in `key-utils.ts` because
17
17
  * they also serve non-IND callers (key coverage, FD propagation). This file
18
18
  * adds the IND-specific extensions: a covering-FK lookup that *returns* the
19
- * matched FK (so callers can inspect nullability), and the row-preserving
20
- * path walker.
19
+ * matched FK (so callers can inspect nullability), the output-column →
20
+ * table-column mapping, and the row-preserving path walker.
21
21
  */
22
22
  import type { TableSchema, ForeignKeyConstraintSchema } from '../../schema/table.js';
23
23
  import type { InclusionDependency, RelationalPlanNode } from '../nodes/plan-node.js';
@@ -77,11 +77,42 @@ export declare function fkChildNullable(childSchema: TableSchema, fk: ForeignKey
77
77
  */
78
78
  export declare function seedTableForeignKeyInds(childSchema: TableSchema, findParent: (tableName: string, schemaName: string) => TableSchema | undefined): InclusionDependency[];
79
79
  /**
80
- * Convenience wrapper around `extractTableSchema` — same behaviour, exported
81
- * under a name that matches the IND-rules' vocabulary so callers don't need
82
- * to reach into key-utils for an unrelated import.
80
+ * Where each output column of a relational subtree comes from in the single
81
+ * base table that subtree reads.
82
+ *
83
+ * `columnOf[i]` is the base-table column index behind output column `i`, or
84
+ * `undefined` when output column `i` is not a bare base-table column (a
85
+ * computed projection, an aggregate result, a synthesized flag, …).
86
+ *
87
+ * Rules that pair a subtree's *output* column indices against a `TableSchema`
88
+ * (FK↔PK alignment) must translate through this map first: an intervening
89
+ * projection can rename, reorder, or drop columns, so an output index is not
90
+ * interchangeable with a table column index.
83
91
  */
84
- export declare function tableSchemaOf(node: RelationalPlanNode): TableSchema | undefined;
92
+ export interface TableColumnMapping {
93
+ schema: TableSchema;
94
+ columnOf: ReadonlyArray<number | undefined>;
95
+ }
96
+ /**
97
+ * Resolve `node` to the base table it reads plus the output-column → table-column
98
+ * map described by {@link TableColumnMapping}. Returns `undefined` when the
99
+ * subtree does not bottom out in exactly one table.
100
+ *
101
+ * The map is built by attribute *identity*: a `TableReferenceNode` mints one
102
+ * attribute per table column in column order, and every wrapper that merely
103
+ * passes a column through (Filter, Sort, Alias, Retrieve, Distinct, a bare
104
+ * column projection) republishes that same attribute id. So an output column
105
+ * whose attribute id is one of the table's maps to that column, and anything
106
+ * derived — which carries a fresh attribute id — maps to `undefined`.
107
+ */
108
+ export declare function resolveTableColumnMapping(node: RelationalPlanNode): TableColumnMapping | undefined;
109
+ /**
110
+ * Translate output column indices into base-table column indices via
111
+ * {@link TableColumnMapping}. Returns `undefined` when any column has no
112
+ * base-table origin — the caller must then decline rather than pair an
113
+ * unrelated index against the table schema.
114
+ */
115
+ export declare function mapColumnsToTable(cols: ReadonlyArray<number>, mapping: TableColumnMapping): number[] | undefined;
85
116
  /**
86
117
  * True when `node` is a chain of wrappers that produces the full row set of
87
118
  * its underlying base table — i.e. nothing between the node and the table can
@@ -90,16 +121,24 @@ export declare function tableSchemaOf(node: RelationalPlanNode): TableSchema | u
90
121
  * Allowed wrappers: TableReferenceNode (base), RetrieveNode whose pipeline is
91
122
  * the bare TableReferenceNode (no pushed-down pipeline filter), AliasNode,
92
123
  * SortNode — all preserve row count *and* attribute-id mapping of their
93
- * source. ProjectNode is intentionally excluded: it may reorder/drop columns
94
- * which would invalidate the table-column-index→attribute-index assumption
95
- * the FK→PK alignment check relies on. Anything else (Filter, LimitOffset,
96
- * Distinct, Project, Join, Aggregate, Window, CTE, SetOperation, …)
97
- * disqualifies.
124
+ * source. Anything else (Filter, LimitOffset, Distinct, Join, Aggregate,
125
+ * Window, CTE, SetOperation, …) disqualifies.
126
+ *
127
+ * `ProjectNode` is excluded by default even though a projection never removes
128
+ * rows: it may rename, reorder, or drop columns, which breaks the
129
+ * table-column-index ≡ output-index assumption callers who pass raw output
130
+ * indices to the FK→PK alignment check rely on. Callers that translate their
131
+ * column indices through {@link resolveTableColumnMapping} first are immune to
132
+ * that and pass `throughProject: true` to peel projections as well.
98
133
  *
99
- * Used by: INNER join elimination (PK side must be unfiltered) and aggregate
134
+ * Used by: INNER join elimination (PK side must be unfiltered), aggregate
100
135
  * elimination over FK-covered joins (same reason — a row-reducing wrapper on
101
- * the eliminable side would have dropped rows the FK→PK guarantee assumes
102
- * are present).
136
+ * the eliminable side would have dropped rows the FK→PK guarantee assumes are
137
+ * present), and the semi/anti-join FK folds (which opt into `throughProject`,
138
+ * since the uncorrelated `IN` arm hands the join a bare `Project` over the
139
+ * parent table).
103
140
  */
104
- export declare function isRowPreservingPathToTable(node: RelationalPlanNode): boolean;
141
+ export declare function isRowPreservingPathToTable(node: RelationalPlanNode, options?: {
142
+ throughProject?: boolean;
143
+ }): boolean;
105
144
  //# sourceMappingURL=ind-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ind-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/ind-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAOrF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,0BAA0B,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EACpC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,GACnC,eAAe,GAAG,SAAS,CAkD7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,WAAW,EAAE,WAAW,EACxB,EAAE,EAAE,0BAA0B,GAC5B,OAAO,CAKT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,GAC5E,mBAAmB,EAAE,CA4CvB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,WAAW,GAAG,SAAS,CAE/E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAQ5E"}
1
+ {"version":3,"file":"ind-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/ind-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAErF,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAOrF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,0BAA0B,CAAC;IAC/B,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAC/B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,EACpC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,GACnC,eAAe,GAAG,SAAS,CAkD7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,WAAW,EAAE,WAAW,EACxB,EAAE,EAAE,0BAA0B,GAC5B,OAAO,CAKT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,GAC5E,mBAAmB,EAAE,CA4CvB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC5C;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,SAAS,CAWlG;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,kBAAkB,GACzB,MAAM,EAAE,GAAG,SAAS,CAQtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,kBAAkB,EACxB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,OAAO,CAeT"}
@@ -7,8 +7,8 @@
7
7
  * all need the same primitives:
8
8
  * - find a declared FK on the child that covers a given set of equi-pairs
9
9
  * against a parent table,
10
- * - extract the underlying `TableSchema` of a relational subtree (through
11
- * standard row-preserving wrappers),
10
+ * - resolve the underlying `TableSchema` of a relational subtree together
11
+ * with the map from its output columns back to that table's columns,
12
12
  * - decide whether a relational subtree exposes the full row set of its
13
13
  * underlying base table (no row-reducing wrapper between the join and the
14
14
  * table).
@@ -16,15 +16,15 @@
16
16
  * `extractTableSchema` and `checkFkPkAlignment` live in `key-utils.ts` because
17
17
  * they also serve non-IND callers (key coverage, FD propagation). This file
18
18
  * adds the IND-specific extensions: a covering-FK lookup that *returns* the
19
- * matched FK (so callers can inspect nullability), and the row-preserving
20
- * path walker.
19
+ * matched FK (so callers can inspect nullability), the output-column →
20
+ * table-column mapping, and the row-preserving path walker.
21
21
  */
22
22
  import { resolveReferencedColumns } from '../../schema/table.js';
23
23
  import { TableReferenceNode } from '../nodes/reference.js';
24
24
  import { RetrieveNode } from '../nodes/retrieve-node.js';
25
25
  import { AliasNode } from '../nodes/alias-node.js';
26
26
  import { SortNode } from '../nodes/sort.js';
27
- import { extractTableSchema } from './key-utils.js';
27
+ import { ProjectNode } from '../nodes/project-node.js';
28
28
  /**
29
29
  * Look up a foreign key on `childSchema` that references `parentSchema` whose
30
30
  * `(fk_columns → referenced_pk_columns)` mapping equals the requested equi-pairs
@@ -179,12 +179,60 @@ export function seedTableForeignKeyInds(childSchema, findParent) {
179
179
  return inds;
180
180
  }
181
181
  /**
182
- * Convenience wrapper around `extractTableSchema` — same behaviour, exported
183
- * under a name that matches the IND-rules' vocabulary so callers don't need
184
- * to reach into key-utils for an unrelated import.
182
+ * The single base table `node` reads, or `undefined` when the subtree reads
183
+ * zero or several tables (a join, a set operation, a values list, …).
184
+ *
185
+ * Descends single-relation wrappers; a `RetrieveNode` resolves directly to its
186
+ * `tableRef` (its pipeline reads that table by construction).
187
+ */
188
+ function findBaseTableReference(node) {
189
+ if (node instanceof TableReferenceNode)
190
+ return node;
191
+ if (node instanceof RetrieveNode)
192
+ return node.tableRef;
193
+ const relations = node.getRelations();
194
+ if (relations.length === 1)
195
+ return findBaseTableReference(relations[0]);
196
+ return undefined;
197
+ }
198
+ /**
199
+ * Resolve `node` to the base table it reads plus the output-column → table-column
200
+ * map described by {@link TableColumnMapping}. Returns `undefined` when the
201
+ * subtree does not bottom out in exactly one table.
202
+ *
203
+ * The map is built by attribute *identity*: a `TableReferenceNode` mints one
204
+ * attribute per table column in column order, and every wrapper that merely
205
+ * passes a column through (Filter, Sort, Alias, Retrieve, Distinct, a bare
206
+ * column projection) republishes that same attribute id. So an output column
207
+ * whose attribute id is one of the table's maps to that column, and anything
208
+ * derived — which carries a fresh attribute id — maps to `undefined`.
185
209
  */
186
- export function tableSchemaOf(node) {
187
- return extractTableSchema(node);
210
+ export function resolveTableColumnMapping(node) {
211
+ const tableRef = findBaseTableReference(node);
212
+ if (!tableRef)
213
+ return undefined;
214
+ const colByAttrId = new Map();
215
+ tableRef.getAttributes().forEach((attr, index) => colByAttrId.set(attr.id, index));
216
+ return {
217
+ schema: tableRef.tableSchema,
218
+ columnOf: node.getAttributes().map(attr => colByAttrId.get(attr.id)),
219
+ };
220
+ }
221
+ /**
222
+ * Translate output column indices into base-table column indices via
223
+ * {@link TableColumnMapping}. Returns `undefined` when any column has no
224
+ * base-table origin — the caller must then decline rather than pair an
225
+ * unrelated index against the table schema.
226
+ */
227
+ export function mapColumnsToTable(cols, mapping) {
228
+ const out = [];
229
+ for (const col of cols) {
230
+ const tableCol = mapping.columnOf[col];
231
+ if (tableCol === undefined)
232
+ return undefined;
233
+ out.push(tableCol);
234
+ }
235
+ return out;
188
236
  }
189
237
  /**
190
238
  * True when `node` is a chain of wrappers that produces the full row set of
@@ -194,27 +242,40 @@ export function tableSchemaOf(node) {
194
242
  * Allowed wrappers: TableReferenceNode (base), RetrieveNode whose pipeline is
195
243
  * the bare TableReferenceNode (no pushed-down pipeline filter), AliasNode,
196
244
  * SortNode — all preserve row count *and* attribute-id mapping of their
197
- * source. ProjectNode is intentionally excluded: it may reorder/drop columns
198
- * which would invalidate the table-column-index→attribute-index assumption
199
- * the FK→PK alignment check relies on. Anything else (Filter, LimitOffset,
200
- * Distinct, Project, Join, Aggregate, Window, CTE, SetOperation, …)
201
- * disqualifies.
245
+ * source. Anything else (Filter, LimitOffset, Distinct, Join, Aggregate,
246
+ * Window, CTE, SetOperation, …) disqualifies.
247
+ *
248
+ * `ProjectNode` is excluded by default even though a projection never removes
249
+ * rows: it may rename, reorder, or drop columns, which breaks the
250
+ * table-column-index ≡ output-index assumption callers who pass raw output
251
+ * indices to the FK→PK alignment check rely on. Callers that translate their
252
+ * column indices through {@link resolveTableColumnMapping} first are immune to
253
+ * that and pass `throughProject: true` to peel projections as well.
202
254
  *
203
- * Used by: INNER join elimination (PK side must be unfiltered) and aggregate
255
+ * Used by: INNER join elimination (PK side must be unfiltered), aggregate
204
256
  * elimination over FK-covered joins (same reason — a row-reducing wrapper on
205
- * the eliminable side would have dropped rows the FK→PK guarantee assumes
206
- * are present).
257
+ * the eliminable side would have dropped rows the FK→PK guarantee assumes are
258
+ * present), and the semi/anti-join FK folds (which opt into `throughProject`,
259
+ * since the uncorrelated `IN` arm hands the join a bare `Project` over the
260
+ * parent table).
207
261
  */
208
- export function isRowPreservingPathToTable(node) {
262
+ export function isRowPreservingPathToTable(node, options = {}) {
209
263
  if (node instanceof TableReferenceNode)
210
264
  return true;
211
265
  if (node instanceof RetrieveNode) {
266
+ // NOTE: `throughProject` deliberately stops at the Retrieve boundary — a
267
+ // pushed-down pipeline is only accepted when it is the bare table. If a
268
+ // module ever accepts projection pushdown on a semi/anti-join parent side,
269
+ // this declines a fold it could take; recurse with `options` then.
212
270
  return node.source instanceof TableReferenceNode;
213
271
  }
214
272
  if (node instanceof AliasNode)
215
- return isRowPreservingPathToTable(node.source);
273
+ return isRowPreservingPathToTable(node.source, options);
216
274
  if (node instanceof SortNode)
217
- return isRowPreservingPathToTable(node.source);
275
+ return isRowPreservingPathToTable(node.source, options);
276
+ if (options.throughProject && node instanceof ProjectNode) {
277
+ return isRowPreservingPathToTable(node.source, options);
278
+ }
218
279
  return false;
219
280
  }
220
281
  //# sourceMappingURL=ind-utils.js.map