@quereus/quereus 4.4.1 → 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 (593) hide show
  1. package/README.md +5 -4
  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-analysis.d.ts.map +1 -1
  7. package/dist/src/core/database-materialized-views-analysis.js +1 -0
  8. package/dist/src/core/database-materialized-views-analysis.js.map +1 -1
  9. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  10. package/dist/src/core/database-materialized-views-plan-builders.js +29 -2
  11. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  12. package/dist/src/core/database-transaction.d.ts +9 -0
  13. package/dist/src/core/database-transaction.d.ts.map +1 -1
  14. package/dist/src/core/database-transaction.js +9 -0
  15. package/dist/src/core/database-transaction.js.map +1 -1
  16. package/dist/src/core/database.d.ts +7 -1
  17. package/dist/src/core/database.d.ts.map +1 -1
  18. package/dist/src/core/database.js +20 -5
  19. package/dist/src/core/database.js.map +1 -1
  20. package/dist/src/func/builtins/aggregate.js +11 -11
  21. package/dist/src/func/builtins/aggregate.js.map +1 -1
  22. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  23. package/dist/src/func/builtins/builtin-window-functions.js +15 -85
  24. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  25. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  26. package/dist/src/func/builtins/conversion.js +10 -9
  27. package/dist/src/func/builtins/conversion.js.map +1 -1
  28. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  29. package/dist/src/func/builtins/datetime.js +28 -10
  30. package/dist/src/func/builtins/datetime.js.map +1 -1
  31. package/dist/src/func/builtins/json.d.ts.map +1 -1
  32. package/dist/src/func/builtins/json.js +23 -17
  33. package/dist/src/func/builtins/json.js.map +1 -1
  34. package/dist/src/func/builtins/mutation.js +2 -2
  35. package/dist/src/func/builtins/mutation.js.map +1 -1
  36. package/dist/src/func/builtins/return-types.d.ts +327 -0
  37. package/dist/src/func/builtins/return-types.d.ts.map +1 -0
  38. package/dist/src/func/builtins/return-types.js +43 -0
  39. package/dist/src/func/builtins/return-types.js.map +1 -0
  40. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  41. package/dist/src/func/builtins/scalar.js +193 -37
  42. package/dist/src/func/builtins/scalar.js.map +1 -1
  43. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  44. package/dist/src/func/builtins/schema.js +11 -3
  45. package/dist/src/func/builtins/schema.js.map +1 -1
  46. package/dist/src/func/builtins/string.d.ts.map +1 -1
  47. package/dist/src/func/builtins/string.js +4 -2
  48. package/dist/src/func/builtins/string.js.map +1 -1
  49. package/dist/src/func/builtins/timespan.d.ts +3 -0
  50. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  51. package/dist/src/func/builtins/timespan.js +15 -11
  52. package/dist/src/func/builtins/timespan.js.map +1 -1
  53. package/dist/src/func/registration.d.ts +39 -1
  54. package/dist/src/func/registration.d.ts.map +1 -1
  55. package/dist/src/func/registration.js +236 -41
  56. package/dist/src/func/registration.js.map +1 -1
  57. package/dist/src/index.d.ts +14 -7
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +14 -5
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/parser/parser.d.ts +46 -0
  62. package/dist/src/parser/parser.d.ts.map +1 -1
  63. package/dist/src/parser/parser.js +160 -44
  64. package/dist/src/parser/parser.js.map +1 -1
  65. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  66. package/dist/src/planner/analysis/check-extraction.js +37 -4
  67. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  68. package/dist/src/planner/analysis/coarsened-key.d.ts +4 -3
  69. package/dist/src/planner/analysis/coarsened-key.d.ts.map +1 -1
  70. package/dist/src/planner/analysis/coarsened-key.js +37 -3
  71. package/dist/src/planner/analysis/coarsened-key.js.map +1 -1
  72. package/dist/src/planner/analysis/comparison-collation.d.ts +41 -13
  73. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  74. package/dist/src/planner/analysis/comparison-collation.js +51 -14
  75. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  76. package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
  77. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/constraint-extractor.js +59 -59
  79. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  80. package/dist/src/planner/analysis/coverage-prover.d.ts +13 -2
  81. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  82. package/dist/src/planner/analysis/coverage-prover.js +10 -14
  83. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  84. package/dist/src/planner/analysis/predicate-conjuncts.d.ts +10 -4
  85. package/dist/src/planner/analysis/predicate-conjuncts.d.ts.map +1 -1
  86. package/dist/src/planner/analysis/predicate-conjuncts.js +28 -7
  87. package/dist/src/planner/analysis/predicate-conjuncts.js.map +1 -1
  88. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  89. package/dist/src/planner/analysis/query-rewrite-matcher.js +8 -27
  90. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  91. package/dist/src/planner/analysis/scalar-subqueries.d.ts +22 -3
  92. package/dist/src/planner/analysis/scalar-subqueries.d.ts.map +1 -1
  93. package/dist/src/planner/analysis/scalar-subqueries.js +32 -3
  94. package/dist/src/planner/analysis/scalar-subqueries.js.map +1 -1
  95. package/dist/src/planner/analysis/set-op-type-merge.d.ts +64 -0
  96. package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -0
  97. package/dist/src/planner/analysis/set-op-type-merge.js +97 -0
  98. package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -0
  99. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  100. package/dist/src/planner/building/alter-table.js +65 -27
  101. package/dist/src/planner/building/alter-table.js.map +1 -1
  102. package/dist/src/planner/building/coercion.d.ts +54 -0
  103. package/dist/src/planner/building/coercion.d.ts.map +1 -0
  104. package/dist/src/planner/building/coercion.js +88 -0
  105. package/dist/src/planner/building/coercion.js.map +1 -0
  106. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  107. package/dist/src/planner/building/constraint-builder.js +5 -18
  108. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  109. package/dist/src/planner/building/expression.d.ts +17 -0
  110. package/dist/src/planner/building/expression.d.ts.map +1 -1
  111. package/dist/src/planner/building/expression.js +23 -115
  112. package/dist/src/planner/building/expression.js.map +1 -1
  113. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  114. package/dist/src/planner/building/function-call.js +13 -0
  115. package/dist/src/planner/building/function-call.js.map +1 -1
  116. package/dist/src/planner/building/select-aggregates.d.ts +1 -1
  117. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  118. package/dist/src/planner/building/select-aggregates.js +53 -2
  119. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  120. package/dist/src/planner/building/select-compound.d.ts.map +1 -1
  121. package/dist/src/planner/building/select-compound.js +10 -6
  122. package/dist/src/planner/building/select-compound.js.map +1 -1
  123. package/dist/src/planner/building/select-context.d.ts +7 -0
  124. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  125. package/dist/src/planner/building/select-context.js +10 -40
  126. package/dist/src/planner/building/select-context.js.map +1 -1
  127. package/dist/src/planner/building/select.d.ts +37 -1
  128. package/dist/src/planner/building/select.d.ts.map +1 -1
  129. package/dist/src/planner/building/select.js +112 -51
  130. package/dist/src/planner/building/select.js.map +1 -1
  131. package/dist/src/planner/cost/conjunct-cost.d.ts +82 -0
  132. package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -0
  133. package/dist/src/planner/cost/conjunct-cost.js +107 -0
  134. package/dist/src/planner/cost/conjunct-cost.js.map +1 -0
  135. package/dist/src/planner/cost/index.d.ts +10 -0
  136. package/dist/src/planner/cost/index.d.ts.map +1 -1
  137. package/dist/src/planner/cost/index.js +15 -0
  138. package/dist/src/planner/cost/index.js.map +1 -1
  139. package/dist/src/planner/mutation/propagate.d.ts.map +1 -1
  140. package/dist/src/planner/mutation/propagate.js +1 -0
  141. package/dist/src/planner/mutation/propagate.js.map +1 -1
  142. package/dist/src/planner/nodes/aggregate-node.d.ts +6 -0
  143. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  144. package/dist/src/planner/nodes/aggregate-node.js +10 -2
  145. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  146. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  147. package/dist/src/planner/nodes/alias-node.js +2 -1
  148. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  149. package/dist/src/planner/nodes/alter-table-node.d.ts +24 -8
  150. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  151. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  152. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  153. package/dist/src/planner/nodes/asof-scan-node.js +4 -1
  154. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  155. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  156. package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
  157. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  158. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  159. package/dist/src/planner/nodes/async-gather-node.js +19 -8
  160. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  161. package/dist/src/planner/nodes/bloom-join-node.d.ts +2 -0
  162. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  163. package/dist/src/planner/nodes/bloom-join-node.js +17 -7
  164. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  165. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  166. package/dist/src/planner/nodes/cache-node.js +2 -1
  167. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  168. package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
  169. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  170. package/dist/src/planner/nodes/distinct-node.js +10 -2
  171. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  172. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  173. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
  174. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  175. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
  176. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  177. package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
  178. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  179. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  180. package/dist/src/planner/nodes/filter.js +12 -5
  181. package/dist/src/planner/nodes/filter.js.map +1 -1
  182. package/dist/src/planner/nodes/hash-aggregate.d.ts +6 -0
  183. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  184. package/dist/src/planner/nodes/hash-aggregate.js +10 -2
  185. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  186. package/dist/src/planner/nodes/join-node.d.ts +25 -1
  187. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  188. package/dist/src/planner/nodes/join-node.js +38 -10
  189. package/dist/src/planner/nodes/join-node.js.map +1 -1
  190. package/dist/src/planner/nodes/join-utils.d.ts +78 -0
  191. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/join-utils.js +73 -0
  193. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  194. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +87 -0
  195. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -0
  196. package/dist/src/planner/nodes/key-set-semi-join-node.js +141 -0
  197. package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -0
  198. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
  200. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  201. package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
  202. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  203. package/dist/src/planner/nodes/limit-offset.js +10 -2
  204. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  205. package/dist/src/planner/nodes/merge-join-node.d.ts +2 -0
  206. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  207. package/dist/src/planner/nodes/merge-join-node.js +21 -8
  208. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  209. package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
  210. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  211. package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
  212. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  213. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
  214. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  215. package/dist/src/planner/nodes/plan-node-type.js +1 -0
  216. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  217. package/dist/src/planner/nodes/plan-node.d.ts +24 -0
  218. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  219. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  220. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  221. package/dist/src/planner/nodes/project-node.js +2 -1
  222. package/dist/src/planner/nodes/project-node.js.map +1 -1
  223. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  224. package/dist/src/planner/nodes/reference.js +3 -2
  225. package/dist/src/planner/nodes/reference.js.map +1 -1
  226. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  227. package/dist/src/planner/nodes/retrieve-node.js +2 -1
  228. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  229. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  230. package/dist/src/planner/nodes/scalar.js +5 -18
  231. package/dist/src/planner/nodes/scalar.js.map +1 -1
  232. package/dist/src/planner/nodes/set-operation-node.d.ts +68 -16
  233. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  234. package/dist/src/planner/nodes/set-operation-node.js +147 -26
  235. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  236. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  237. package/dist/src/planner/nodes/sort.js +3 -1
  238. package/dist/src/planner/nodes/sort.js.map +1 -1
  239. package/dist/src/planner/nodes/stream-aggregate.d.ts +6 -0
  240. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  241. package/dist/src/planner/nodes/stream-aggregate.js +10 -2
  242. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  243. package/dist/src/planner/nodes/table-access-nodes.d.ts +19 -1
  244. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  245. package/dist/src/planner/nodes/table-access-nodes.js +18 -2
  246. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  247. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  248. package/dist/src/planner/nodes/window-function.js +8 -0
  249. package/dist/src/planner/nodes/window-function.js.map +1 -1
  250. package/dist/src/planner/nodes/window-node.d.ts +1 -1
  251. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  252. package/dist/src/planner/nodes/window-node.js +3 -1
  253. package/dist/src/planner/nodes/window-node.js.map +1 -1
  254. package/dist/src/planner/optimizer.d.ts +9 -1
  255. package/dist/src/planner/optimizer.d.ts.map +1 -1
  256. package/dist/src/planner/optimizer.js +126 -6
  257. package/dist/src/planner/optimizer.js.map +1 -1
  258. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +68 -0
  259. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -0
  260. package/dist/src/planner/rules/access/rule-key-set-seek.js +343 -0
  261. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -0
  262. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
  263. package/dist/src/planner/rules/access/rule-monotonic-range-access.js +2 -2
  264. package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
  265. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +46 -0
  266. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  267. package/dist/src/planner/rules/access/rule-select-access-path.js +54 -13
  268. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  269. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  270. package/dist/src/planner/rules/cache/rule-cte-optimization.js +9 -0
  271. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  272. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  273. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  274. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  275. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +49 -49
  276. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  277. package/dist/src/planner/rules/join/equi-pair-extractor.js +54 -58
  278. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  279. package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
  280. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
  281. package/dist/src/planner/rules/join/index-nested-loop.js +285 -0
  282. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
  283. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
  284. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
  285. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  286. package/dist/src/planner/rules/join/rule-join-physical-selection.js +97 -29
  287. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  288. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  289. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +15 -5
  290. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  291. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts +1 -1
  292. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +1 -1
  293. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +43 -0
  294. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -0
  295. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +119 -0
  296. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -0
  297. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +44 -3
  298. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
  299. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +142 -18
  300. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  301. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +73 -0
  302. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
  303. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +205 -0
  304. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
  305. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
  306. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  307. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
  308. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  309. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +10 -2
  310. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
  311. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +20 -2
  312. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  313. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  314. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +18 -3
  315. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  316. package/dist/src/planner/rules/shared/access-leaf.d.ts +39 -0
  317. package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
  318. package/dist/src/planner/rules/shared/access-leaf.js +79 -0
  319. package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
  320. package/dist/src/planner/rules/shared/index-style-context.d.ts +17 -0
  321. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -1
  322. package/dist/src/planner/rules/shared/index-style-context.js +7 -0
  323. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -1
  324. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  325. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +18 -8
  326. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  327. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +3 -1
  328. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  329. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +27 -10
  330. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  331. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts +24 -6
  332. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  333. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +243 -70
  334. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  335. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
  336. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  337. package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
  338. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  339. package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
  340. package/dist/src/planner/scopes/aliased.js +6 -0
  341. package/dist/src/planner/scopes/aliased.js.map +1 -1
  342. package/dist/src/planner/stats/catalog-stats.d.ts +87 -4
  343. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
  344. package/dist/src/planner/stats/catalog-stats.js +250 -28
  345. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  346. package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
  347. package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
  348. package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
  349. package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
  350. package/dist/src/planner/stats/index.d.ts +36 -2
  351. package/dist/src/planner/stats/index.d.ts.map +1 -1
  352. package/dist/src/planner/stats/index.js.map +1 -1
  353. package/dist/src/planner/stats/selectivity-combine.d.ts +53 -0
  354. package/dist/src/planner/stats/selectivity-combine.d.ts.map +1 -0
  355. package/dist/src/planner/stats/selectivity-combine.js +75 -0
  356. package/dist/src/planner/stats/selectivity-combine.js.map +1 -0
  357. package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
  358. package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
  359. package/dist/src/planner/stats/table-cardinality.js +29 -0
  360. package/dist/src/planner/stats/table-cardinality.js.map +1 -0
  361. package/dist/src/planner/util/column-origins.d.ts +79 -0
  362. package/dist/src/planner/util/column-origins.d.ts.map +1 -0
  363. package/dist/src/planner/util/column-origins.js +150 -0
  364. package/dist/src/planner/util/column-origins.js.map +1 -0
  365. package/dist/src/planner/util/fd-utils.d.ts +32 -8
  366. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  367. package/dist/src/planner/util/fd-utils.js +46 -9
  368. package/dist/src/planner/util/fd-utils.js.map +1 -1
  369. package/dist/src/planner/util/ind-utils.d.ts +56 -17
  370. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  371. package/dist/src/planner/util/ind-utils.js +82 -21
  372. package/dist/src/planner/util/ind-utils.js.map +1 -1
  373. package/dist/src/planner/util/key-utils.d.ts +20 -2
  374. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  375. package/dist/src/planner/util/key-utils.js +37 -3
  376. package/dist/src/planner/util/key-utils.js.map +1 -1
  377. package/dist/src/planner/util/row-estimates.d.ts +28 -0
  378. package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
  379. package/dist/src/planner/util/row-estimates.js +40 -0
  380. package/dist/src/planner/util/row-estimates.js.map +1 -0
  381. package/dist/src/planner/util/row-population.d.ts +42 -0
  382. package/dist/src/planner/util/row-population.d.ts.map +1 -0
  383. package/dist/src/planner/util/row-population.js +71 -0
  384. package/dist/src/planner/util/row-population.js.map +1 -0
  385. package/dist/src/runtime/deferred-constraint-queue.d.ts +40 -0
  386. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  387. package/dist/src/runtime/deferred-constraint-queue.js +90 -9
  388. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  389. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  390. package/dist/src/runtime/emit/add-constraint.js +39 -1
  391. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  392. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  393. package/dist/src/runtime/emit/aggregate.js +4 -4
  394. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  395. package/dist/src/runtime/emit/alter-schema-event.d.ts +42 -0
  396. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
  397. package/dist/src/runtime/emit/alter-schema-event.js +28 -0
  398. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
  399. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  400. package/dist/src/runtime/emit/alter-table.js +386 -154
  401. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  402. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  403. package/dist/src/runtime/emit/analyze.js +35 -3
  404. package/dist/src/runtime/emit/analyze.js.map +1 -1
  405. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  406. package/dist/src/runtime/emit/asof-scan.js +8 -3
  407. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  408. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  409. package/dist/src/runtime/emit/between.js +4 -38
  410. package/dist/src/runtime/emit/between.js.map +1 -1
  411. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  412. package/dist/src/runtime/emit/binary.js +2 -23
  413. package/dist/src/runtime/emit/binary.js.map +1 -1
  414. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  415. package/dist/src/runtime/emit/bloom-join.js +6 -35
  416. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  417. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  418. package/dist/src/runtime/emit/case.js +40 -6
  419. package/dist/src/runtime/emit/case.js.map +1 -1
  420. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  421. package/dist/src/runtime/emit/cast.js +4 -19
  422. package/dist/src/runtime/emit/cast.js.map +1 -1
  423. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  424. package/dist/src/runtime/emit/constraint-check.js +32 -8
  425. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  426. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  427. package/dist/src/runtime/emit/dml-executor.js +90 -50
  428. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  429. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  430. package/dist/src/runtime/emit/drop-index.js +4 -3
  431. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  432. package/dist/src/runtime/emit/filter.d.ts +18 -0
  433. package/dist/src/runtime/emit/filter.d.ts.map +1 -1
  434. package/dist/src/runtime/emit/filter.js +52 -10
  435. package/dist/src/runtime/emit/filter.js.map +1 -1
  436. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  437. package/dist/src/runtime/emit/hash-aggregate.js +2 -2
  438. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  439. package/dist/src/runtime/emit/join-key-extractor.d.ts +46 -0
  440. package/dist/src/runtime/emit/join-key-extractor.d.ts.map +1 -0
  441. package/dist/src/runtime/emit/join-key-extractor.js +60 -0
  442. package/dist/src/runtime/emit/join-key-extractor.js.map +1 -0
  443. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  444. package/dist/src/runtime/emit/join.js +8 -46
  445. package/dist/src/runtime/emit/join.js.map +1 -1
  446. package/dist/src/runtime/emit/key-set-semi-join.d.ts +29 -0
  447. package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -0
  448. package/dist/src/runtime/emit/key-set-semi-join.js +149 -0
  449. package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -0
  450. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  451. package/dist/src/runtime/emit/merge-join.js +15 -8
  452. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  453. package/dist/src/runtime/emit/operand-comparator.d.ts +70 -0
  454. package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -0
  455. package/dist/src/runtime/emit/operand-comparator.js +93 -0
  456. package/dist/src/runtime/emit/operand-comparator.js.map +1 -0
  457. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  458. package/dist/src/runtime/emit/scan.js +11 -2
  459. package/dist/src/runtime/emit/scan.js.map +1 -1
  460. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  461. package/dist/src/runtime/emit/schema-declarative.js +30 -0
  462. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  463. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  464. package/dist/src/runtime/emit/subquery.js +153 -52
  465. package/dist/src/runtime/emit/subquery.js.map +1 -1
  466. package/dist/src/runtime/emit/window.js +36 -23
  467. package/dist/src/runtime/emit/window.js.map +1 -1
  468. package/dist/src/runtime/parallel-driver.d.ts +5 -2
  469. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  470. package/dist/src/runtime/parallel-driver.js +6 -2
  471. package/dist/src/runtime/parallel-driver.js.map +1 -1
  472. package/dist/src/runtime/register.d.ts.map +1 -1
  473. package/dist/src/runtime/register.js +2 -0
  474. package/dist/src/runtime/register.js.map +1 -1
  475. package/dist/src/runtime/types.d.ts +7 -0
  476. package/dist/src/runtime/types.d.ts.map +1 -1
  477. package/dist/src/runtime/types.js.map +1 -1
  478. package/dist/src/schema/catalog-persistability.d.ts +19 -16
  479. package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
  480. package/dist/src/schema/catalog-persistability.js +76 -20
  481. package/dist/src/schema/catalog-persistability.js.map +1 -1
  482. package/dist/src/schema/catalog.d.ts +67 -2
  483. package/dist/src/schema/catalog.d.ts.map +1 -1
  484. package/dist/src/schema/catalog.js +194 -3
  485. package/dist/src/schema/catalog.js.map +1 -1
  486. package/dist/src/schema/column.d.ts +26 -3
  487. package/dist/src/schema/column.d.ts.map +1 -1
  488. package/dist/src/schema/column.js.map +1 -1
  489. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  490. package/dist/src/schema/ddl-generator.js +19 -6
  491. package/dist/src/schema/ddl-generator.js.map +1 -1
  492. package/dist/src/schema/function.d.ts +40 -0
  493. package/dist/src/schema/function.d.ts.map +1 -1
  494. package/dist/src/schema/function.js +10 -2
  495. package/dist/src/schema/function.js.map +1 -1
  496. package/dist/src/schema/manager.d.ts +84 -7
  497. package/dist/src/schema/manager.d.ts.map +1 -1
  498. package/dist/src/schema/manager.js +153 -53
  499. package/dist/src/schema/manager.js.map +1 -1
  500. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  501. package/dist/src/schema/schema-differ.js +104 -28
  502. package/dist/src/schema/schema-differ.js.map +1 -1
  503. package/dist/src/schema/table.d.ts +149 -1
  504. package/dist/src/schema/table.d.ts.map +1 -1
  505. package/dist/src/schema/table.js +248 -1
  506. package/dist/src/schema/table.js.map +1 -1
  507. package/dist/src/schema/unique-enforcement.d.ts +5 -3
  508. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  509. package/dist/src/schema/unique-enforcement.js +5 -3
  510. package/dist/src/schema/unique-enforcement.js.map +1 -1
  511. package/dist/src/types/builtin-types.d.ts +16 -0
  512. package/dist/src/types/builtin-types.d.ts.map +1 -1
  513. package/dist/src/types/builtin-types.js +76 -12
  514. package/dist/src/types/builtin-types.js.map +1 -1
  515. package/dist/src/types/cast-semantics.d.ts +42 -0
  516. package/dist/src/types/cast-semantics.d.ts.map +1 -1
  517. package/dist/src/types/cast-semantics.js +64 -0
  518. package/dist/src/types/cast-semantics.js.map +1 -1
  519. package/dist/src/types/comparison-coercion.d.ts +101 -0
  520. package/dist/src/types/comparison-coercion.d.ts.map +1 -0
  521. package/dist/src/types/comparison-coercion.js +162 -0
  522. package/dist/src/types/comparison-coercion.js.map +1 -0
  523. package/dist/src/types/index.d.ts +2 -2
  524. package/dist/src/types/index.d.ts.map +1 -1
  525. package/dist/src/types/index.js +2 -2
  526. package/dist/src/types/index.js.map +1 -1
  527. package/dist/src/types/logical-type.d.ts +7 -0
  528. package/dist/src/types/logical-type.d.ts.map +1 -1
  529. package/dist/src/types/logical-type.js.map +1 -1
  530. package/dist/src/types/validation.d.ts +56 -0
  531. package/dist/src/types/validation.d.ts.map +1 -1
  532. package/dist/src/types/validation.js +68 -0
  533. package/dist/src/types/validation.js.map +1 -1
  534. package/dist/src/util/coercion.d.ts +8 -0
  535. package/dist/src/util/coercion.d.ts.map +1 -1
  536. package/dist/src/util/coercion.js +8 -0
  537. package/dist/src/util/coercion.js.map +1 -1
  538. package/dist/src/util/comparison.d.ts +41 -3
  539. package/dist/src/util/comparison.d.ts.map +1 -1
  540. package/dist/src/util/comparison.js +52 -5
  541. package/dist/src/util/comparison.js.map +1 -1
  542. package/dist/src/util/key-serializer.d.ts +46 -0
  543. package/dist/src/util/key-serializer.d.ts.map +1 -1
  544. package/dist/src/util/key-serializer.js +47 -0
  545. package/dist/src/util/key-serializer.js.map +1 -1
  546. package/dist/src/util/value-set.d.ts +21 -0
  547. package/dist/src/util/value-set.d.ts.map +1 -0
  548. package/dist/src/util/value-set.js +22 -0
  549. package/dist/src/util/value-set.js.map +1 -0
  550. package/dist/src/vtab/best-access-plan.d.ts +87 -0
  551. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  552. package/dist/src/vtab/best-access-plan.js +87 -0
  553. package/dist/src/vtab/best-access-plan.js.map +1 -1
  554. package/dist/src/vtab/capabilities.d.ts +1 -1
  555. package/dist/src/vtab/events.d.ts +5 -1
  556. package/dist/src/vtab/events.d.ts.map +1 -1
  557. package/dist/src/vtab/events.js.map +1 -1
  558. package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
  559. package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
  560. package/dist/src/vtab/memory/layer/alter-column.js +214 -0
  561. package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
  562. package/dist/src/vtab/memory/layer/base.d.ts +6 -4
  563. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  564. package/dist/src/vtab/memory/layer/base.js +10 -7
  565. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  566. package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
  567. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  568. package/dist/src/vtab/memory/layer/manager.d.ts +232 -39
  569. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  570. package/dist/src/vtab/memory/layer/manager.js +657 -519
  571. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  572. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  573. package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
  574. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  575. package/dist/src/vtab/memory/layer/transaction.d.ts +111 -16
  576. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  577. package/dist/src/vtab/memory/layer/transaction.js +154 -51
  578. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  579. package/dist/src/vtab/memory/module.d.ts +14 -2
  580. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  581. package/dist/src/vtab/memory/module.js +53 -40
  582. package/dist/src/vtab/memory/module.js.map +1 -1
  583. package/dist/src/vtab/memory/table.d.ts +1 -1
  584. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  585. package/dist/src/vtab/memory/table.js +15 -3
  586. package/dist/src/vtab/memory/table.js.map +1 -1
  587. package/dist/src/vtab/module.d.ts +51 -21
  588. package/dist/src/vtab/module.d.ts.map +1 -1
  589. package/dist/src/vtab/table.d.ts +10 -2
  590. package/dist/src/vtab/table.d.ts.map +1 -1
  591. package/dist/src/vtab/table.js +1 -1
  592. package/dist/src/vtab/table.js.map +1 -1
  593. package/package.json +3 -3
@@ -1,5 +1,3 @@
1
- import { RegisteredScope } from '../scopes/registered.js';
2
- import { ColumnReferenceNode } from '../nodes/reference.js';
3
1
  import { buildWithClause } from './with.js';
4
2
  /**
5
3
  * Builds context with CTEs if present.
@@ -9,53 +7,25 @@ import { buildWithClause } from './with.js';
9
7
  * the same path SELECT uses — closing the read gap where a CTE referenced in an
10
8
  * UPDATE/DELETE `where` / `set` subquery previously failed to resolve, and giving a
11
9
  * CTE-name DML target its sibling CTEs.
10
+ *
11
+ * The WITH clause contributes CTE *definitions* (`cteNodes`), not scope symbols. A
12
+ * `cteName.column` symbol is published by `buildFrom`'s CTE branch, against the
13
+ * attribute ids the `CTEReferenceNode` for that FROM entry republishes. This used to
14
+ * also register `cteName.column` here, bound to the CTE **body's** attribute ids —
15
+ * ids no `CTEReferenceNode` ever publishes, so any reference resolving through them
16
+ * could only fail at runtime with "No row context found for column ...".
12
17
  */
13
18
  export function buildWithContext(ctx, stmt, parentCTEs = new Map()) {
14
19
  // Start with parent CTEs - either from parameter or from context
15
20
  const cteNodes = new Map(parentCTEs.size > 0 ? parentCTEs : (ctx.cteNodes ?? new Map()));
16
- let contextWithCTEs = ctx;
17
21
  if (stmt.withClause) {
18
- const newCteNodes = buildWithClause(ctx, stmt.withClause);
19
22
  // Merge parent CTEs with new ones (new ones take precedence)
20
- for (const [name, node] of newCteNodes) {
23
+ for (const [name, node] of buildWithClause(ctx, stmt.withClause)) {
21
24
  cteNodes.set(name, node);
22
25
  }
23
- // Create a new scope that includes the CTEs
24
- const cteScope = createCTEScope(cteNodes, ctx);
25
- contextWithCTEs = { ...ctx, scope: cteScope, cteNodes, cteReferenceCache: ctx.cteReferenceCache };
26
- }
27
- else if (cteNodes.size > 0) {
28
- // No WITH clause but we have parent CTEs, create scope for them
29
- const cteScope = createCTEScope(cteNodes, ctx);
30
- contextWithCTEs = { ...ctx, scope: cteScope, cteNodes, cteReferenceCache: ctx.cteReferenceCache };
31
26
  }
27
+ // The only contribution is the definition map; scope is left untouched.
28
+ const contextWithCTEs = cteNodes.size > 0 ? { ...ctx, cteNodes } : ctx;
32
29
  return { contextWithCTEs, cteNodes };
33
30
  }
34
- /**
35
- * Creates a scope that includes CTE references
36
- * CRITICAL: Uses stable input attribute IDs only, ignoring any projection output scopes
37
- * that might cause attribute ID collisions in correlated subqueries
38
- */
39
- function createCTEScope(cteNodes, ctx) {
40
- // Keep ParameterScope in the chain so parameters can be resolved in queries using CTEs
41
- const cteScope = new RegisteredScope(ctx.scope);
42
- // Register each CTE in the scope
43
- for (const [cteName, cteNode] of cteNodes) {
44
- // CRITICAL: Use only the stable input attributes from the CTE definition
45
- // Do NOT use any projection output attributes that might have fresh IDs
46
- const attributes = cteNode.getAttributes();
47
- const columnTypes = cteNode.getType().columns;
48
- // Only register columns that are stable input attributes
49
- // This prevents scope pollution from projection output attributes
50
- columnTypes.forEach((col, i) => {
51
- if (i < attributes.length) {
52
- const attr = attributes[i];
53
- // Register CTE columns with qualified names to avoid collisions
54
- const qualifiedColumnName = `${cteName}.${col.name.toLowerCase()}`;
55
- cteScope.registerSymbol(qualifiedColumnName, (exp, s) => new ColumnReferenceNode(s, exp, col.type, attr.id, i));
56
- }
57
- });
58
- }
59
- return cteScope;
60
- }
61
31
  //# sourceMappingURL=select-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-context.js","sourceRoot":"","sources":["../../../../src/planner/building/select-context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC/B,GAAoB,EACpB,IAA8C,EAC9C,aAAwC,IAAI,GAAG,EAAE;IAKjD,iEAAiE;IACjE,MAAM,QAAQ,GAA8B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IACpH,IAAI,eAAe,GAAG,GAAG,CAAC;IAE1B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,6DAA6D;QAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/C,eAAe,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;IACnG,CAAC;SAAM,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC9B,gEAAgE;QAChE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC/C,eAAe,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;IACnG,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CACtB,QAAmC,EACnC,GAAoB;IAEpB,uFAAuF;IACvF,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhD,iCAAiC;IACjC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC3C,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC;QAE9C,yDAAyD;QACzD,kEAAkE;QAClE,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3B,gEAAgE;gBAChE,MAAM,mBAAmB,GAAG,GAAG,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnE,QAAQ,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACvD,IAAI,mBAAmB,CAAC,CAAC,EAAE,GAAqB,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"select-context.js","sourceRoot":"","sources":["../../../../src/planner/building/select-context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC/B,GAAoB,EACpB,IAA8C,EAC9C,aAAwC,IAAI,GAAG,EAAE;IAKjD,iEAAiE;IACjE,MAAM,QAAQ,GAA8B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpH,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,6DAA6D;QAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;IACF,CAAC;IAED,wEAAwE;IACxE,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAEvE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type * as AST from '../../parser/ast.js';
2
- import { PlanNode, type RelationalPlanNode } from '../nodes/plan-node.js';
2
+ import { PlanNode, type Attribute, type RelationalPlanNode, type ScalarPlanNode } from '../nodes/plan-node.js';
3
3
  import type { PlanningContext } from '../planning-context.js';
4
+ import type { Scope } from '../scopes/scope.js';
4
5
  import type { CTEScopeNode } from '../nodes/cte-node.js';
5
6
  import { ValuesNode } from '../nodes/values-node.js';
6
7
  /**
@@ -43,4 +44,39 @@ export declare function buildValuesStmt(ctx: PlanningContext, stmt: AST.ValuesSt
43
44
  * @returns A relational plan node representing the FROM clause
44
45
  */
45
46
  export declare function buildFrom(fromClause: AST.FromClause, parentContext: PlanningContext, cteNodes?: Map<string, CTEScopeNode>): RelationalPlanNode;
47
+ /**
48
+ * Desugar `using (c1, c2, …)` into the `on l.c1 = r.c1 and l.c2 = r.c2 …` condition
49
+ * it is defined to mean, so a USING join is *the same plan* an equivalent ON join
50
+ * builds. Each pair goes through `buildComparison` — the same helper `buildExpression`
51
+ * uses for a spelled-out `=` — so everything hanging off a real comparison node
52
+ * applies to USING for free and cannot drift from the ON spelling:
53
+ *
54
+ * - cross-type coercion — a JSON column paired with a TEXT one compares structurally,
55
+ * an INTEGER paired with a TEXT one numerically (ticket
56
+ * `bug-using-join-skips-cross-type-coercion`; before the desugar USING compared
57
+ * raw storage classes and matched nothing).
58
+ * - `BinaryOpNode.generateType`'s collation-lattice validation — a `using (c)` over
59
+ * columns with conflicting explicit/declared collations raises the identical
60
+ * ambiguous-collation error as `l.c = r.c`, at plan time rather than only as the
61
+ * emitter's backstop. Both spellings resolve each pair through the SAME symmetric
62
+ * provenance lattice.
63
+ * - `extractEquiPairs` — hash/merge key selection, collation tagging and the
64
+ * semantic-ordering gate, all off the one extractor.
65
+ *
66
+ * A NATURAL join (not yet parsed) desugars to USING pairs and inherits all of this.
67
+ *
68
+ * Column references are built **from attributes**, not by resolving a synthesized
69
+ * qualified `AST.ColumnExpr` through the join scope: a USING column can be ambiguous
70
+ * by name within one side (`a join b using (k) join c using (k)` — the left side of
71
+ * the second join has two `k` columns). First-match-per-side by name is the pairing
72
+ * rule USING has always used here.
73
+ *
74
+ * NOTE: the nested-loop USING path used to resolve one comparator per column at emit
75
+ * time; it now evaluates a condition sub-program per row pair, like every ON join.
76
+ * Only USING joins that fall back to nested loop (cross-type pairs, existence-flag
77
+ * joins) pay this, and it is not measured. If a USING-heavy workload ever profiles
78
+ * slower, the fix belongs in the shared ON-condition evaluation path — not in a
79
+ * restored USING special case.
80
+ */
81
+ export declare function buildUsingCondition(usingColumns: readonly string[], leftAttrs: readonly Attribute[], rightAttrs: readonly Attribute[], scope: Scope): ScalarPlanNode;
46
82
  //# sourceMappingURL=select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAAuB,MAAM,uBAAuB,CAAC;AAG/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAe9D,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAMtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwBrD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,UAAU,GAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa;AACjD;;;;;GAKG;AACH,oBAAoB,GAAE,OAAc,GACnC,QAAQ,CA2OV;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU,GAClB,UAAU,CAQZ;AAsBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa,GAAG,kBAAkB,CA4QzJ"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG/G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAUhD,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,sBAAsB,CAAC;AAMtE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAwBrD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,UAAU,GAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa;AACjD;;;;;GAKG;AACH,oBAAoB,GAAE,OAAc,GACnC,QAAQ,CA2PV;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU,GAClB,UAAU,CAQZ;AA6BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa,GAAG,kBAAkB,CA6QzJ;AA6FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,KAAK,EAAE,KAAK,GACV,cAAc,CAchB"}
@@ -8,15 +8,16 @@ import { AliasedScope } from '../scopes/aliased.js';
8
8
  import { RegisteredScope } from '../scopes/registered.js';
9
9
  import { MultiScope } from '../scopes/multi.js';
10
10
  import { ShadowScope } from '../scopes/shadow.js';
11
+ import { EmptyScope } from '../scopes/empty.js';
11
12
  import { ProjectNode } from '../nodes/project-node.js';
12
- import { buildExpression } from './expression.js';
13
+ import { buildComparison, buildExpression } from './expression.js';
13
14
  import { FilterNode } from '../nodes/filter.js';
14
15
  import { buildTableFunctionCall } from './table-function.js';
15
16
  import { CTEReferenceNode } from '../nodes/cte-reference-node.js';
16
17
  import { JoinNode } from '../nodes/join-node.js';
17
- import { resolveComparisonCollation, collationConflictError } from '../analysis/comparison-collation.js';
18
18
  import { EXISTENCE_FLAG_TYPE } from '../nodes/join-utils.js';
19
19
  import { ColumnReferenceNode } from '../nodes/reference.js';
20
+ import { BinaryOpNode } from '../nodes/scalar.js';
20
21
  import { TEXT_TYPE } from '../../types/builtin-types.js';
21
22
  import { ValuesNode } from '../nodes/values-node.js';
22
23
  import { createLogger } from '../../common/logger.js';
@@ -74,6 +75,11 @@ preserveInputColumns = true) {
74
75
  throw new QuereusError('SELECT with multiple FROM sources (joins) not supported.', StatusCode.UNSUPPORTED, undefined, stmt.from[1].loc?.start.line, stmt.from[1].loc?.start.column);
75
76
  }
76
77
  // Phase 2: Create the main scope for this SELECT statement
78
+ // NOTE: the `|| ft.scope` fallback only fires for the FROM-less SingleRowNode, which
79
+ // buildFrom never registers. Every scope buildFrom does register is own-only (see
80
+ // registerColumnScope); a node's own `.scope` is the enclosing chain, so if this
81
+ // fallback ever starts firing for a real source it silently reinstates the chaining
82
+ // this ShadowScope exists to replace.
77
83
  const columnScopes = fromTables.map(ft => ctx.outputScopes.get(ft) || ft.scope).filter(Boolean);
78
84
  const selectScope = new ShadowScope([...columnScopes, contextWithCTEs.scope]);
79
85
  let selectContext = { ...contextWithCTEs, scope: selectScope };
@@ -105,11 +111,15 @@ preserveInputColumns = true) {
105
111
  // ORDER-BY-only aggregates; track it locally so the post-aggregate branch
106
112
  // is taken when those promote a non-aggregate query into an aggregate one.
107
113
  let hasAggregates = hasAggregatesInSelect;
108
- // Handle SELECT * separately
114
+ // Handle SELECT * separately. Keyed by the AST column so the aggregate path can
115
+ // expand each star back to *its own* columns — a select list may hold more than
116
+ // one star (`select a.*, b.* from a join b`).
117
+ const starProjectionsByColumn = new Map();
109
118
  for (const column of stmt.columns) {
110
119
  if (column.type === 'all') {
111
- const starProjections = buildStarProjections(column, input, selectScope);
112
- projections.push(...starProjections);
120
+ const expanded = buildStarProjections(column, input, selectScope);
121
+ starProjectionsByColumn.set(column, expanded);
122
+ projections.push(...expanded);
113
123
  }
114
124
  }
115
125
  // Add non-star projections
@@ -149,7 +159,7 @@ preserveInputColumns = true) {
149
159
  }
150
160
  // Build final projections if needed
151
161
  if (aggregateResult.needsFinalProjection && aggregateResult.aggregateNode && aggregateResult.groupByExpressions) {
152
- const finalProjections = buildFinalAggregateProjections(stmt, selectContext, aggregateResult.aggregateScope, aggregateResult.aggregateNode, aggregates, aggregateResult.groupByExpressions);
162
+ const finalProjections = buildFinalAggregateProjections(stmt, selectContext, aggregateResult.aggregateScope, aggregateResult.aggregateNode, aggregates, aggregateResult.groupByExpressions, starProjectionsByColumn);
153
163
  // When HAVING-only or ORDER-BY-only aggregates were added, don't preserve
154
164
  // input columns so they are stripped from the output (they exist only for
155
165
  // those clauses).
@@ -213,8 +223,14 @@ preserveInputColumns = true) {
213
223
  preAggregateSort = true;
214
224
  }
215
225
  }
216
- // Handle final projections for non-aggregate, non-window cases
217
- if (!hasAggregates && !hasWindowFunctions) {
226
+ // Handle final projections for non-aggregate, non-window cases.
227
+ // A GROUP BY with no aggregate functions anywhere still went through the
228
+ // aggregate phase (which built its own final projection against the
229
+ // AggregateNode output); re-running buildFinalProjections here would emit a
230
+ // second projection whose column references still point at *pre-aggregate*
231
+ // attributes, which the AggregateNode does not output.
232
+ const hasGrouping = Boolean(aggregateResult.aggregateScope);
233
+ if (!hasGrouping && !hasWindowFunctions) {
218
234
  const finalResult = buildFinalProjections(input, projections, selectScope, stmt, selectContext, preserveInputColumns, selectListAsts);
219
235
  input = finalResult.output;
220
236
  selectContext = finalResult.finalContext;
@@ -255,9 +271,17 @@ export function buildValuesStmt(ctx, stmt) {
255
271
  /**
256
272
  * Registers each column of a relational node as a symbol in a new scope,
257
273
  * wrapped with an AliasedScope for qualified name resolution.
274
+ *
275
+ * The scope is deliberately parented on {@link EmptyScope} — a FROM source's scope
276
+ * holds ONLY its own columns and answers "no" for anything else. The fallback to the
277
+ * enclosing query is composed exactly once by each consumer (`buildSelectStmt`'s
278
+ * `ShadowScope`, `buildJoin`'s ON-condition and LATERAL `ShadowScope`s). Chaining each
279
+ * source scope to the caller's scope instead would make `MultiScope`'s first-match reach
280
+ * the outer scope through peer #1 before peer #2 is ever consulted, so a join's own
281
+ * right-hand source loses name lookup to a same-named enclosing symbol.
258
282
  */
259
- function registerColumnScope(parentScope, node, scopeName, alias) {
260
- const registered = new RegisteredScope(parentScope);
283
+ function registerColumnScope(node, scopeName, alias) {
284
+ const registered = new RegisteredScope(EmptyScope.instance);
261
285
  const attributes = node.getAttributes();
262
286
  node.getType().columns.forEach((c, i) => {
263
287
  const attr = attributes[i];
@@ -297,7 +321,7 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
297
321
  internalRefNode = new AliasNode(parentContext.scope, cteNode, fromClause.alias.toLowerCase());
298
322
  }
299
323
  fromTable = internalRefNode;
300
- columnScope = registerColumnScope(parentContext.scope, fromTable, tableName, fromClause.alias?.toLowerCase() ?? tableName);
324
+ columnScope = registerColumnScope(fromTable, tableName, fromClause.alias?.toLowerCase() ?? tableName);
301
325
  }
302
326
  else {
303
327
  // Regular CTE reference - cache by CTE name + alias to ensure consistent attribute IDs
@@ -318,7 +342,7 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
318
342
  const attrs = cteRefNode.getAttributes();
319
343
  logger(`Created new CTE reference ${cacheKey}, attrs=[${attrs.map(a => a.id).join(',')}]`);
320
344
  }
321
- columnScope = registerColumnScope(parentContext.scope, cteRefNode, tableName, fromClause.alias?.toLowerCase() ?? tableName);
345
+ columnScope = registerColumnScope(cteRefNode, tableName, fromClause.alias?.toLowerCase() ?? tableName);
322
346
  fromTable = cteRefNode;
323
347
  }
324
348
  }
@@ -397,7 +421,7 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
397
421
  else {
398
422
  fromTable = viewSelectNode;
399
423
  }
400
- columnScope = registerColumnScope(parentContext.scope, fromTable, fromClause.table.name.toLowerCase(), fromClause.alias?.toLowerCase() ?? fromClause.table.name.toLowerCase());
424
+ columnScope = registerColumnScope(fromTable, fromClause.table.name.toLowerCase(), fromClause.alias?.toLowerCase() ?? fromClause.table.name.toLowerCase());
401
425
  }
402
426
  else if (maintainedTable) {
403
427
  // Maintained table (materialized view): resolves through the ORDINARY
@@ -428,7 +452,7 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
428
452
  tableNode = new AliasNode(parentContext.scope, tableNode, fromClause.alias.toLowerCase());
429
453
  }
430
454
  fromTable = tableNode;
431
- columnScope = registerColumnScope(parentContext.scope, fromTable, fromClause.table.name.toLowerCase(), fromClause.alias?.toLowerCase() ?? fromClause.table.name.toLowerCase());
455
+ columnScope = registerColumnScope(fromTable, fromClause.table.name.toLowerCase(), fromClause.alias?.toLowerCase() ?? fromClause.table.name.toLowerCase());
432
456
  }
433
457
  else {
434
458
  // Regular table
@@ -438,7 +462,7 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
438
462
  tableNode = new AliasNode(parentContext.scope, tableNode, fromClause.alias.toLowerCase());
439
463
  }
440
464
  fromTable = tableNode;
441
- columnScope = registerColumnScope(parentContext.scope, fromTable, fromClause.table.name.toLowerCase(), fromClause.alias?.toLowerCase() ?? fromClause.table.name.toLowerCase());
465
+ columnScope = registerColumnScope(fromTable, fromClause.table.name.toLowerCase(), fromClause.alias?.toLowerCase() ?? fromClause.table.name.toLowerCase());
442
466
  }
443
467
  }
444
468
  }
@@ -449,7 +473,7 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
449
473
  funcNode = new AliasNode(parentContext.scope, funcNode, fromClause.alias.toLowerCase());
450
474
  }
451
475
  fromTable = funcNode;
452
- columnScope = registerColumnScope(parentContext.scope, fromTable, '', fromClause.alias?.toLowerCase() ?? fromClause.name.name.toLowerCase());
476
+ columnScope = registerColumnScope(fromTable, '', fromClause.alias?.toLowerCase() ?? fromClause.name.name.toLowerCase());
453
477
  }
454
478
  else if (fromClause.type === 'subquerySource') {
455
479
  // Build the subquery body. SubquerySource now carries any QueryExpr;
@@ -485,8 +509,9 @@ export function buildFrom(fromClause, parentContext, cteNodes = new Map()) {
485
509
  fromTable = alias
486
510
  ? new AliasNode(parentContext.scope, subqueryNode, alias)
487
511
  : subqueryNode;
488
- // Create scope for subquery columns
489
- const subqueryScope = new RegisteredScope(parentContext.scope);
512
+ // Create scope for subquery columns. Own-only, parented on EmptyScope, for the
513
+ // same reason as registerColumnScope — see its doc comment.
514
+ const subqueryScope = new RegisteredScope(EmptyScope.instance);
490
515
  const subqueryAttributes = fromTable.getAttributes();
491
516
  // Use provided column names or infer from subquery
492
517
  const columnNames = fromClause.columns || fromTable.getType().columns.map(c => c.name);
@@ -542,24 +567,24 @@ function buildJoin(joinClause, parentContext, cteNodes) {
542
567
  }
543
568
  // Create a combined scope for the join that includes both left and right columns
544
569
  const combinedScope = new MultiScope([leftScope, rightScope]);
545
- // Create a new planning context with the combined scope for condition evaluation
570
+ // Context for building the ON condition: the join's own two peers first, then the
571
+ // enclosing query. Both peers are own-only scopes (see registerColumnScope), so
572
+ // neither can answer for the other, and everything they do not own — a correlated
573
+ // outer column, a bind parameter — must still resolve, one level later.
546
574
  const joinContext = {
547
575
  ...parentContext,
548
- scope: combinedScope
576
+ scope: new ShadowScope([combinedScope, parentContext.scope])
549
577
  };
550
578
  let condition;
551
579
  let usingColumns;
552
- // Handle ON condition
580
+ // ON and USING are mutually exclusive spellings of the same predicate (the parser
581
+ // accepts one or the other), and USING desugars into the ON condition it means.
553
582
  if (joinClause.condition) {
554
583
  condition = buildExpression(joinContext, joinClause.condition);
555
584
  }
556
- // Handle USING columns
557
- if (joinClause.columns) {
585
+ else if (joinClause.columns) {
558
586
  usingColumns = joinClause.columns;
559
- // Convert USING to ON condition: table1.col1 = table2.col1 AND table1.col2 = table2.col2 ...
560
- // For now, store the column names and let the emitter handle the condition
561
- // TODO: This could be improved by synthesizing the equality conditions here
562
- validateUsingCollations(usingColumns, leftNode, rightNode);
587
+ condition = buildUsingCondition(usingColumns, leftNode.getAttributes(), rightNode.getAttributes(), joinContext.scope);
563
588
  }
564
589
  // Existence (`exists … as`) flags: mint a stable attribute id per clause (once,
565
590
  // here — so it survives `withChildren` rebuilds) and expose each by its `as`
@@ -587,31 +612,67 @@ function buildJoin(joinClause, parentContext, cteNodes) {
587
612
  return joinNode;
588
613
  }
589
614
  /**
590
- * Plan-time USING (and, when supported, NATURAL) collation-conflict check. USING
591
- * column pairs never materialize as a `BinaryOpNode`, so `BinaryOpNode.generateType`'s
592
- * lattice validation — which covers spelled-out ON-clause equi-joins — never sees
593
- * them, yet every USING comparator (the nested-loop join's, and the merge/bloom
594
- * key collations once `equi-pair-extractor` admits the pair) resolves each pair
595
- * through the SAME provenance lattice. Run the resolver here so a `using (c)` over
596
- * columns with conflicting explicit/declared collations raises the identical
597
- * ambiguous-collation error as the equivalent `l.c = r.c`, at plan time rather
598
- * than only as the emitter's loud backstop. A NATURAL join (not yet parsed)
599
- * desugars to USING pairs and inherits this check for free.
615
+ * Desugar `using (c1, c2, …)` into the `on l.c1 = r.c1 and l.c2 = r.c2 …` condition
616
+ * it is defined to mean, so a USING join is *the same plan* an equivalent ON join
617
+ * builds. Each pair goes through `buildComparison` — the same helper `buildExpression`
618
+ * uses for a spelled-out `=` — so everything hanging off a real comparison node
619
+ * applies to USING for free and cannot drift from the ON spelling:
620
+ *
621
+ * - cross-type coercion — a JSON column paired with a TEXT one compares structurally,
622
+ * an INTEGER paired with a TEXT one numerically (ticket
623
+ * `bug-using-join-skips-cross-type-coercion`; before the desugar USING compared
624
+ * raw storage classes and matched nothing).
625
+ * - `BinaryOpNode.generateType`'s collation-lattice validation — a `using (c)` over
626
+ * columns with conflicting explicit/declared collations raises the identical
627
+ * ambiguous-collation error as `l.c = r.c`, at plan time rather than only as the
628
+ * emitter's backstop. Both spellings resolve each pair through the SAME symmetric
629
+ * provenance lattice.
630
+ * - `extractEquiPairs` — hash/merge key selection, collation tagging and the
631
+ * semantic-ordering gate, all off the one extractor.
632
+ *
633
+ * A NATURAL join (not yet parsed) desugars to USING pairs and inherits all of this.
634
+ *
635
+ * Column references are built **from attributes**, not by resolving a synthesized
636
+ * qualified `AST.ColumnExpr` through the join scope: a USING column can be ambiguous
637
+ * by name within one side (`a join b using (k) join c using (k)` — the left side of
638
+ * the second join has two `k` columns). First-match-per-side by name is the pairing
639
+ * rule USING has always used here.
640
+ *
641
+ * NOTE: the nested-loop USING path used to resolve one comparator per column at emit
642
+ * time; it now evaluates a condition sub-program per row pair, like every ON join.
643
+ * Only USING joins that fall back to nested loop (cross-type pairs, existence-flag
644
+ * joins) pay this, and it is not measured. If a USING-heavy workload ever profiles
645
+ * slower, the fix belongs in the shared ON-condition evaluation path — not in a
646
+ * restored USING special case.
647
+ */
648
+ export function buildUsingCondition(usingColumns, leftAttrs, rightAttrs, scope) {
649
+ if (usingColumns.length === 0) {
650
+ throw new QuereusError('USING clause requires at least one column', StatusCode.ERROR);
651
+ }
652
+ const conjuncts = usingColumns.map(colName => buildUsingColumnEquality(colName, leftAttrs, rightAttrs, scope));
653
+ return conjuncts.reduce((acc, cur) => new BinaryOpNode(acc.scope, { type: 'binary', operator: 'AND', left: acc.expression, right: cur.expression }, acc, cur));
654
+ }
655
+ /** One USING column's `l.c = r.c` conjunct, built exactly as the ON spelling builds it. */
656
+ function buildUsingColumnEquality(colName, leftAttrs, rightAttrs, scope) {
657
+ const left = buildUsingOperand(colName, leftAttrs, 'left', scope);
658
+ const right = buildUsingOperand(colName, rightAttrs, 'right', scope);
659
+ return buildComparison(scope, { type: 'binary', operator: '=', left: left.expression, right: right.expression }, left, right);
660
+ }
661
+ /**
662
+ * One side's operand for a USING column: a reference to the FIRST attribute of that
663
+ * name on that side (see the pairing rule on {@link buildUsingCondition}), qualified
664
+ * by its relation so the synthesized AST reads like the ON spelling.
600
665
  */
601
- function validateUsingCollations(usingColumns, leftNode, rightNode) {
602
- const leftAttrs = leftNode.getAttributes();
603
- const rightAttrs = rightNode.getAttributes();
604
- for (const colName of usingColumns) {
605
- const lower = colName.toLowerCase();
606
- const leftAttr = leftAttrs.find(a => a.name.toLowerCase() === lower);
607
- const rightAttr = rightAttrs.find(a => a.name.toLowerCase() === lower);
608
- // A USING column missing from a side is a name-resolution error surfaced
609
- // elsewhere (the join's column scope); skip rather than mask it here.
610
- if (!leftAttr || !rightAttr)
611
- continue;
612
- const resolution = resolveComparisonCollation(leftAttr.type, rightAttr.type);
613
- if (resolution.kind === 'conflict')
614
- throw collationConflictError(resolution);
666
+ function buildUsingOperand(colName, attrs, side, scope) {
667
+ const lower = colName.toLowerCase();
668
+ const index = attrs.findIndex(a => a.name.toLowerCase() === lower);
669
+ if (index === -1) {
670
+ throw new QuereusError(`USING column not found on ${side} side of join: ${colName}`, StatusCode.ERROR);
615
671
  }
672
+ const attr = attrs[index];
673
+ const expr = attr.relationName
674
+ ? { type: 'column', name: attr.name, table: attr.relationName }
675
+ : { type: 'column', name: attr.name };
676
+ return new ColumnReferenceNode(scope, expr, attr.type, attr.id, index);
616
677
  }
617
678
  //# sourceMappingURL=select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/planner/building/select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../../src/planner/building/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Per-conjunct evaluation-cost classification for WHERE/HAVING conjunct
3
+ * ordering (`rule-filter-conjunct-ordering`).
4
+ *
5
+ * Raw `getTotalCost()` alone misorders conjuncts: a tableless scalar subquery
6
+ * (`(select f())`) costs barely more than a modulo and *less* than a three-term
7
+ * arithmetic expression, yet opens a whole sub-program per row. So conjuncts
8
+ * are ranked on a coarse structural tier first, with subtree cost only as the
9
+ * within-tier tiebreak.
10
+ *
11
+ * Do NOT re-export from cost/index.ts: nodes/filter.ts imports cost/index.ts,
12
+ * and this module imports plan-node + characteristics, so re-exporting here
13
+ * would create an import cycle.
14
+ */
15
+ import { type ScalarPlanNode } from '../nodes/plan-node.js';
16
+ /** How expensive a WHERE conjunct is to evaluate once, coarsest signal first. */
17
+ export declare enum ConjunctCostTier {
18
+ /** Pure, deterministic scalar arithmetic / comparison. */
19
+ Pure = 0,
20
+ /** Contains a non-deterministic (volatile) scalar — e.g. a volatile UDF. */
21
+ Volatile = 1,
22
+ /** Contains a relational descendant — a scalar / IN / EXISTS subquery. */
23
+ Subquery = 2
24
+ }
25
+ export interface ConjunctCost {
26
+ tier: ConjunctCostTier;
27
+ /** Whole-subtree cost of the conjunct (`node.getTotalCost()`). */
28
+ subtreeCost: number;
29
+ }
30
+ /**
31
+ * Classify one conjunct: walk its subtree once (iterative worklist, matching
32
+ * `PlanNodeCharacteristics.subtreeHasSideEffects`) and report the HIGHEST tier
33
+ * found — `Subquery` if any strict descendant is relational, else `Volatile`
34
+ * if any node is non-deterministic, else `Pure`.
35
+ */
36
+ export declare function classifyConjunctCost(node: ScalarPlanNode): ConjunctCost;
37
+ /**
38
+ * (tier, subtreeCost) lexicographic. Ties resolve to 0 — callers keep source
39
+ * order for ties via a stable sort.
40
+ */
41
+ export declare function compareConjunctCost(a: ConjunctCost, b: ConjunctCost): number;
42
+ /**
43
+ * Selectivity assigned to a conjunct the statistics could not estimate, when at
44
+ * least one sibling conjunct WAS estimated. This is `DEFAULT_FILTER_SELECTIVITY`
45
+ * (0.5) — the engine's one "nobody knows" fraction, the same one
46
+ * `FilterNode.estimatedRows` falls back to — so "no information" is the neutral
47
+ * position: a measured-stronger conjunct (s < 0.5) sorts ahead of unknowns, a
48
+ * measured-weaker one (s > 0.5) behind. With the benefit term constant across a
49
+ * group of unknowns, descending benefit/cost degenerates to ascending cost, so
50
+ * unknowns keep their cost order among themselves.
51
+ */
52
+ export declare const UNKNOWN_CONJUNCT_SELECTIVITY = 0.5;
53
+ /**
54
+ * Divide-by-zero guard only. `PlanNode.estimatedCost` defaults to 0.01 and the
55
+ * leaf scalar nodes cost 1, so no real conjunct has zero subtree cost; the floor
56
+ * keeps a zero from turning the ratio into Infinity. It cannot repair a NaN
57
+ * cost — but `getTotalCost()` sums finite per-node costs, so none arises.
58
+ */
59
+ export declare const MIN_CONJUNCT_COST = 1e-9;
60
+ export interface ConjunctRank extends ConjunctCost {
61
+ /**
62
+ * Estimated fraction of rows the conjunct keeps, from the stats provider's
63
+ * `statsOnlySelectivity` family; {@link UNKNOWN_CONJUNCT_SELECTIVITY} when
64
+ * unknown. Clamped to [0, 1] at comparison time, so an out-of-range provider
65
+ * value cannot produce a negative benefit.
66
+ */
67
+ selectivity: number;
68
+ }
69
+ /**
70
+ * (tier asc, benefit/cost desc, subtreeCost asc) lexicographic.
71
+ *
72
+ * The tier stays the primary key: raw cost is not comparable ACROSS tiers (see
73
+ * the module doc-comment), so a measured selectivity must never bet against an
74
+ * unmeasured per-row sub-program cost — a strongly-selective `Subquery`-tier
75
+ * conjunct cannot jump ahead of a weakly-selective `Pure` one. Within a tier the
76
+ * conjuncts are the same structural class, cost is comparable, and the ratio is
77
+ * the textbook rank. Ratio ties fall through to plain cost (never a raw ratio
78
+ * difference — a sub-ULP difference must not collapse two distinct keys into a
79
+ * tie); full ties resolve to 0 and callers keep source order via a stable sort.
80
+ */
81
+ export declare function compareConjunctRank(a: ConjunctRank, b: ConjunctRank): number;
82
+ //# sourceMappingURL=conjunct-cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conjunct-cost.d.ts","sourceRoot":"","sources":["../../../../src/planner/cost/conjunct-cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA8B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIxF,iFAAiF;AACjF,oBAAY,gBAAgB;IAC3B,0DAA0D;IAC1D,IAAI,IAAI;IACR,4EAA4E;IAC5E,QAAQ,IAAI;IACZ,0EAA0E;IAC1E,QAAQ,IAAI;CACZ;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAmBvE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAG5E;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,MAA6B,CAAC;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,MAAM,WAAW,YAAa,SAAQ,YAAY;IACjD;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAM5E"}