@quereus/quereus 4.5.0 → 4.7.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 (818) hide show
  1. package/README.md +5 -4
  2. package/dist/src/common/errors.d.ts +17 -0
  3. package/dist/src/common/errors.d.ts.map +1 -1
  4. package/dist/src/common/errors.js +21 -0
  5. package/dist/src/common/errors.js.map +1 -1
  6. package/dist/src/core/database-assertions.d.ts +4 -3
  7. package/dist/src/core/database-assertions.d.ts.map +1 -1
  8. package/dist/src/core/database-assertions.js +44 -14
  9. package/dist/src/core/database-assertions.js.map +1 -1
  10. package/dist/src/core/database-events.d.ts +161 -1
  11. package/dist/src/core/database-events.d.ts.map +1 -1
  12. package/dist/src/core/database-events.js +307 -5
  13. package/dist/src/core/database-events.js.map +1 -1
  14. package/dist/src/core/database-internal.d.ts +5 -2
  15. package/dist/src/core/database-internal.d.ts.map +1 -1
  16. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.js +33 -4
  18. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  19. package/dist/src/core/database-materialized-views-plans.d.ts +12 -2
  20. package/dist/src/core/database-materialized-views-plans.d.ts.map +1 -1
  21. package/dist/src/core/database-materialized-views.d.ts +46 -0
  22. package/dist/src/core/database-materialized-views.d.ts.map +1 -1
  23. package/dist/src/core/database-materialized-views.js +75 -4
  24. package/dist/src/core/database-materialized-views.js.map +1 -1
  25. package/dist/src/core/database-transaction.d.ts +9 -0
  26. package/dist/src/core/database-transaction.d.ts.map +1 -1
  27. package/dist/src/core/database-transaction.js +9 -0
  28. package/dist/src/core/database-transaction.js.map +1 -1
  29. package/dist/src/core/database.d.ts +16 -2
  30. package/dist/src/core/database.d.ts.map +1 -1
  31. package/dist/src/core/database.js +56 -15
  32. package/dist/src/core/database.js.map +1 -1
  33. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  34. package/dist/src/core/derived-row-validator.js +7 -1
  35. package/dist/src/core/derived-row-validator.js.map +1 -1
  36. package/dist/src/core/statement.d.ts.map +1 -1
  37. package/dist/src/core/statement.js +15 -5
  38. package/dist/src/core/statement.js.map +1 -1
  39. package/dist/src/emit/ast-stringify.d.ts +18 -2
  40. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  41. package/dist/src/emit/ast-stringify.js +22 -4
  42. package/dist/src/emit/ast-stringify.js.map +1 -1
  43. package/dist/src/func/builtins/aggregate.js +11 -11
  44. package/dist/src/func/builtins/aggregate.js.map +1 -1
  45. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  46. package/dist/src/func/builtins/builtin-window-functions.js +15 -85
  47. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  48. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  49. package/dist/src/func/builtins/conversion.js +10 -9
  50. package/dist/src/func/builtins/conversion.js.map +1 -1
  51. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  52. package/dist/src/func/builtins/datetime.js +28 -10
  53. package/dist/src/func/builtins/datetime.js.map +1 -1
  54. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  55. package/dist/src/func/builtins/explain.js +19 -5
  56. package/dist/src/func/builtins/explain.js.map +1 -1
  57. package/dist/src/func/builtins/json.d.ts.map +1 -1
  58. package/dist/src/func/builtins/json.js +23 -17
  59. package/dist/src/func/builtins/json.js.map +1 -1
  60. package/dist/src/func/builtins/mutation.js +2 -2
  61. package/dist/src/func/builtins/mutation.js.map +1 -1
  62. package/dist/src/func/builtins/return-types.d.ts +327 -0
  63. package/dist/src/func/builtins/return-types.d.ts.map +1 -0
  64. package/dist/src/func/builtins/return-types.js +43 -0
  65. package/dist/src/func/builtins/return-types.js.map +1 -0
  66. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  67. package/dist/src/func/builtins/scalar.js +150 -79
  68. package/dist/src/func/builtins/scalar.js.map +1 -1
  69. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  70. package/dist/src/func/builtins/schema.js +43 -8
  71. package/dist/src/func/builtins/schema.js.map +1 -1
  72. package/dist/src/func/builtins/string.d.ts.map +1 -1
  73. package/dist/src/func/builtins/string.js +4 -2
  74. package/dist/src/func/builtins/string.js.map +1 -1
  75. package/dist/src/func/builtins/timespan.d.ts +3 -0
  76. package/dist/src/func/builtins/timespan.d.ts.map +1 -1
  77. package/dist/src/func/builtins/timespan.js +15 -11
  78. package/dist/src/func/builtins/timespan.js.map +1 -1
  79. package/dist/src/func/registration.d.ts +35 -1
  80. package/dist/src/func/registration.d.ts.map +1 -1
  81. package/dist/src/func/registration.js +235 -41
  82. package/dist/src/func/registration.js.map +1 -1
  83. package/dist/src/index.d.ts +14 -7
  84. package/dist/src/index.d.ts.map +1 -1
  85. package/dist/src/index.js +15 -6
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/parser/ast.d.ts +58 -1
  88. package/dist/src/parser/ast.d.ts.map +1 -1
  89. package/dist/src/parser/parser.d.ts +46 -0
  90. package/dist/src/parser/parser.d.ts.map +1 -1
  91. package/dist/src/parser/parser.js +161 -45
  92. package/dist/src/parser/parser.js.map +1 -1
  93. package/dist/src/parser/utils.d.ts +13 -1
  94. package/dist/src/parser/utils.d.ts.map +1 -1
  95. package/dist/src/parser/utils.js +14 -0
  96. package/dist/src/parser/utils.js.map +1 -1
  97. package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -1
  98. package/dist/src/planner/analysis/assertion-classifier.js +7 -2
  99. package/dist/src/planner/analysis/assertion-classifier.js.map +1 -1
  100. package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -1
  101. package/dist/src/planner/analysis/assertion-hoist-cache.js +5 -0
  102. package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -1
  103. package/dist/src/planner/analysis/change-scope.d.ts +11 -3
  104. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  105. package/dist/src/planner/analysis/change-scope.js +5 -4
  106. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  107. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  108. package/dist/src/planner/analysis/check-extraction.js +37 -4
  109. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  110. package/dist/src/planner/analysis/comparison-collation.d.ts +20 -22
  111. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  112. package/dist/src/planner/analysis/comparison-collation.js +29 -26
  113. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  114. package/dist/src/planner/analysis/constraint-extractor.d.ts +0 -7
  115. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  116. package/dist/src/planner/analysis/constraint-extractor.js +59 -59
  117. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  118. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  119. package/dist/src/planner/analysis/coverage-prover.js +13 -5
  120. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  121. package/dist/src/planner/analysis/equi-correlation.d.ts +6 -1
  122. package/dist/src/planner/analysis/equi-correlation.d.ts.map +1 -1
  123. package/dist/src/planner/analysis/equi-correlation.js +8 -1
  124. package/dist/src/planner/analysis/equi-correlation.js.map +1 -1
  125. package/dist/src/planner/analysis/predicate-dependencies.d.ts +34 -0
  126. package/dist/src/planner/analysis/predicate-dependencies.d.ts.map +1 -0
  127. package/dist/src/planner/analysis/predicate-dependencies.js +60 -0
  128. package/dist/src/planner/analysis/predicate-dependencies.js.map +1 -0
  129. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +1 -1
  130. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -1
  131. package/dist/src/planner/analysis/query-rewrite-matcher.js +0 -26
  132. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -1
  133. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  134. package/dist/src/planner/building/alter-table.js +117 -43
  135. package/dist/src/planner/building/alter-table.js.map +1 -1
  136. package/dist/src/planner/building/coercion.d.ts +21 -45
  137. package/dist/src/planner/building/coercion.d.ts.map +1 -1
  138. package/dist/src/planner/building/coercion.js +42 -91
  139. package/dist/src/planner/building/coercion.js.map +1 -1
  140. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  141. package/dist/src/planner/building/constraint-builder.js +9 -5
  142. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  143. package/dist/src/planner/building/create-assertion.d.ts.map +1 -1
  144. package/dist/src/planner/building/create-assertion.js +72 -1
  145. package/dist/src/planner/building/create-assertion.js.map +1 -1
  146. package/dist/src/planner/building/create-view.d.ts +6 -1
  147. package/dist/src/planner/building/create-view.d.ts.map +1 -1
  148. package/dist/src/planner/building/create-view.js +12 -3
  149. package/dist/src/planner/building/create-view.js.map +1 -1
  150. package/dist/src/planner/building/ddl.d.ts.map +1 -1
  151. package/dist/src/planner/building/ddl.js +6 -2
  152. package/dist/src/planner/building/ddl.js.map +1 -1
  153. package/dist/src/planner/building/delete.d.ts.map +1 -1
  154. package/dist/src/planner/building/delete.js +23 -10
  155. package/dist/src/planner/building/delete.js.map +1 -1
  156. package/dist/src/planner/building/dml-target.d.ts.map +1 -1
  157. package/dist/src/planner/building/dml-target.js +4 -0
  158. package/dist/src/planner/building/dml-target.js.map +1 -1
  159. package/dist/src/planner/building/drop-assertion.d.ts.map +1 -1
  160. package/dist/src/planner/building/drop-assertion.js +3 -1
  161. package/dist/src/planner/building/drop-assertion.js.map +1 -1
  162. package/dist/src/planner/building/expression.d.ts +17 -0
  163. package/dist/src/planner/building/expression.d.ts.map +1 -1
  164. package/dist/src/planner/building/expression.js +28 -17
  165. package/dist/src/planner/building/expression.js.map +1 -1
  166. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  167. package/dist/src/planner/building/foreign-key-builder.js +7 -5
  168. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  169. package/dist/src/planner/building/function-call.d.ts +35 -0
  170. package/dist/src/planner/building/function-call.d.ts.map +1 -1
  171. package/dist/src/planner/building/function-call.js +60 -42
  172. package/dist/src/planner/building/function-call.js.map +1 -1
  173. package/dist/src/planner/building/insert.d.ts.map +1 -1
  174. package/dist/src/planner/building/insert.js +185 -48
  175. package/dist/src/planner/building/insert.js.map +1 -1
  176. package/dist/src/planner/building/materialized-view.d.ts.map +1 -1
  177. package/dist/src/planner/building/materialized-view.js +3 -1
  178. package/dist/src/planner/building/materialized-view.js.map +1 -1
  179. package/dist/src/planner/building/schema-authored-context.d.ts +69 -0
  180. package/dist/src/planner/building/schema-authored-context.d.ts.map +1 -0
  181. package/dist/src/planner/building/schema-authored-context.js +75 -0
  182. package/dist/src/planner/building/schema-authored-context.js.map +1 -0
  183. package/dist/src/planner/building/schema-resolution.d.ts.map +1 -1
  184. package/dist/src/planner/building/schema-resolution.js +7 -4
  185. package/dist/src/planner/building/schema-resolution.js.map +1 -1
  186. package/dist/src/planner/building/select-aggregates.d.ts +188 -3
  187. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  188. package/dist/src/planner/building/select-aggregates.js +449 -65
  189. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  190. package/dist/src/planner/building/select-compound.js +2 -2
  191. package/dist/src/planner/building/select-compound.js.map +1 -1
  192. package/dist/src/planner/building/select-context.d.ts +98 -0
  193. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  194. package/dist/src/planner/building/select-context.js +120 -37
  195. package/dist/src/planner/building/select-context.js.map +1 -1
  196. package/dist/src/planner/building/select-modifiers.d.ts +10 -3
  197. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  198. package/dist/src/planner/building/select-modifiers.js +29 -8
  199. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  200. package/dist/src/planner/building/select-ordinal.d.ts +64 -19
  201. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  202. package/dist/src/planner/building/select-ordinal.js +79 -30
  203. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  204. package/dist/src/planner/building/select-projections.d.ts +1 -1
  205. package/dist/src/planner/building/select-projections.d.ts.map +1 -1
  206. package/dist/src/planner/building/select-projections.js +18 -11
  207. package/dist/src/planner/building/select-projections.js.map +1 -1
  208. package/dist/src/planner/building/select-window.d.ts +13 -3
  209. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  210. package/dist/src/planner/building/select-window.js +142 -37
  211. package/dist/src/planner/building/select-window.js.map +1 -1
  212. package/dist/src/planner/building/select.d.ts +37 -1
  213. package/dist/src/planner/building/select.d.ts.map +1 -1
  214. package/dist/src/planner/building/select.js +240 -109
  215. package/dist/src/planner/building/select.js.map +1 -1
  216. package/dist/src/planner/building/update.d.ts.map +1 -1
  217. package/dist/src/planner/building/update.js +27 -13
  218. package/dist/src/planner/building/update.js.map +1 -1
  219. package/dist/src/planner/building/view-mutation-builder.d.ts +1 -1
  220. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  221. package/dist/src/planner/building/view-mutation-builder.js +102 -8
  222. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  223. package/dist/src/planner/building/with.d.ts.map +1 -1
  224. package/dist/src/planner/building/with.js +34 -4
  225. package/dist/src/planner/building/with.js.map +1 -1
  226. package/dist/src/planner/cache/correlation-detector.d.ts +15 -0
  227. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  228. package/dist/src/planner/cache/correlation-detector.js +26 -0
  229. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  230. package/dist/src/planner/cache/materialization-advisory.d.ts +7 -0
  231. package/dist/src/planner/cache/materialization-advisory.d.ts.map +1 -1
  232. package/dist/src/planner/cache/materialization-advisory.js +12 -3
  233. package/dist/src/planner/cache/materialization-advisory.js.map +1 -1
  234. package/dist/src/planner/cost/conjunct-cost.d.ts +40 -0
  235. package/dist/src/planner/cost/conjunct-cost.d.ts.map +1 -1
  236. package/dist/src/planner/cost/conjunct-cost.js +45 -0
  237. package/dist/src/planner/cost/conjunct-cost.js.map +1 -1
  238. package/dist/src/planner/cost/index.d.ts +10 -0
  239. package/dist/src/planner/cost/index.d.ts.map +1 -1
  240. package/dist/src/planner/cost/index.js +15 -0
  241. package/dist/src/planner/cost/index.js.map +1 -1
  242. package/dist/src/planner/framework/characteristics.d.ts +9 -0
  243. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  244. package/dist/src/planner/framework/characteristics.js.map +1 -1
  245. package/dist/src/planner/framework/pass.d.ts +2 -0
  246. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  247. package/dist/src/planner/framework/pass.js +15 -0
  248. package/dist/src/planner/framework/pass.js.map +1 -1
  249. package/dist/src/planner/mutation/backward-body.d.ts.map +1 -1
  250. package/dist/src/planner/mutation/backward-body.js +4 -1
  251. package/dist/src/planner/mutation/backward-body.js.map +1 -1
  252. package/dist/src/planner/mutation/body-context.d.ts +23 -0
  253. package/dist/src/planner/mutation/body-context.d.ts.map +1 -0
  254. package/dist/src/planner/mutation/body-context.js +26 -0
  255. package/dist/src/planner/mutation/body-context.js.map +1 -0
  256. package/dist/src/planner/mutation/cte-flatten.js +15 -2
  257. package/dist/src/planner/mutation/cte-flatten.js.map +1 -1
  258. package/dist/src/planner/mutation/decomposition.d.ts +8 -0
  259. package/dist/src/planner/mutation/decomposition.d.ts.map +1 -1
  260. package/dist/src/planner/mutation/decomposition.js +8 -3
  261. package/dist/src/planner/mutation/decomposition.js.map +1 -1
  262. package/dist/src/planner/mutation/lens-enforcement.js +1 -1
  263. package/dist/src/planner/mutation/multi-source.d.ts +7 -0
  264. package/dist/src/planner/mutation/multi-source.d.ts.map +1 -1
  265. package/dist/src/planner/mutation/multi-source.js +5 -0
  266. package/dist/src/planner/mutation/multi-source.js.map +1 -1
  267. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
  268. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
  269. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
  270. package/dist/src/planner/mutation/scope-transform.d.ts +32 -0
  271. package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -1
  272. package/dist/src/planner/mutation/scope-transform.js +181 -33
  273. package/dist/src/planner/mutation/scope-transform.js.map +1 -1
  274. package/dist/src/planner/mutation/set-op.d.ts.map +1 -1
  275. package/dist/src/planner/mutation/set-op.js +66 -16
  276. package/dist/src/planner/mutation/set-op.js.map +1 -1
  277. package/dist/src/planner/mutation/single-source.d.ts.map +1 -1
  278. package/dist/src/planner/mutation/single-source.js +100 -24
  279. package/dist/src/planner/mutation/single-source.js.map +1 -1
  280. package/dist/src/planner/nodes/add-constraint-node.d.ts +15 -1
  281. package/dist/src/planner/nodes/add-constraint-node.d.ts.map +1 -1
  282. package/dist/src/planner/nodes/add-constraint-node.js +10 -1
  283. package/dist/src/planner/nodes/add-constraint-node.js.map +1 -1
  284. package/dist/src/planner/nodes/aggregate-node.d.ts +15 -0
  285. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  286. package/dist/src/planner/nodes/aggregate-node.js +32 -17
  287. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  288. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  289. package/dist/src/planner/nodes/alias-node.js +2 -1
  290. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  291. package/dist/src/planner/nodes/alter-table-node.d.ts +51 -10
  292. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  293. package/dist/src/planner/nodes/alter-table-node.js +49 -2
  294. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  295. package/dist/src/planner/nodes/asof-scan-node.d.ts.map +1 -1
  296. package/dist/src/planner/nodes/asof-scan-node.js +4 -1
  297. package/dist/src/planner/nodes/asof-scan-node.js.map +1 -1
  298. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -1
  299. package/dist/src/planner/nodes/asserted-keys-node.js +2 -1
  300. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -1
  301. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  302. package/dist/src/planner/nodes/bloom-join-node.js +8 -3
  303. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  304. package/dist/src/planner/nodes/cache-node.d.ts.map +1 -1
  305. package/dist/src/planner/nodes/cache-node.js +2 -1
  306. package/dist/src/planner/nodes/cache-node.js.map +1 -1
  307. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  308. package/dist/src/planner/nodes/constraint-check-node.js +17 -19
  309. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  310. package/dist/src/planner/nodes/create-assertion-node.d.ts +2 -1
  311. package/dist/src/planner/nodes/create-assertion-node.d.ts.map +1 -1
  312. package/dist/src/planner/nodes/create-assertion-node.js +5 -2
  313. package/dist/src/planner/nodes/create-assertion-node.js.map +1 -1
  314. package/dist/src/planner/nodes/cte-node.d.ts +19 -9
  315. package/dist/src/planner/nodes/cte-node.d.ts.map +1 -1
  316. package/dist/src/planner/nodes/cte-node.js +25 -9
  317. package/dist/src/planner/nodes/cte-node.js.map +1 -1
  318. package/dist/src/planner/nodes/delete-node.d.ts +20 -2
  319. package/dist/src/planner/nodes/delete-node.d.ts.map +1 -1
  320. package/dist/src/planner/nodes/delete-node.js +11 -2
  321. package/dist/src/planner/nodes/delete-node.js.map +1 -1
  322. package/dist/src/planner/nodes/distinct-node.d.ts +6 -0
  323. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  324. package/dist/src/planner/nodes/distinct-node.js +10 -2
  325. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  326. package/dist/src/planner/nodes/dml-executor-node.d.ts +58 -1
  327. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  328. package/dist/src/planner/nodes/dml-executor-node.js +107 -15
  329. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  330. package/dist/src/planner/nodes/drop-assertion-node.d.ts +2 -1
  331. package/dist/src/planner/nodes/drop-assertion-node.d.ts.map +1 -1
  332. package/dist/src/planner/nodes/drop-assertion-node.js +5 -2
  333. package/dist/src/planner/nodes/drop-assertion-node.js.map +1 -1
  334. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  335. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -1
  336. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  337. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +5 -0
  338. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  339. package/dist/src/planner/nodes/fanout-lookup-join-node.js +13 -6
  340. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  341. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  342. package/dist/src/planner/nodes/filter.js +18 -5
  343. package/dist/src/planner/nodes/filter.js.map +1 -1
  344. package/dist/src/planner/nodes/hash-aggregate.d.ts +1 -0
  345. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  346. package/dist/src/planner/nodes/hash-aggregate.js +21 -16
  347. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  348. package/dist/src/planner/nodes/insert-node.d.ts +19 -2
  349. package/dist/src/planner/nodes/insert-node.d.ts.map +1 -1
  350. package/dist/src/planner/nodes/insert-node.js +10 -2
  351. package/dist/src/planner/nodes/insert-node.js.map +1 -1
  352. package/dist/src/planner/nodes/join-node.d.ts +20 -1
  353. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  354. package/dist/src/planner/nodes/join-node.js +30 -9
  355. package/dist/src/planner/nodes/join-node.js.map +1 -1
  356. package/dist/src/planner/nodes/join-utils.d.ts +21 -0
  357. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  358. package/dist/src/planner/nodes/join-utils.js +26 -0
  359. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  360. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts +42 -10
  361. package/dist/src/planner/nodes/key-set-semi-join-node.d.ts.map +1 -1
  362. package/dist/src/planner/nodes/key-set-semi-join-node.js +90 -17
  363. package/dist/src/planner/nodes/key-set-semi-join-node.js.map +1 -1
  364. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +5 -0
  365. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -1
  366. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +2 -1
  367. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -1
  368. package/dist/src/planner/nodes/limit-offset.d.ts +6 -0
  369. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  370. package/dist/src/planner/nodes/limit-offset.js +10 -2
  371. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  372. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  373. package/dist/src/planner/nodes/merge-join-node.js +8 -3
  374. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  375. package/dist/src/planner/nodes/ordinal-slice-node.d.ts +5 -0
  376. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  377. package/dist/src/planner/nodes/ordinal-slice-node.js +9 -2
  378. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  379. package/dist/src/planner/nodes/plan-node.d.ts +29 -0
  380. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  381. package/dist/src/planner/nodes/plan-node.js +12 -0
  382. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  383. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  384. package/dist/src/planner/nodes/project-node.js +18 -36
  385. package/dist/src/planner/nodes/project-node.js.map +1 -1
  386. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  387. package/dist/src/planner/nodes/reference.js +3 -2
  388. package/dist/src/planner/nodes/reference.js.map +1 -1
  389. package/dist/src/planner/nodes/retrieve-node.d.ts +16 -2
  390. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  391. package/dist/src/planner/nodes/retrieve-node.js +10 -2
  392. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  393. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  394. package/dist/src/planner/nodes/returning-node.js +13 -32
  395. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  396. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  397. package/dist/src/planner/nodes/scalar.js +5 -18
  398. package/dist/src/planner/nodes/scalar.js.map +1 -1
  399. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  400. package/dist/src/planner/nodes/sort.js +3 -1
  401. package/dist/src/planner/nodes/sort.js.map +1 -1
  402. package/dist/src/planner/nodes/stream-aggregate.d.ts +1 -0
  403. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  404. package/dist/src/planner/nodes/stream-aggregate.js +22 -20
  405. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  406. package/dist/src/planner/nodes/table-access-nodes.d.ts +89 -1
  407. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  408. package/dist/src/planner/nodes/table-access-nodes.js +69 -2
  409. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  410. package/dist/src/planner/nodes/update-node.d.ts +19 -2
  411. package/dist/src/planner/nodes/update-node.d.ts.map +1 -1
  412. package/dist/src/planner/nodes/update-node.js +10 -2
  413. package/dist/src/planner/nodes/update-node.js.map +1 -1
  414. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  415. package/dist/src/planner/nodes/window-function.js +8 -0
  416. package/dist/src/planner/nodes/window-function.js.map +1 -1
  417. package/dist/src/planner/nodes/window-node.d.ts +1 -1
  418. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  419. package/dist/src/planner/nodes/window-node.js +3 -1
  420. package/dist/src/planner/nodes/window-node.js.map +1 -1
  421. package/dist/src/planner/optimizer.d.ts +27 -1
  422. package/dist/src/planner/optimizer.d.ts.map +1 -1
  423. package/dist/src/planner/optimizer.js +130 -10
  424. package/dist/src/planner/optimizer.js.map +1 -1
  425. package/dist/src/planner/planning-context.d.ts +24 -0
  426. package/dist/src/planner/planning-context.d.ts.map +1 -1
  427. package/dist/src/planner/planning-context.js.map +1 -1
  428. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts +78 -20
  429. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  430. package/dist/src/planner/rules/access/rule-key-set-seek.js +296 -135
  431. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  432. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
  433. package/dist/src/planner/rules/access/rule-monotonic-range-access.js +2 -2
  434. package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
  435. package/dist/src/planner/rules/access/rule-select-access-path.d.ts +30 -1
  436. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  437. package/dist/src/planner/rules/access/rule-select-access-path.js +70 -5
  438. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  439. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +7 -4
  440. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -1
  441. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +39 -5
  442. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
  443. package/dist/src/planner/rules/cache/rule-cte-optimization.d.ts.map +1 -1
  444. package/dist/src/planner/rules/cache/rule-cte-optimization.js +15 -2
  445. package/dist/src/planner/rules/cache/rule-cte-optimization.js.map +1 -1
  446. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +10 -3
  447. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -1
  448. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.d.ts.map +1 -1
  449. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js +6 -4
  450. package/dist/src/planner/rules/cache/rule-nested-loop-right-cache.js.map +1 -1
  451. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +5 -31
  452. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  453. package/dist/src/planner/rules/join/equi-pair-extractor.js +4 -44
  454. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  455. package/dist/src/planner/rules/join/index-nested-loop.d.ts +49 -0
  456. package/dist/src/planner/rules/join/index-nested-loop.d.ts.map +1 -0
  457. package/dist/src/planner/rules/join/index-nested-loop.js +291 -0
  458. package/dist/src/planner/rules/join/index-nested-loop.js.map +1 -0
  459. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +8 -8
  460. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +4 -0
  461. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  462. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +50 -15
  463. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  464. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +6 -0
  465. package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
  466. package/dist/src/planner/rules/join/rule-join-elimination.js +25 -9
  467. package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
  468. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts +7 -0
  469. package/dist/src/planner/rules/join/rule-join-key-inference.d.ts.map +1 -1
  470. package/dist/src/planner/rules/join/rule-join-key-inference.js +23 -11
  471. package/dist/src/planner/rules/join/rule-join-key-inference.js.map +1 -1
  472. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts +10 -4
  473. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  474. package/dist/src/planner/rules/join/rule-join-physical-selection.js +115 -29
  475. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  476. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts +2 -0
  477. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  478. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +18 -4
  479. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  480. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts +2 -2
  481. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -1
  482. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +19 -22
  483. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
  484. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts +21 -8
  485. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.d.ts.map +1 -1
  486. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js +70 -14
  487. package/dist/src/planner/rules/predicate/rule-filter-conjunct-ordering.js.map +1 -1
  488. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts +56 -17
  489. package/dist/src/planner/rules/predicate/rule-filter-selectivity.d.ts.map +1 -1
  490. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js +103 -154
  491. package/dist/src/planner/rules/predicate/rule-filter-selectivity.js.map +1 -1
  492. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts +76 -0
  493. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.d.ts.map +1 -0
  494. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js +208 -0
  495. package/dist/src/planner/rules/predicate/rule-join-predicate-pushdown.js.map +1 -0
  496. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts +14 -11
  497. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  498. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +21 -85
  499. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  500. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts +7 -1
  501. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.d.ts.map +1 -1
  502. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +18 -22
  503. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  504. package/dist/src/planner/rules/shared/access-leaf.d.ts +52 -0
  505. package/dist/src/planner/rules/shared/access-leaf.d.ts.map +1 -0
  506. package/dist/src/planner/rules/shared/access-leaf.js +95 -0
  507. package/dist/src/planner/rules/shared/access-leaf.js.map +1 -0
  508. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  509. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +17 -7
  510. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  511. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts +3 -1
  512. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  513. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +26 -9
  514. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  515. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  516. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +69 -11
  517. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  518. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts +17 -7
  519. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  520. package/dist/src/planner/rules/window/rule-monotonic-window.js +124 -87
  521. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  522. package/dist/src/planner/scopes/aliased.d.ts.map +1 -1
  523. package/dist/src/planner/scopes/aliased.js +6 -0
  524. package/dist/src/planner/scopes/aliased.js.map +1 -1
  525. package/dist/src/planner/stats/catalog-stats.d.ts +44 -13
  526. package/dist/src/planner/stats/catalog-stats.d.ts.map +1 -1
  527. package/dist/src/planner/stats/catalog-stats.js +137 -61
  528. package/dist/src/planner/stats/catalog-stats.js.map +1 -1
  529. package/dist/src/planner/stats/conjunct-selectivity.d.ts +48 -0
  530. package/dist/src/planner/stats/conjunct-selectivity.d.ts.map +1 -0
  531. package/dist/src/planner/stats/conjunct-selectivity.js +168 -0
  532. package/dist/src/planner/stats/conjunct-selectivity.js.map +1 -0
  533. package/dist/src/planner/stats/index.d.ts +22 -3
  534. package/dist/src/planner/stats/index.d.ts.map +1 -1
  535. package/dist/src/planner/stats/index.js.map +1 -1
  536. package/dist/src/planner/stats/table-cardinality.d.ts +28 -0
  537. package/dist/src/planner/stats/table-cardinality.d.ts.map +1 -0
  538. package/dist/src/planner/stats/table-cardinality.js +29 -0
  539. package/dist/src/planner/stats/table-cardinality.js.map +1 -0
  540. package/dist/src/planner/stored-body-context.d.ts +57 -0
  541. package/dist/src/planner/stored-body-context.d.ts.map +1 -0
  542. package/dist/src/planner/stored-body-context.js +64 -0
  543. package/dist/src/planner/stored-body-context.js.map +1 -0
  544. package/dist/src/planner/util/column-origins.d.ts +29 -8
  545. package/dist/src/planner/util/column-origins.d.ts.map +1 -1
  546. package/dist/src/planner/util/column-origins.js +74 -14
  547. package/dist/src/planner/util/column-origins.js.map +1 -1
  548. package/dist/src/planner/util/fd-utils.d.ts +32 -8
  549. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  550. package/dist/src/planner/util/fd-utils.js +46 -9
  551. package/dist/src/planner/util/fd-utils.js.map +1 -1
  552. package/dist/src/planner/util/ind-utils.d.ts +66 -19
  553. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  554. package/dist/src/planner/util/ind-utils.js +91 -21
  555. package/dist/src/planner/util/ind-utils.js.map +1 -1
  556. package/dist/src/planner/util/key-utils.d.ts +36 -3
  557. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  558. package/dist/src/planner/util/key-utils.js +57 -7
  559. package/dist/src/planner/util/key-utils.js.map +1 -1
  560. package/dist/src/planner/util/output-names.d.ts +12 -0
  561. package/dist/src/planner/util/output-names.d.ts.map +1 -0
  562. package/dist/src/planner/util/output-names.js +20 -0
  563. package/dist/src/planner/util/output-names.js.map +1 -0
  564. package/dist/src/planner/util/row-estimates.d.ts +39 -0
  565. package/dist/src/planner/util/row-estimates.d.ts.map +1 -0
  566. package/dist/src/planner/util/row-estimates.js +68 -0
  567. package/dist/src/planner/util/row-estimates.js.map +1 -0
  568. package/dist/src/planner/util/row-population.d.ts +42 -0
  569. package/dist/src/planner/util/row-population.d.ts.map +1 -0
  570. package/dist/src/planner/util/row-population.js +71 -0
  571. package/dist/src/planner/util/row-population.js.map +1 -0
  572. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  573. package/dist/src/runtime/deferred-constraint-queue.js +3 -2
  574. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  575. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  576. package/dist/src/runtime/emit/add-constraint.js +60 -6
  577. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  578. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  579. package/dist/src/runtime/emit/aggregate.js +4 -4
  580. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  581. package/dist/src/runtime/emit/alter-schema-event.d.ts +97 -0
  582. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -0
  583. package/dist/src/runtime/emit/alter-schema-event.js +87 -0
  584. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -0
  585. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  586. package/dist/src/runtime/emit/alter-table.js +582 -236
  587. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  588. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  589. package/dist/src/runtime/emit/analyze.js +50 -7
  590. package/dist/src/runtime/emit/analyze.js.map +1 -1
  591. package/dist/src/runtime/emit/assertion-drop-guard.d.ts +37 -0
  592. package/dist/src/runtime/emit/assertion-drop-guard.d.ts.map +1 -0
  593. package/dist/src/runtime/emit/assertion-drop-guard.js +59 -0
  594. package/dist/src/runtime/emit/assertion-drop-guard.js.map +1 -0
  595. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts +33 -0
  596. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -0
  597. package/dist/src/runtime/emit/assertion-rename-helpers.js +124 -0
  598. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -0
  599. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  600. package/dist/src/runtime/emit/cast.js +4 -19
  601. package/dist/src/runtime/emit/cast.js.map +1 -1
  602. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  603. package/dist/src/runtime/emit/constraint-check.js +10 -227
  604. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  605. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  606. package/dist/src/runtime/emit/create-assertion.js +31 -14
  607. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  608. package/dist/src/runtime/emit/cte.d.ts.map +1 -1
  609. package/dist/src/runtime/emit/cte.js +11 -6
  610. package/dist/src/runtime/emit/cte.js.map +1 -1
  611. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  612. package/dist/src/runtime/emit/dml-executor.js +233 -28
  613. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  614. package/dist/src/runtime/emit/drop-assertion.js +8 -8
  615. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  616. package/dist/src/runtime/emit/drop-column-guards.d.ts +151 -0
  617. package/dist/src/runtime/emit/drop-column-guards.d.ts.map +1 -0
  618. package/dist/src/runtime/emit/drop-column-guards.js +230 -0
  619. package/dist/src/runtime/emit/drop-column-guards.js.map +1 -0
  620. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  621. package/dist/src/runtime/emit/drop-index.js +4 -3
  622. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  623. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  624. package/dist/src/runtime/emit/drop-table.js +6 -0
  625. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  626. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  627. package/dist/src/runtime/emit/drop-view.js +4 -0
  628. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  629. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  630. package/dist/src/runtime/emit/hash-aggregate.js +2 -2
  631. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  632. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  633. package/dist/src/runtime/emit/join.js +8 -67
  634. package/dist/src/runtime/emit/join.js.map +1 -1
  635. package/dist/src/runtime/emit/key-set-semi-join.d.ts.map +1 -1
  636. package/dist/src/runtime/emit/key-set-semi-join.js +11 -3
  637. package/dist/src/runtime/emit/key-set-semi-join.js.map +1 -1
  638. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +4 -4
  639. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  640. package/dist/src/runtime/emit/materialized-view-helpers.js +34 -22
  641. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  642. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  643. package/dist/src/runtime/emit/materialized-view.js +7 -2
  644. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  645. package/dist/src/runtime/emit/operand-comparator.d.ts +30 -0
  646. package/dist/src/runtime/emit/operand-comparator.d.ts.map +1 -1
  647. package/dist/src/runtime/emit/operand-comparator.js +34 -0
  648. package/dist/src/runtime/emit/operand-comparator.js.map +1 -1
  649. package/dist/src/runtime/emit/recursive-cte.d.ts.map +1 -1
  650. package/dist/src/runtime/emit/recursive-cte.js +4 -5
  651. package/dist/src/runtime/emit/recursive-cte.js.map +1 -1
  652. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  653. package/dist/src/runtime/emit/schema-declarative.js +30 -0
  654. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  655. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  656. package/dist/src/runtime/emit/subquery.js +153 -52
  657. package/dist/src/runtime/emit/subquery.js.map +1 -1
  658. package/dist/src/runtime/emit/update.d.ts.map +1 -1
  659. package/dist/src/runtime/emit/update.js +18 -6
  660. package/dist/src/runtime/emit/update.js.map +1 -1
  661. package/dist/src/runtime/emit/window.js +36 -23
  662. package/dist/src/runtime/emit/window.js.map +1 -1
  663. package/dist/src/runtime/row-constraints.d.ts +85 -0
  664. package/dist/src/runtime/row-constraints.d.ts.map +1 -0
  665. package/dist/src/runtime/row-constraints.js +239 -0
  666. package/dist/src/runtime/row-constraints.js.map +1 -0
  667. package/dist/src/runtime/types.d.ts +8 -11
  668. package/dist/src/runtime/types.d.ts.map +1 -1
  669. package/dist/src/runtime/types.js.map +1 -1
  670. package/dist/src/schema/assertion.d.ts +14 -1
  671. package/dist/src/schema/assertion.d.ts.map +1 -1
  672. package/dist/src/schema/assertion.js +14 -1
  673. package/dist/src/schema/assertion.js.map +1 -1
  674. package/dist/src/schema/catalog-persistability.d.ts +19 -16
  675. package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
  676. package/dist/src/schema/catalog-persistability.js +92 -20
  677. package/dist/src/schema/catalog-persistability.js.map +1 -1
  678. package/dist/src/schema/catalog.d.ts +73 -2
  679. package/dist/src/schema/catalog.d.ts.map +1 -1
  680. package/dist/src/schema/catalog.js +220 -39
  681. package/dist/src/schema/catalog.js.map +1 -1
  682. package/dist/src/schema/column-source-resolver.d.ts +18 -0
  683. package/dist/src/schema/column-source-resolver.d.ts.map +1 -0
  684. package/dist/src/schema/column-source-resolver.js +22 -0
  685. package/dist/src/schema/column-source-resolver.js.map +1 -0
  686. package/dist/src/schema/column.d.ts +26 -3
  687. package/dist/src/schema/column.d.ts.map +1 -1
  688. package/dist/src/schema/column.js.map +1 -1
  689. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  690. package/dist/src/schema/constraint-builder.js +7 -1
  691. package/dist/src/schema/constraint-builder.js.map +1 -1
  692. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  693. package/dist/src/schema/ddl-generator.js +27 -6
  694. package/dist/src/schema/ddl-generator.js.map +1 -1
  695. package/dist/src/schema/function.d.ts +32 -1
  696. package/dist/src/schema/function.d.ts.map +1 -1
  697. package/dist/src/schema/function.js +10 -2
  698. package/dist/src/schema/function.js.map +1 -1
  699. package/dist/src/schema/lens-compiler.d.ts.map +1 -1
  700. package/dist/src/schema/lens-compiler.js +203 -51
  701. package/dist/src/schema/lens-compiler.js.map +1 -1
  702. package/dist/src/schema/lens-prover.d.ts +2 -3
  703. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  704. package/dist/src/schema/lens-prover.js +19 -11
  705. package/dist/src/schema/lens-prover.js.map +1 -1
  706. package/dist/src/schema/manager.d.ts +115 -20
  707. package/dist/src/schema/manager.d.ts.map +1 -1
  708. package/dist/src/schema/manager.js +202 -70
  709. package/dist/src/schema/manager.js.map +1 -1
  710. package/dist/src/schema/rename-rewriter.d.ts +142 -0
  711. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  712. package/dist/src/schema/rename-rewriter.js +254 -9
  713. package/dist/src/schema/rename-rewriter.js.map +1 -1
  714. package/dist/src/schema/reserved-tags.d.ts +1 -1
  715. package/dist/src/schema/reserved-tags.d.ts.map +1 -1
  716. package/dist/src/schema/reserved-tags.js +4 -3
  717. package/dist/src/schema/reserved-tags.js.map +1 -1
  718. package/dist/src/schema/schema-differ.d.ts +16 -0
  719. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  720. package/dist/src/schema/schema-differ.js +225 -38
  721. package/dist/src/schema/schema-differ.js.map +1 -1
  722. package/dist/src/schema/table.d.ts +149 -1
  723. package/dist/src/schema/table.d.ts.map +1 -1
  724. package/dist/src/schema/table.js +248 -1
  725. package/dist/src/schema/table.js.map +1 -1
  726. package/dist/src/schema/unique-enforcement.d.ts +5 -3
  727. package/dist/src/schema/unique-enforcement.d.ts.map +1 -1
  728. package/dist/src/schema/unique-enforcement.js +5 -3
  729. package/dist/src/schema/unique-enforcement.js.map +1 -1
  730. package/dist/src/schema/view.d.ts +11 -0
  731. package/dist/src/schema/view.d.ts.map +1 -1
  732. package/dist/src/schema/view.js +12 -0
  733. package/dist/src/schema/view.js.map +1 -1
  734. package/dist/src/types/builtin-types.d.ts +54 -0
  735. package/dist/src/types/builtin-types.d.ts.map +1 -1
  736. package/dist/src/types/builtin-types.js +123 -34
  737. package/dist/src/types/builtin-types.js.map +1 -1
  738. package/dist/src/types/cast-semantics.d.ts +42 -0
  739. package/dist/src/types/cast-semantics.d.ts.map +1 -1
  740. package/dist/src/types/cast-semantics.js +64 -0
  741. package/dist/src/types/cast-semantics.js.map +1 -1
  742. package/dist/src/types/comparison-coercion.d.ts +101 -0
  743. package/dist/src/types/comparison-coercion.d.ts.map +1 -0
  744. package/dist/src/types/comparison-coercion.js +162 -0
  745. package/dist/src/types/comparison-coercion.js.map +1 -0
  746. package/dist/src/types/index.d.ts +2 -2
  747. package/dist/src/types/index.d.ts.map +1 -1
  748. package/dist/src/types/index.js +2 -2
  749. package/dist/src/types/index.js.map +1 -1
  750. package/dist/src/types/logical-type.d.ts +7 -0
  751. package/dist/src/types/logical-type.d.ts.map +1 -1
  752. package/dist/src/types/logical-type.js.map +1 -1
  753. package/dist/src/types/validation.d.ts +56 -0
  754. package/dist/src/types/validation.d.ts.map +1 -1
  755. package/dist/src/types/validation.js +68 -0
  756. package/dist/src/types/validation.js.map +1 -1
  757. package/dist/src/util/{working-table-iterable.d.ts → array-row-iterable.d.ts} +6 -6
  758. package/dist/src/util/array-row-iterable.d.ts.map +1 -0
  759. package/dist/src/util/{working-table-iterable.js → array-row-iterable.js} +6 -6
  760. package/dist/src/util/array-row-iterable.js.map +1 -0
  761. package/dist/src/util/coercion.d.ts +8 -0
  762. package/dist/src/util/coercion.d.ts.map +1 -1
  763. package/dist/src/util/coercion.js +8 -0
  764. package/dist/src/util/coercion.js.map +1 -1
  765. package/dist/src/util/comparison.d.ts +16 -3
  766. package/dist/src/util/comparison.d.ts.map +1 -1
  767. package/dist/src/util/comparison.js +21 -5
  768. package/dist/src/util/comparison.js.map +1 -1
  769. package/dist/src/util/key-serializer.d.ts +46 -0
  770. package/dist/src/util/key-serializer.d.ts.map +1 -1
  771. package/dist/src/util/key-serializer.js +47 -0
  772. package/dist/src/util/key-serializer.js.map +1 -1
  773. package/dist/src/util/value-set.d.ts +21 -0
  774. package/dist/src/util/value-set.d.ts.map +1 -0
  775. package/dist/src/util/value-set.js +22 -0
  776. package/dist/src/util/value-set.js.map +1 -0
  777. package/dist/src/vtab/capabilities.d.ts +1 -1
  778. package/dist/src/vtab/events.d.ts +8 -1
  779. package/dist/src/vtab/events.d.ts.map +1 -1
  780. package/dist/src/vtab/events.js.map +1 -1
  781. package/dist/src/vtab/manifest.d.ts +15 -0
  782. package/dist/src/vtab/manifest.d.ts.map +1 -1
  783. package/dist/src/vtab/memory/layer/alter-column.d.ts +147 -0
  784. package/dist/src/vtab/memory/layer/alter-column.d.ts.map +1 -0
  785. package/dist/src/vtab/memory/layer/alter-column.js +214 -0
  786. package/dist/src/vtab/memory/layer/alter-column.js.map +1 -0
  787. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  788. package/dist/src/vtab/memory/layer/base.js +4 -3
  789. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  790. package/dist/src/vtab/memory/layer/interface.d.ts +2 -2
  791. package/dist/src/vtab/memory/layer/interface.d.ts.map +1 -1
  792. package/dist/src/vtab/memory/layer/manager.d.ts +176 -25
  793. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  794. package/dist/src/vtab/memory/layer/manager.js +569 -558
  795. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  796. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  797. package/dist/src/vtab/memory/layer/scan-layer.js +32 -5
  798. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  799. package/dist/src/vtab/memory/layer/transaction.d.ts +101 -15
  800. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  801. package/dist/src/vtab/memory/layer/transaction.js +133 -45
  802. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  803. package/dist/src/vtab/memory/module.d.ts +16 -1
  804. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  805. package/dist/src/vtab/memory/module.js +64 -3
  806. package/dist/src/vtab/memory/module.js.map +1 -1
  807. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  808. package/dist/src/vtab/memory/table.js +11 -6
  809. package/dist/src/vtab/memory/table.js.map +1 -1
  810. package/dist/src/vtab/module.d.ts +77 -23
  811. package/dist/src/vtab/module.d.ts.map +1 -1
  812. package/dist/src/vtab/table.d.ts +9 -2
  813. package/dist/src/vtab/table.d.ts.map +1 -1
  814. package/dist/src/vtab/table.js +1 -1
  815. package/dist/src/vtab/table.js.map +1 -1
  816. package/package.json +3 -3
  817. package/dist/src/util/working-table-iterable.d.ts.map +0 -1
  818. package/dist/src/util/working-table-iterable.js.map +0 -1
@@ -4,8 +4,24 @@
4
4
  */
5
5
  import type { ScalarPlanNode } from '../nodes/plan-node.js';
6
6
  import type { TableSchema } from '../../schema/table.js';
7
+ /**
8
+ * Resolves the attribute id of a column reference appearing in a predicate to the
9
+ * name of the base-table column whose statistics describe it.
10
+ *
11
+ * Returns undefined when the attribute was minted above the base table (a computed
12
+ * projection, an aggregate or window output, a set-operation output) — such a column
13
+ * has no base-table statistics, whatever it happens to be named.
14
+ */
15
+ export type ColumnStatsResolver = (attributeId: number) => string | undefined;
7
16
  /**
8
17
  * Statistics provider interface for optimizer
18
+ *
19
+ * The `resolve` parameter on the selectivity family identifies a predicate's columns
20
+ * by attribute identity rather than by the name in their AST. A caller holding a plan
21
+ * tree MUST pass one: without it a provider falls back to the syntactic name, and a
22
+ * computed column aliased to a base column's name silently borrows that column's
23
+ * statistics. It stays optional only for callers with no plan context (direct unit
24
+ * tests over hand-built nodes).
9
25
  */
10
26
  export interface StatsProvider {
11
27
  /**
@@ -18,9 +34,10 @@ export interface StatsProvider {
18
34
  * Get selectivity estimate for a predicate on a table
19
35
  * @param table Table schema
20
36
  * @param predicate Predicate expression
37
+ * @param resolve Attribute id → base-column name; see {@link ColumnStatsResolver}
21
38
  * @returns Selectivity factor (0.0 to 1.0), or undefined if unknown
22
39
  */
23
- selectivity(table: TableSchema, predicate: ScalarPlanNode): number | undefined;
40
+ selectivity(table: TableSchema, predicate: ScalarPlanNode, resolve?: ColumnStatsResolver): number | undefined;
24
41
  /**
25
42
  * Selectivity derived from REAL statistics only, with no heuristic fallback.
26
43
  *
@@ -33,17 +50,19 @@ export interface StatsProvider {
33
50
  *
34
51
  * @param table Table schema
35
52
  * @param predicate Predicate expression
53
+ * @param resolve Attribute id → base-column name; see {@link ColumnStatsResolver}
36
54
  * @returns Selectivity factor (0.0 to 1.0), or undefined if real statistics cannot answer
37
55
  */
38
- statsOnlySelectivity?(table: TableSchema, predicate: ScalarPlanNode): number | undefined;
56
+ statsOnlySelectivity?(table: TableSchema, predicate: ScalarPlanNode, resolve?: ColumnStatsResolver): number | undefined;
39
57
  /**
40
58
  * Get join selectivity estimate
41
59
  * @param leftTable Left table schema
42
60
  * @param rightTable Right table schema
43
61
  * @param joinCondition Join condition
62
+ * @param resolve Attribute id → base-column name; see {@link ColumnStatsResolver}
44
63
  * @returns Join selectivity factor, or undefined if unknown
45
64
  */
46
- joinSelectivity?(leftTable: TableSchema, rightTable: TableSchema, joinCondition: ScalarPlanNode): number | undefined;
65
+ joinSelectivity?(leftTable: TableSchema, rightTable: TableSchema, joinCondition: ScalarPlanNode, resolve?: ColumnStatsResolver): number | undefined;
47
66
  /**
48
67
  * Get number of distinct values for a column
49
68
  * @param table Table schema
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAElD;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;IAE/E;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;IAEzF;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;IAErH;;;;;OAKG;IACH,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE5E;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;CACxG;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAEtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,gBAAgB,GAAE,MAAa,EAC/B,kBAAkB,GAAE,MAAY;IAMlD,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAQjD,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAO9E,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAWpH,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAU1E,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAQtG,OAAO,CAAC,4BAA4B;CAmBpC;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,oBAA2B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,aAAa,CAWf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAAC;IAE9G;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAAC;IAExH;;;;;;;OAOG;IACH,eAAe,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,SAAS,CAAC;IAEpJ;;;;;OAKG;IACH,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAE5E;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;CACxG;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAEtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBADlB,gBAAgB,GAAE,MAAa,EAC/B,kBAAkB,GAAE,MAAY;IAMlD,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAQjD,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAO9E,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAWpH,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAU1E,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS;IAQtG,OAAO,CAAC,4BAA4B;CAmBpC;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,oBAA2B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,aAAa,CAWf"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/planner/stats/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/planner/stats/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Shared base-table row-count helper.
3
+ *
4
+ * Statistics-first: prefer the `ANALYZE`-collected `rowCount` over the static
5
+ * `TableSchema.estimatedRows` field (which `SchemaManager` hardcodes to 0 at
6
+ * CREATE TABLE and never updates). `undefined` means "nobody knows" and must
7
+ * stay `undefined` — callers apply their own fallback (e.g. NaiveStatsProvider's
8
+ * default of 1000); folding that default in here would change every
9
+ * un-analyzed table's cardinality.
10
+ *
11
+ * `TableReferenceNode.estimatedRows` and `CatalogStatsProvider.tableRows` both
12
+ * call this so the logical/physical estimate and the stats-provider estimate
13
+ * cannot drift apart.
14
+ *
15
+ * NOTE: `rowCount` is a snapshot from the last `ANALYZE` — rows written
16
+ * afterwards are invisible until the next one.
17
+ *
18
+ * NOTE: a real 0 (analyzed, empty table) is distinct from `undefined`, but the
19
+ * `estimatedRows || default` spellings in `rule-select-access-path`,
20
+ * `rule-grow-retrieve` and `IndexSeekNode.computePhysical` collapse the two and
21
+ * substitute their default — so an analyzed empty table reaches
22
+ * `getBestAccessPlan` as "unknown" (1000) while a SeqScan over it reports 0.
23
+ * Harmless today (any plan over 0 rows is cheap); switch those to `??` if an
24
+ * empty-table plan ever costs out wrong.
25
+ */
26
+ import type { TableSchema } from '../../schema/table.js';
27
+ export declare function catalogRowCount(table: TableSchema): number | undefined;
28
+ //# sourceMappingURL=table-cardinality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-cardinality.d.ts","sourceRoot":"","sources":["../../../../src/planner/stats/table-cardinality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAEtE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared base-table row-count helper.
3
+ *
4
+ * Statistics-first: prefer the `ANALYZE`-collected `rowCount` over the static
5
+ * `TableSchema.estimatedRows` field (which `SchemaManager` hardcodes to 0 at
6
+ * CREATE TABLE and never updates). `undefined` means "nobody knows" and must
7
+ * stay `undefined` — callers apply their own fallback (e.g. NaiveStatsProvider's
8
+ * default of 1000); folding that default in here would change every
9
+ * un-analyzed table's cardinality.
10
+ *
11
+ * `TableReferenceNode.estimatedRows` and `CatalogStatsProvider.tableRows` both
12
+ * call this so the logical/physical estimate and the stats-provider estimate
13
+ * cannot drift apart.
14
+ *
15
+ * NOTE: `rowCount` is a snapshot from the last `ANALYZE` — rows written
16
+ * afterwards are invisible until the next one.
17
+ *
18
+ * NOTE: a real 0 (analyzed, empty table) is distinct from `undefined`, but the
19
+ * `estimatedRows || default` spellings in `rule-select-access-path`,
20
+ * `rule-grow-retrieve` and `IndexSeekNode.computePhysical` collapse the two and
21
+ * substitute their default — so an analyzed empty table reaches
22
+ * `getBestAccessPlan` as "unknown" (1000) while a SeqScan over it reports 0.
23
+ * Harmless today (any plan over 0 rows is cheap); switch those to `??` if an
24
+ * empty-table plan ever costs out wrong.
25
+ */
26
+ export function catalogRowCount(table) {
27
+ return table.statistics?.rowCount ?? table.estimatedRows;
28
+ }
29
+ //# sourceMappingURL=table-cardinality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-cardinality.js","sourceRoot":"","sources":["../../../../src/planner/stats/table-cardinality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,MAAM,UAAU,eAAe,CAAC,KAAkB;IACjD,OAAO,KAAK,CAAC,UAAU,EAAE,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { PlanningContext } from './planning-context.js';
2
+ /**
3
+ * The planning context ANY stored body (view / materialized-view derivation) plans under,
4
+ * on either the read or the write path. Isolates the whole naming environment the caller
5
+ * could otherwise inject into the body, so a stored body binds the same objects on every
6
+ * reference:
7
+ *
8
+ * - `schemaPath` → the object's own home path — the database default schema-resolution
9
+ * order rooted at `schemaName` ({@link import('../core/database.js').Database._homeSchemaPath}),
10
+ * independent of the referencing statement's search path. A body that declares its own
11
+ * `with schema` path overrides this: on the read path its top-level `SelectStmt.schemaPath`
12
+ * applies right after this call; on the write path `building/select.ts` applies the same
13
+ * path carried on the fragment's marker. That override is deliberately NOT folded in here
14
+ * — this function takes only a schema name and has no access to the body AST;
15
+ * - `cteNodes` → cleared, so a caller `with` clause whose name matches a body source
16
+ * cannot shadow it. The body's OWN leading `with` clause still resolves — it is built
17
+ * by `buildWithContext` from the body statement, not inherited. Clearing here is what
18
+ * closes the write path: `select-context.ts` falls back to `ctx.cteNodes` whenever the
19
+ * explicit `parentCTEs` argument is empty, so passing an empty map is not sufficient.
20
+ * - `cteReferenceCache` → cleared, so the body's own CTE references get fresh
21
+ * `CTEReferenceNode`s. The cache is keyed by bare `cteName:alias`, so a caller CTE and
22
+ * a body-local CTE that share a name would otherwise collide on the same entry and the
23
+ * body would read the caller's relation.
24
+ * - `storedBodyOf` → `schemaName`, marking this context AS that body's home environment.
25
+ * A write through a view is not executed as the body plan — it is *lowered* into a
26
+ * base-table INSERT/UPDATE/DELETE, and definition-derived fragments copied into that
27
+ * lowered statement are planned on the CALLER's context. Such a fragment carries a
28
+ * {@link import('../parser/ast.js').StoredBodyEnv} marker instead, and
29
+ * `building/select.ts` re-enters the home environment through this function when it
30
+ * meets one. `storedBodyOf` is what makes that marker inert while the body itself is
31
+ * being planned here (the context already IS the home environment), so the body's own
32
+ * `with` clause survives.
33
+ *
34
+ * Callers that plan a body derived from the caller's own statement (an ephemeral write
35
+ * target, a rewritten base op) must NOT use this — see `bodyPlanningContext` in
36
+ * `mutation/body-context.ts`, which guards the ephemeral case and delegates here otherwise.
37
+ *
38
+ * The OTHER kind of stored, schema-authored SQL — a column `DEFAULT`, a generated-column
39
+ * expression, a `CHECK` constraint, a synthesized foreign-key probe — is built INLINE in
40
+ * the caller's statement rather than re-entered as its own plan, so it keeps the caller's
41
+ * scope and never sets the `storedBodyOf` marker; it clears the CTE namespace and narrows
42
+ * the schema path more strictly than here (the owning table's schema ONLY, with no
43
+ * default-path fallback). See the sibling
44
+ * {@link import('./building/schema-authored-context.js').schemaAuthoredContext}.
45
+ *
46
+ * Lives at the top level of `planner/` (not under `building/` or `mutation/`) because both
47
+ * directories consume it: `building/select.ts` on the read path, `mutation/body-context.ts`
48
+ * on the write path. Neither should import from the other for this.
49
+ *
50
+ * NOTE: the caller's `scope` and `aggregates` are deliberately still inherited. A stored body
51
+ * only contains names that resolved when it was created, and its own FROM shadows the caller's
52
+ * scope, so neither is exploitable today (probed: a view body aggregate built inside a caller
53
+ * HAVING context does not match the caller's aggregate). If a future feature lets a body name
54
+ * resolve outward — a parameterized view, a lateral/correlated stored body — clear them here too.
55
+ */
56
+ export declare function storedBodyContext(ctx: PlanningContext, schemaName: string): PlanningContext;
57
+ //# sourceMappingURL=stored-body-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stored-body-context.d.ts","sourceRoot":"","sources":["../../../src/planner/stored-body-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAQ3F"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * The planning context ANY stored body (view / materialized-view derivation) plans under,
3
+ * on either the read or the write path. Isolates the whole naming environment the caller
4
+ * could otherwise inject into the body, so a stored body binds the same objects on every
5
+ * reference:
6
+ *
7
+ * - `schemaPath` → the object's own home path — the database default schema-resolution
8
+ * order rooted at `schemaName` ({@link import('../core/database.js').Database._homeSchemaPath}),
9
+ * independent of the referencing statement's search path. A body that declares its own
10
+ * `with schema` path overrides this: on the read path its top-level `SelectStmt.schemaPath`
11
+ * applies right after this call; on the write path `building/select.ts` applies the same
12
+ * path carried on the fragment's marker. That override is deliberately NOT folded in here
13
+ * — this function takes only a schema name and has no access to the body AST;
14
+ * - `cteNodes` → cleared, so a caller `with` clause whose name matches a body source
15
+ * cannot shadow it. The body's OWN leading `with` clause still resolves — it is built
16
+ * by `buildWithContext` from the body statement, not inherited. Clearing here is what
17
+ * closes the write path: `select-context.ts` falls back to `ctx.cteNodes` whenever the
18
+ * explicit `parentCTEs` argument is empty, so passing an empty map is not sufficient.
19
+ * - `cteReferenceCache` → cleared, so the body's own CTE references get fresh
20
+ * `CTEReferenceNode`s. The cache is keyed by bare `cteName:alias`, so a caller CTE and
21
+ * a body-local CTE that share a name would otherwise collide on the same entry and the
22
+ * body would read the caller's relation.
23
+ * - `storedBodyOf` → `schemaName`, marking this context AS that body's home environment.
24
+ * A write through a view is not executed as the body plan — it is *lowered* into a
25
+ * base-table INSERT/UPDATE/DELETE, and definition-derived fragments copied into that
26
+ * lowered statement are planned on the CALLER's context. Such a fragment carries a
27
+ * {@link import('../parser/ast.js').StoredBodyEnv} marker instead, and
28
+ * `building/select.ts` re-enters the home environment through this function when it
29
+ * meets one. `storedBodyOf` is what makes that marker inert while the body itself is
30
+ * being planned here (the context already IS the home environment), so the body's own
31
+ * `with` clause survives.
32
+ *
33
+ * Callers that plan a body derived from the caller's own statement (an ephemeral write
34
+ * target, a rewritten base op) must NOT use this — see `bodyPlanningContext` in
35
+ * `mutation/body-context.ts`, which guards the ephemeral case and delegates here otherwise.
36
+ *
37
+ * The OTHER kind of stored, schema-authored SQL — a column `DEFAULT`, a generated-column
38
+ * expression, a `CHECK` constraint, a synthesized foreign-key probe — is built INLINE in
39
+ * the caller's statement rather than re-entered as its own plan, so it keeps the caller's
40
+ * scope and never sets the `storedBodyOf` marker; it clears the CTE namespace and narrows
41
+ * the schema path more strictly than here (the owning table's schema ONLY, with no
42
+ * default-path fallback). See the sibling
43
+ * {@link import('./building/schema-authored-context.js').schemaAuthoredContext}.
44
+ *
45
+ * Lives at the top level of `planner/` (not under `building/` or `mutation/`) because both
46
+ * directories consume it: `building/select.ts` on the read path, `mutation/body-context.ts`
47
+ * on the write path. Neither should import from the other for this.
48
+ *
49
+ * NOTE: the caller's `scope` and `aggregates` are deliberately still inherited. A stored body
50
+ * only contains names that resolved when it was created, and its own FROM shadows the caller's
51
+ * scope, so neither is exploitable today (probed: a view body aggregate built inside a caller
52
+ * HAVING context does not match the caller's aggregate). If a future feature lets a body name
53
+ * resolve outward — a parameterized view, a lateral/correlated stored body — clear them here too.
54
+ */
55
+ export function storedBodyContext(ctx, schemaName) {
56
+ return {
57
+ ...ctx,
58
+ schemaPath: ctx.db._homeSchemaPath(schemaName),
59
+ cteNodes: undefined,
60
+ cteReferenceCache: undefined,
61
+ storedBodyOf: schemaName,
62
+ };
63
+ }
64
+ //# sourceMappingURL=stored-body-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stored-body-context.js","sourceRoot":"","sources":["../../../src/planner/stored-body-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAoB,EAAE,UAAkB;IACzE,OAAO;QACN,GAAG,GAAG;QACN,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;QAC9C,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,UAAU;KACxB,CAAC;AACH,CAAC"}
@@ -9,10 +9,10 @@
9
9
  *
10
10
  * ## Identity — not schema — distinguishes the two sides of a self-join
11
11
  *
12
- * `ColumnOrigin.ref` is the `TableReferenceNode` instance that produced the
13
- * attribute. `from t a join t b` yields two distinct TableReferenceNodes sharing
12
+ * `ColumnOrigin.relation` is an opaque token standing for ONE instance of a relation
13
+ * in the plan. `from t a join t b` yields two distinct TableReferenceNodes sharing
14
14
  * ONE `TableSchema` object, so a caller asking "how many relations does this
15
- * expression touch?" must key on `ref` identity. Keying on `table` collapses the
15
+ * expression touch?" must key on `relation` identity. Keying on `table` collapses the
16
16
  * two sides and mis-classifies `a.age > b.age` as a single-table predicate
17
17
  * comparing a column to a constant.
18
18
  *
@@ -33,14 +33,35 @@
33
33
  * caller one branch's statistics as if they described the whole relation. The walk
34
34
  * therefore stops at such a node and records nothing beneath it — a conjunct over a
35
35
  * union reads as unknown, exactly like one over a computed projection.
36
+ *
37
+ * `rule-async-gather-union-all` rewrites a unionAll set operation into an
38
+ * `AsyncGatherNode` that forwards the same ids, so `isRowMerging` recognises that
39
+ * gather too — see `row-population.ts`.
40
+ *
41
+ * ## A CTE reference republishes its body's columns under its own relation instance
42
+ *
43
+ * `CTEReferenceNode` mints FRESH attribute ids for every column it republishes
44
+ * (`cte-reference-node.ts`), so the walk cannot simply descend through it: nothing
45
+ * above would land in the map. It instead maps the body's origins positionally onto
46
+ * the reference's own ids — but under a relation token minted PER REFERENCE, because
47
+ * two references to one `with` clause share a single body subtree. Pairing them with
48
+ * the body's own relation tokens would make both arms of a CTE self-join the same
49
+ * relation, and `rule-filter-selectivity` would read `a.qty > b.qty` as a
50
+ * single-relation predicate comparing a column to a constant.
36
51
  */
37
- import { TableReferenceNode } from '../nodes/reference.js';
38
52
  import type { RelationalPlanNode } from '../nodes/plan-node.js';
39
53
  import type { TableSchema } from '../../schema/table.js';
40
- /** Where a single attribute came from: a column of a specific base-table reference. */
54
+ /**
55
+ * Identity of one *instance* of a relation in the plan — compared by reference and
56
+ * never dereferenced. A `TableReferenceNode` is its own instance; a CTE reference
57
+ * mints one per (reference, underlying relation) pair so that two references to the
58
+ * same `with` clause stay distinguishable.
59
+ */
60
+ export type RelationInstance = object;
61
+ /** Where a single attribute came from: a column of a specific relation instance. */
41
62
  export interface ColumnOrigin {
42
- /** The TableReferenceNode that minted this attribute — identity is significant. */
43
- readonly ref: TableReferenceNode;
63
+ /** The relation instance that published this attribute — identity is significant. */
64
+ readonly relation: RelationInstance;
44
65
  readonly table: TableSchema;
45
66
  readonly columnIndex: number;
46
67
  readonly columnName: string;
@@ -52,7 +73,7 @@ export interface ColumnOrigin {
52
73
  * The walk descends relations only, so scalar subqueries hanging off a join
53
74
  * condition or a filter predicate are NOT traversed — their columns stay out of
54
75
  * the map and any conjunct referencing them reads as unknown. It also stops at a
55
- * row-merging operator (see the file doc-comment).
76
+ * row-merging operator and at a CTE reference (see the file doc-comment).
56
77
  */
57
78
  export declare function collectColumnOrigins(node: RelationalPlanNode): Map<number, ColumnOrigin>;
58
79
  //# sourceMappingURL=column-origins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-origins.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/column-origins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAG3D,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAoBxF"}
1
+ {"version":3,"file":"column-origins.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/column-origins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAKH,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEtC,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAKD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAExF"}
@@ -9,10 +9,10 @@
9
9
  *
10
10
  * ## Identity — not schema — distinguishes the two sides of a self-join
11
11
  *
12
- * `ColumnOrigin.ref` is the `TableReferenceNode` instance that produced the
13
- * attribute. `from t a join t b` yields two distinct TableReferenceNodes sharing
12
+ * `ColumnOrigin.relation` is an opaque token standing for ONE instance of a relation
13
+ * in the plan. `from t a join t b` yields two distinct TableReferenceNodes sharing
14
14
  * ONE `TableSchema` object, so a caller asking "how many relations does this
15
- * expression touch?" must key on `ref` identity. Keying on `table` collapses the
15
+ * expression touch?" must key on `relation` identity. Keying on `table` collapses the
16
16
  * two sides and mis-classifies `a.age > b.age` as a single-table predicate
17
17
  * comparing a column to a constant.
18
18
  *
@@ -33,10 +33,25 @@
33
33
  * caller one branch's statistics as if they described the whole relation. The walk
34
34
  * therefore stops at such a node and records nothing beneath it — a conjunct over a
35
35
  * union reads as unknown, exactly like one over a computed projection.
36
+ *
37
+ * `rule-async-gather-union-all` rewrites a unionAll set operation into an
38
+ * `AsyncGatherNode` that forwards the same ids, so `isRowMerging` recognises that
39
+ * gather too — see `row-population.ts`.
40
+ *
41
+ * ## A CTE reference republishes its body's columns under its own relation instance
42
+ *
43
+ * `CTEReferenceNode` mints FRESH attribute ids for every column it republishes
44
+ * (`cte-reference-node.ts`), so the walk cannot simply descend through it: nothing
45
+ * above would land in the map. It instead maps the body's origins positionally onto
46
+ * the reference's own ids — but under a relation token minted PER REFERENCE, because
47
+ * two references to one `with` clause share a single body subtree. Pairing them with
48
+ * the body's own relation tokens would make both arms of a CTE self-join the same
49
+ * relation, and `rule-filter-selectivity` would read `a.qty > b.qty` as a
50
+ * single-relation predicate comparing a column to a constant.
36
51
  */
37
52
  import { TableReferenceNode } from '../nodes/reference.js';
38
- import { SetOperationNode } from '../nodes/set-operation-node.js';
39
- import { RecursiveCTENode } from '../nodes/recursive-cte-node.js';
53
+ import { CTEReferenceNode } from '../nodes/cte-reference-node.js';
54
+ import { isRowMerging } from './row-population.js';
40
55
  /**
41
56
  * Attribute id → originating base-table column, for every base column reachable
42
57
  * under `node` via `getRelations()`.
@@ -44,9 +59,12 @@ import { RecursiveCTENode } from '../nodes/recursive-cte-node.js';
44
59
  * The walk descends relations only, so scalar subqueries hanging off a join
45
60
  * condition or a filter predicate are NOT traversed — their columns stay out of
46
61
  * the map and any conjunct referencing them reads as unknown. It also stops at a
47
- * row-merging operator (see the file doc-comment).
62
+ * row-merging operator and at a CTE reference (see the file doc-comment).
48
63
  */
49
64
  export function collectColumnOrigins(node) {
65
+ return collect(node, new Map());
66
+ }
67
+ function collect(node, bodies) {
50
68
  const origins = new Map();
51
69
  // Plan trees are DAGs (a CTE instance can be shared), so dedupe by identity.
52
70
  const visited = new Set();
@@ -60,6 +78,12 @@ export function collectColumnOrigins(node) {
60
78
  addBaseColumns(n, origins);
61
79
  continue;
62
80
  }
81
+ if (n instanceof CTEReferenceNode) {
82
+ // Deliberately NOT descended: the body publishes ids this node does not
83
+ // expose, and the body may be shared with a sibling reference.
84
+ addCTEColumns(n, origins, bodies);
85
+ continue;
86
+ }
63
87
  if (isRowMerging(n))
64
88
  continue;
65
89
  for (const rel of n.getRelations())
@@ -67,13 +91,6 @@ export function collectColumnOrigins(node) {
67
91
  }
68
92
  return origins;
69
93
  }
70
- /**
71
- * Does this node publish one branch's attribute ids over rows drawn from several
72
- * branches? Such an id describes no single base-table column.
73
- */
74
- function isRowMerging(node) {
75
- return node instanceof SetOperationNode || node instanceof RecursiveCTENode;
76
- }
77
94
  /** Zip a table reference's attributes with its schema columns (1:1 by construction). */
78
95
  function addBaseColumns(ref, out) {
79
96
  // TableReferenceNode builds its attributes by mapping `tableSchema.columns`
@@ -84,7 +101,50 @@ function addBaseColumns(ref, out) {
84
101
  const attr = attrs[i];
85
102
  if (!attr)
86
103
  return;
87
- out.set(attr.id, { ref, table: ref.tableSchema, columnIndex: i, columnName: col.name });
104
+ out.set(attr.id, { relation: ref, table: ref.tableSchema, columnIndex: i, columnName: col.name });
88
105
  });
89
106
  }
107
+ /**
108
+ * Re-publish a CTE body's origins under this reference's own attribute ids and its
109
+ * own relation instances.
110
+ *
111
+ * `CTEReferenceNode.buildAttributes` maps `CTENode.getAttributes()` one for one and
112
+ * `CTENode` forwards its source's attribute ids verbatim, so index i names the same
113
+ * column on both sides. Columns the body computed (or could not attribute) simply
114
+ * have no entry, exactly as for the equivalent inline subquery.
115
+ */
116
+ function addCTEColumns(ref, out, bodies) {
117
+ const body = ref.source;
118
+ // A recursive CTE's rows come from its base case AND its recursive case, so no
119
+ // base-table column describes them — same reasoning as a set operation.
120
+ if (isRowMerging(body))
121
+ return;
122
+ const bodyOrigins = bodyOriginsOf(body, bodies);
123
+ if (bodyOrigins.size === 0)
124
+ return;
125
+ // One fresh instance per underlying relation, minted for THIS reference: two
126
+ // references to one CTE must never share an instance.
127
+ const instances = new Map();
128
+ const bodyAttrs = body.getAttributes();
129
+ ref.getAttributes().forEach((attr, i) => {
130
+ const bodyAttr = bodyAttrs[i];
131
+ const origin = bodyAttr && bodyOrigins.get(bodyAttr.id);
132
+ if (!origin)
133
+ return;
134
+ let instance = instances.get(origin.relation);
135
+ if (!instance) {
136
+ instance = {};
137
+ instances.set(origin.relation, instance);
138
+ }
139
+ out.set(attr.id, { ...origin, relation: instance });
140
+ });
141
+ }
142
+ function bodyOriginsOf(body, bodies) {
143
+ const cached = bodies.get(body);
144
+ if (cached)
145
+ return cached;
146
+ const computed = collect(body, bodies);
147
+ bodies.set(body, computed);
148
+ return computed;
149
+ }
90
150
  //# sourceMappingURL=column-origins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-origins.js","sourceRoot":"","sources":["../../../../src/planner/util/column-origins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAalE;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,6EAA6E;IAC7E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAY,CAAC;IACpC,MAAM,KAAK,GAAyB,CAAC,IAAI,CAAC,CAAC;IAE3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEf,IAAI,CAAC,YAAY,kBAAkB,EAAE,CAAC;YACrC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC3B,SAAS;QACV,CAAC;QACD,IAAI,YAAY,CAAC,CAAC,CAAC;YAAE,SAAS;QAC9B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,YAAY,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAwB;IAC7C,OAAO,IAAI,YAAY,gBAAgB,IAAI,IAAI,YAAY,gBAAgB,CAAC;AAC7E,CAAC;AAED,wFAAwF;AACxF,SAAS,cAAc,CAAC,GAAuB,EAAE,GAA8B;IAC9E,4EAA4E;IAC5E,gFAAgF;IAChF,sEAAsE;IACtE,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;IAClC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"column-origins.js","sourceRoot":"","sources":["../../../../src/planner/util/column-origins.ts"],"names":[],"mappings":"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"}
@@ -328,18 +328,42 @@ export interface EqualityFds {
328
328
  *
329
329
  * Non-equality conjuncts contribute nothing.
330
330
  *
331
- * **Collation gate.** Every extracted fact is a VALUE-level claim (a pinned
332
- * column has one value across rows; `col1 = col2` rows are value-equal), so a
333
- * conjunct only contributes when its comparison is value-discriminating
334
- * (`isValueDiscriminatingEquality`): for textual operands the effective
335
- * comparison collation must be BINARY. A NOCASE/RTRIM comparison — via a
336
- * `COLLATE` wrapper on either side or a non-BINARY declared column collation —
337
- * passes value-DIFFERENT rows ('Bob' = 'bob' NOCASE), so its facts would
338
- * over-claim (false ≤1-row keys, false EC-driven inferences, wrong insert
331
+ * **Collation gate (all shapes).** Every extracted fact is a VALUE-level claim
332
+ * (a pinned column has one value across rows; `col1 = col2` rows are
333
+ * value-equal), so a conjunct only contributes when its comparison is
334
+ * value-discriminating (`isValueDiscriminatingEquality`): for textual operands
335
+ * the effective comparison collation must be BINARY. A NOCASE/RTRIM comparison —
336
+ * via a `COLLATE` wrapper on either side or a non-BINARY declared column
337
+ * collation — passes value-DIFFERENT rows ('Bob' = 'bob' NOCASE), so its facts
338
+ * would over-claim (false ≤1-row keys, false EC-driven inferences, wrong insert
339
339
  * defaults — ticket `collation-blind-equality-fact-extraction`). Declared-
340
340
  * collation covered-key ≤1-row detection is NOT lost: it flows through the
341
341
  * independent (and collation-sound) `extractConstraints` path in
342
342
  * `FilterNode.computePhysical`.
343
+ *
344
+ * **Semantic-ordering gate (`col1 = col2` ONLY).** A few logical types compare
345
+ * by meaning rather than by stored text (`timespan`: 'PT1H' = 'PT60M'; `json`:
346
+ * '{"a":1}' = '{ "a" : 1 }'). For a MIXED pair — `d timespan = s text` — the
347
+ * mirror FDs and the equivalence class are both FALSE: two surviving rows can
348
+ * agree on `d` (same elapsed time) while disagreeing on `s` (distinct strings),
349
+ * because the two columns have no common notion of "same value". So the col=col
350
+ * arm additionally requires `semanticOrderingsAgree` on the two declared logical
351
+ * types, mirroring the two join-side extractors that mint the same kind of fact
352
+ * (`extractEquiPairsFromCondition` in `nodes/join-node.ts`, `extractEquiPairs`
353
+ * in `rules/join/equi-pair-extractor.ts`). Same-type pairs (`timespan =
354
+ * timespan`) stay admitted — under the type's own identity both facts hold.
355
+ * Invariant OPT-051; ticket `debt-filter-equality-facts-ignore-semantic-ordering`.
356
+ *
357
+ * **The constant-pin arms are deliberately NOT semantic-ordering-gated.** This is
358
+ * intentional, not an oversight. `where d = 'PT60M'` keeps every row whose `d` is
359
+ * one hour whatever text it stores, and under the engine's identity for a
360
+ * `timespan` column — the same identity `distinct`/`group by`/`unique` use —
361
+ * those rows all hold *the same value*, so `∅ → d` is true. The
362
+ * `ConstantBinding` claim is likewise true as defined (see its declaration in
363
+ * `nodes/plan-node.ts`): the column *compares equal to* the bound value under its
364
+ * own comparison. Gating this arm would decline EVERY constant pin on a
365
+ * `timespan`/`json` column (a literal never declares a semantic-ordering type),
366
+ * losing real optimizations to "fix" a claim that is not wrong.
343
367
  */
344
368
  export declare function extractEqualityFds(predicate: ScalarPlanNode, attrIdToIndex: ReadonlyMap<number, number>): EqualityFds;
345
369
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fd-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/fd-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fd-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/util/fd-utils.ts"],"names":[],"mappings":"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"}