@quereus/quereus 4.11.0 → 4.12.1

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 (451) hide show
  1. package/dist/src/common/type-inference.d.ts +12 -6
  2. package/dist/src/common/type-inference.d.ts.map +1 -1
  3. package/dist/src/common/type-inference.js +12 -24
  4. package/dist/src/common/type-inference.js.map +1 -1
  5. package/dist/src/core/database-assertions.d.ts.map +1 -1
  6. package/dist/src/core/database-assertions.js +7 -5
  7. package/dist/src/core/database-assertions.js.map +1 -1
  8. package/dist/src/core/database-events.d.ts +4 -3
  9. package/dist/src/core/database-events.d.ts.map +1 -1
  10. package/dist/src/core/database-events.js +4 -3
  11. package/dist/src/core/database-events.js.map +1 -1
  12. package/dist/src/core/database-materialized-views-analysis.d.ts +1 -3
  13. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -1
  14. package/dist/src/core/database-materialized-views-analysis.js +1 -11
  15. package/dist/src/core/database-materialized-views-analysis.js.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 +12 -10
  18. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  19. package/dist/src/core/database.d.ts.map +1 -1
  20. package/dist/src/core/database.js +13 -2
  21. package/dist/src/core/database.js.map +1 -1
  22. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  23. package/dist/src/core/derived-row-validator.js +14 -2
  24. package/dist/src/core/derived-row-validator.js.map +1 -1
  25. package/dist/src/core/param.d.ts +9 -0
  26. package/dist/src/core/param.d.ts.map +1 -1
  27. package/dist/src/core/param.js +21 -1
  28. package/dist/src/core/param.js.map +1 -1
  29. package/dist/src/core/statement.d.ts.map +1 -1
  30. package/dist/src/core/statement.js +38 -15
  31. package/dist/src/core/statement.js.map +1 -1
  32. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  33. package/dist/src/func/builtins/aggregate.js +7 -2
  34. package/dist/src/func/builtins/aggregate.js.map +1 -1
  35. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  36. package/dist/src/func/builtins/builtin-window-functions.js +27 -11
  37. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  38. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  39. package/dist/src/func/builtins/datetime.js +8 -3
  40. package/dist/src/func/builtins/datetime.js.map +1 -1
  41. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  42. package/dist/src/func/builtins/explain.js +9 -29
  43. package/dist/src/func/builtins/explain.js.map +1 -1
  44. package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
  45. package/dist/src/func/builtins/json-tvf.js +14 -7
  46. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  47. package/dist/src/func/builtins/return-types.d.ts +29 -0
  48. package/dist/src/func/builtins/return-types.d.ts.map +1 -1
  49. package/dist/src/func/builtins/return-types.js +4 -1
  50. package/dist/src/func/builtins/return-types.js.map +1 -1
  51. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  52. package/dist/src/func/builtins/scalar.js +22 -67
  53. package/dist/src/func/builtins/scalar.js.map +1 -1
  54. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  55. package/dist/src/func/builtins/schema.js +26 -16
  56. package/dist/src/func/builtins/schema.js.map +1 -1
  57. package/dist/src/index.d.ts +1 -1
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +6 -1
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/parser/parser.d.ts.map +1 -1
  62. package/dist/src/parser/parser.js +8 -5
  63. package/dist/src/parser/parser.js.map +1 -1
  64. package/dist/src/parser/visitor.d.ts +16 -0
  65. package/dist/src/parser/visitor.d.ts.map +1 -1
  66. package/dist/src/parser/visitor.js +16 -0
  67. package/dist/src/parser/visitor.js.map +1 -1
  68. package/dist/src/planner/analysis/assertion-plan.d.ts +33 -0
  69. package/dist/src/planner/analysis/assertion-plan.d.ts.map +1 -0
  70. package/dist/src/planner/analysis/assertion-plan.js +39 -0
  71. package/dist/src/planner/analysis/assertion-plan.js.map +1 -0
  72. package/dist/src/planner/analysis/binary-operator-class.d.ts +55 -0
  73. package/dist/src/planner/analysis/binary-operator-class.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/binary-operator-class.js +57 -0
  75. package/dist/src/planner/analysis/binary-operator-class.js.map +1 -0
  76. package/dist/src/planner/analysis/binding-extractor.d.ts +9 -3
  77. package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/binding-extractor.js +11 -16
  79. package/dist/src/planner/analysis/binding-extractor.js.map +1 -1
  80. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  81. package/dist/src/planner/analysis/change-scope.js +19 -6
  82. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  83. package/dist/src/planner/analysis/check-extraction.d.ts +1 -7
  84. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  85. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  86. package/dist/src/planner/analysis/comparison-collation.d.ts +17 -0
  87. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  88. package/dist/src/planner/analysis/comparison-collation.js +17 -5
  89. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  90. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  91. package/dist/src/planner/analysis/constraint-extractor.js +18 -18
  92. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  93. package/dist/src/planner/analysis/coverage-prover.d.ts +11 -7
  94. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  95. package/dist/src/planner/analysis/coverage-prover.js +11 -7
  96. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  97. package/dist/src/planner/analysis/equi-correlation.d.ts +1 -1
  98. package/dist/src/planner/analysis/equi-correlation.js +1 -1
  99. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
  100. package/dist/src/planner/analysis/expression-fingerprint.js +0 -2
  101. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
  102. package/dist/src/planner/analysis/key-filter.d.ts.map +1 -1
  103. package/dist/src/planner/analysis/key-filter.js +2 -3
  104. package/dist/src/planner/analysis/key-filter.js.map +1 -1
  105. package/dist/src/planner/analysis/relation-key.d.ts +104 -0
  106. package/dist/src/planner/analysis/relation-key.d.ts.map +1 -0
  107. package/dist/src/planner/analysis/relation-key.js +121 -0
  108. package/dist/src/planner/analysis/relation-key.js.map +1 -0
  109. package/dist/src/planner/analysis/scalar-param-usage.d.ts.map +1 -1
  110. package/dist/src/planner/analysis/scalar-param-usage.js +12 -4
  111. package/dist/src/planner/analysis/scalar-param-usage.js.map +1 -1
  112. package/dist/src/planner/analysis/set-op-type-merge.d.ts +9 -3
  113. package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -1
  114. package/dist/src/planner/analysis/set-op-type-merge.js +22 -8
  115. package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -1
  116. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  117. package/dist/src/planner/building/alter-table.js +31 -23
  118. package/dist/src/planner/building/alter-table.js.map +1 -1
  119. package/dist/src/planner/building/analyze.d.ts.map +1 -1
  120. package/dist/src/planner/building/analyze.js +21 -0
  121. package/dist/src/planner/building/analyze.js.map +1 -1
  122. package/dist/src/planner/building/block.d.ts.map +1 -1
  123. package/dist/src/planner/building/block.js +222 -82
  124. package/dist/src/planner/building/block.js.map +1 -1
  125. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  126. package/dist/src/planner/building/constraint-builder.js +5 -3
  127. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  128. package/dist/src/planner/building/delete.js +1 -1
  129. package/dist/src/planner/building/delete.js.map +1 -1
  130. package/dist/src/planner/building/expression.d.ts.map +1 -1
  131. package/dist/src/planner/building/expression.js +11 -3
  132. package/dist/src/planner/building/expression.js.map +1 -1
  133. package/dist/src/planner/building/foreign-key-builder.d.ts +16 -6
  134. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  135. package/dist/src/planner/building/foreign-key-builder.js +43 -20
  136. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  137. package/dist/src/planner/building/generated-column-scope.d.ts +58 -0
  138. package/dist/src/planner/building/generated-column-scope.d.ts.map +1 -0
  139. package/dist/src/planner/building/generated-column-scope.js +117 -0
  140. package/dist/src/planner/building/generated-column-scope.js.map +1 -0
  141. package/dist/src/planner/building/insert.d.ts.map +1 -1
  142. package/dist/src/planner/building/insert.js +20 -28
  143. package/dist/src/planner/building/insert.js.map +1 -1
  144. package/dist/src/planner/building/select-aggregates.d.ts +73 -132
  145. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  146. package/dist/src/planner/building/select-aggregates.js +405 -81
  147. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  148. package/dist/src/planner/building/select-modifiers.d.ts +37 -8
  149. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  150. package/dist/src/planner/building/select-modifiers.js +8 -9
  151. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  152. package/dist/src/planner/building/select-ordinal.d.ts +6 -0
  153. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  154. package/dist/src/planner/building/select-ordinal.js +1 -1
  155. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  156. package/dist/src/planner/building/select-window.d.ts +2 -2
  157. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  158. package/dist/src/planner/building/select-window.js +82 -101
  159. package/dist/src/planner/building/select-window.js.map +1 -1
  160. package/dist/src/planner/building/select.d.ts.map +1 -1
  161. package/dist/src/planner/building/select.js +78 -33
  162. package/dist/src/planner/building/select.js.map +1 -1
  163. package/dist/src/planner/building/update.d.ts.map +1 -1
  164. package/dist/src/planner/building/update.js +14 -8
  165. package/dist/src/planner/building/update.js.map +1 -1
  166. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  167. package/dist/src/planner/building/view-mutation-builder.js +329 -14
  168. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  169. package/dist/src/planner/building/with.d.ts +6 -0
  170. package/dist/src/planner/building/with.d.ts.map +1 -1
  171. package/dist/src/planner/building/with.js +52 -3
  172. package/dist/src/planner/building/with.js.map +1 -1
  173. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  174. package/dist/src/planner/cache/correlation-detector.js +44 -17
  175. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  176. package/dist/src/planner/framework/physical-utils.d.ts +6 -0
  177. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  178. package/dist/src/planner/framework/physical-utils.js +6 -0
  179. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  180. package/dist/src/planner/mutation/lens-enforcement.d.ts +123 -0
  181. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  182. package/dist/src/planner/mutation/lens-enforcement.js +362 -5
  183. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  184. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
  185. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
  186. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
  187. package/dist/src/planner/nodes/alter-table-node.d.ts +15 -11
  188. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  189. package/dist/src/planner/nodes/alter-table-node.js +5 -0
  190. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  191. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/bloom-join-node.js +7 -0
  193. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  194. package/dist/src/planner/nodes/constraint-check-node.d.ts +16 -0
  195. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  197. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
  198. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/plan-node-type.js +1 -1
  200. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  201. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/pragma.js +5 -2
  203. package/dist/src/planner/nodes/pragma.js.map +1 -1
  204. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/reference.js +9 -1
  206. package/dist/src/planner/nodes/reference.js.map +1 -1
  207. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  208. package/dist/src/planner/nodes/scalar.js +117 -91
  209. package/dist/src/planner/nodes/scalar.js.map +1 -1
  210. package/dist/src/planner/nodes/sequence-node.d.ts +50 -0
  211. package/dist/src/planner/nodes/sequence-node.d.ts.map +1 -0
  212. package/dist/src/planner/nodes/sequence-node.js +96 -0
  213. package/dist/src/planner/nodes/sequence-node.js.map +1 -0
  214. package/dist/src/planner/nodes/values-node.d.ts +8 -0
  215. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  216. package/dist/src/planner/nodes/values-node.js +29 -6
  217. package/dist/src/planner/nodes/values-node.js.map +1 -1
  218. package/dist/src/planner/nodes/view-mutation-node.d.ts +43 -1
  219. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  220. package/dist/src/planner/nodes/view-mutation-node.js +27 -6
  221. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  222. package/dist/src/planner/nodes/window-node.d.ts +33 -4
  223. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  224. package/dist/src/planner/nodes/window-node.js +80 -36
  225. package/dist/src/planner/nodes/window-node.js.map +1 -1
  226. package/dist/src/planner/planning-context.d.ts +38 -1
  227. package/dist/src/planner/planning-context.d.ts.map +1 -1
  228. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  229. package/dist/src/planner/rules/access/rule-key-set-seek.js +8 -3
  230. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  231. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +18 -12
  232. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  233. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +4 -3
  234. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  235. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  236. package/dist/src/planner/rules/window/rule-monotonic-window.js +6 -0
  237. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  238. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  239. package/dist/src/planner/scopes/param.js +10 -5
  240. package/dist/src/planner/scopes/param.js.map +1 -1
  241. package/dist/src/planner/util/ind-utils.d.ts +25 -8
  242. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  243. package/dist/src/planner/util/ind-utils.js +53 -10
  244. package/dist/src/planner/util/ind-utils.js.map +1 -1
  245. package/dist/src/planner/util/key-utils.d.ts +7 -7
  246. package/dist/src/planner/util/key-utils.js +9 -9
  247. package/dist/src/planner/util/key-utils.js.map +1 -1
  248. package/dist/src/runtime/delta-executor.d.ts.map +1 -1
  249. package/dist/src/runtime/delta-executor.js +7 -2
  250. package/dist/src/runtime/delta-executor.js.map +1 -1
  251. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  252. package/dist/src/runtime/emit/add-constraint.js +50 -15
  253. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  254. package/dist/src/runtime/emit/alter-schema-event.d.ts +2 -43
  255. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -1
  256. package/dist/src/runtime/emit/alter-schema-event.js +2 -53
  257. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -1
  258. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  259. package/dist/src/runtime/emit/alter-table.js +59 -24
  260. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  261. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  262. package/dist/src/runtime/emit/analyze.js +7 -0
  263. package/dist/src/runtime/emit/analyze.js.map +1 -1
  264. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
  265. package/dist/src/runtime/emit/assertion-rename-helpers.js +2 -3
  266. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
  267. package/dist/src/runtime/emit/binary.d.ts +5 -0
  268. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  269. package/dist/src/runtime/emit/binary.js +22 -22
  270. package/dist/src/runtime/emit/binary.js.map +1 -1
  271. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  272. package/dist/src/runtime/emit/block.js +9 -3
  273. package/dist/src/runtime/emit/block.js.map +1 -1
  274. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  275. package/dist/src/runtime/emit/constraint-check.js +5 -6
  276. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  277. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  278. package/dist/src/runtime/emit/create-assertion.js +71 -70
  279. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  280. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  281. package/dist/src/runtime/emit/create-index.js +8 -3
  282. package/dist/src/runtime/emit/create-index.js.map +1 -1
  283. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  284. package/dist/src/runtime/emit/create-table.js +20 -10
  285. package/dist/src/runtime/emit/create-table.js.map +1 -1
  286. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  287. package/dist/src/runtime/emit/create-view.js +51 -44
  288. package/dist/src/runtime/emit/create-view.js.map +1 -1
  289. package/dist/src/runtime/emit/ddl-event-scope.d.ts +71 -0
  290. package/dist/src/runtime/emit/ddl-event-scope.d.ts.map +1 -0
  291. package/dist/src/runtime/emit/ddl-event-scope.js +80 -0
  292. package/dist/src/runtime/emit/ddl-event-scope.js.map +1 -0
  293. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  294. package/dist/src/runtime/emit/dml-executor.js +23 -23
  295. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  296. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  297. package/dist/src/runtime/emit/drop-assertion.js +23 -17
  298. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  299. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  300. package/dist/src/runtime/emit/drop-index.js +7 -2
  301. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  302. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  303. package/dist/src/runtime/emit/drop-table.js +16 -10
  304. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  305. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  306. package/dist/src/runtime/emit/drop-view.js +50 -43
  307. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  308. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  309. package/dist/src/runtime/emit/insert.js +2 -1
  310. package/dist/src/runtime/emit/insert.js.map +1 -1
  311. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  312. package/dist/src/runtime/emit/materialized-view.js +87 -67
  313. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  314. package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
  315. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  316. package/dist/src/runtime/emit/schema-declarative.js +128 -25
  317. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  318. package/dist/src/runtime/emit/sequence.d.ts +17 -0
  319. package/dist/src/runtime/emit/sequence.d.ts.map +1 -0
  320. package/dist/src/runtime/emit/sequence.js +40 -0
  321. package/dist/src/runtime/emit/sequence.js.map +1 -0
  322. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  323. package/dist/src/runtime/emit/set-object-tags.js +40 -32
  324. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  325. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  326. package/dist/src/runtime/emit/table-valued-function.js +3 -2
  327. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  328. package/dist/src/runtime/emit/update.js +3 -3
  329. package/dist/src/runtime/emit/update.js.map +1 -1
  330. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  331. package/dist/src/runtime/emit/view-mutation.js +45 -3
  332. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  333. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  334. package/dist/src/runtime/foreign-key-actions.js +9 -10
  335. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  336. package/dist/src/runtime/register.d.ts.map +1 -1
  337. package/dist/src/runtime/register.js +3 -2
  338. package/dist/src/runtime/register.js.map +1 -1
  339. package/dist/src/runtime/row-constraints.d.ts +14 -8
  340. package/dist/src/runtime/row-constraints.d.ts.map +1 -1
  341. package/dist/src/runtime/row-constraints.js +41 -15
  342. package/dist/src/runtime/row-constraints.js.map +1 -1
  343. package/dist/src/runtime/strict-representation.d.ts +11 -6
  344. package/dist/src/runtime/strict-representation.d.ts.map +1 -1
  345. package/dist/src/runtime/strict-representation.js +1 -44
  346. package/dist/src/runtime/strict-representation.js.map +1 -1
  347. package/dist/src/schema/assertion.d.ts +25 -2
  348. package/dist/src/schema/assertion.d.ts.map +1 -1
  349. package/dist/src/schema/assertion.js.map +1 -1
  350. package/dist/src/schema/catalog-rendering.d.ts +38 -0
  351. package/dist/src/schema/catalog-rendering.d.ts.map +1 -0
  352. package/dist/src/schema/catalog-rendering.js +171 -0
  353. package/dist/src/schema/catalog-rendering.js.map +1 -0
  354. package/dist/src/schema/catalog.d.ts +69 -3
  355. package/dist/src/schema/catalog.d.ts.map +1 -1
  356. package/dist/src/schema/catalog.js +124 -19
  357. package/dist/src/schema/catalog.js.map +1 -1
  358. package/dist/src/schema/column-source-resolver.d.ts +9 -5
  359. package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
  360. package/dist/src/schema/column-source-resolver.js +9 -5
  361. package/dist/src/schema/column-source-resolver.js.map +1 -1
  362. package/dist/src/schema/constraint-builder.d.ts +13 -10
  363. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  364. package/dist/src/schema/constraint-builder.js +45 -17
  365. package/dist/src/schema/constraint-builder.js.map +1 -1
  366. package/dist/src/schema/declared-schema-manager.d.ts +50 -0
  367. package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
  368. package/dist/src/schema/declared-schema-manager.js +52 -0
  369. package/dist/src/schema/declared-schema-manager.js.map +1 -1
  370. package/dist/src/schema/expr-scope/frame.d.ts +65 -0
  371. package/dist/src/schema/expr-scope/frame.d.ts.map +1 -0
  372. package/dist/src/schema/expr-scope/frame.js +104 -0
  373. package/dist/src/schema/expr-scope/frame.js.map +1 -0
  374. package/dist/src/schema/expr-scope/walk.d.ts +40 -0
  375. package/dist/src/schema/expr-scope/walk.d.ts.map +1 -0
  376. package/dist/src/schema/expr-scope/walk.js +260 -0
  377. package/dist/src/schema/expr-scope/walk.js.map +1 -0
  378. package/dist/src/schema/generated-column-refs.d.ts +41 -0
  379. package/dist/src/schema/generated-column-refs.d.ts.map +1 -0
  380. package/dist/src/schema/generated-column-refs.js +124 -0
  381. package/dist/src/schema/generated-column-refs.js.map +1 -0
  382. package/dist/src/schema/lens-ack.d.ts.map +1 -1
  383. package/dist/src/schema/lens-ack.js +5 -2
  384. package/dist/src/schema/lens-ack.js.map +1 -1
  385. package/dist/src/schema/lens-compiler.d.ts.map +1 -1
  386. package/dist/src/schema/lens-compiler.js +9 -1
  387. package/dist/src/schema/lens-compiler.js.map +1 -1
  388. package/dist/src/schema/lens-prover.d.ts +7 -2
  389. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  390. package/dist/src/schema/lens-prover.js +105 -11
  391. package/dist/src/schema/lens-prover.js.map +1 -1
  392. package/dist/src/schema/lens.d.ts +12 -0
  393. package/dist/src/schema/lens.d.ts.map +1 -1
  394. package/dist/src/schema/lens.js +10 -0
  395. package/dist/src/schema/lens.js.map +1 -1
  396. package/dist/src/schema/manager.d.ts +35 -1
  397. package/dist/src/schema/manager.d.ts.map +1 -1
  398. package/dist/src/schema/manager.js +125 -26
  399. package/dist/src/schema/manager.js.map +1 -1
  400. package/dist/src/schema/rename/self-qualifier-strip.d.ts +16 -10
  401. package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -1
  402. package/dist/src/schema/rename/self-qualifier-strip.js +30 -213
  403. package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -1
  404. package/dist/src/schema/rename-rewriter.d.ts +4 -3
  405. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  406. package/dist/src/schema/rename-rewriter.js +4 -3
  407. package/dist/src/schema/rename-rewriter.js.map +1 -1
  408. package/dist/src/schema/schema-differ.d.ts +54 -6
  409. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  410. package/dist/src/schema/schema-differ.js +108 -42
  411. package/dist/src/schema/schema-differ.js.map +1 -1
  412. package/dist/src/schema/schema-hasher.d.ts +12 -0
  413. package/dist/src/schema/schema-hasher.d.ts.map +1 -1
  414. package/dist/src/schema/schema-hasher.js +28 -10
  415. package/dist/src/schema/schema-hasher.js.map +1 -1
  416. package/dist/src/schema/table.d.ts +74 -19
  417. package/dist/src/schema/table.d.ts.map +1 -1
  418. package/dist/src/schema/table.js +133 -71
  419. package/dist/src/schema/table.js.map +1 -1
  420. package/dist/src/types/comparison-coercion.d.ts +5 -1
  421. package/dist/src/types/comparison-coercion.d.ts.map +1 -1
  422. package/dist/src/types/comparison-coercion.js +21 -5
  423. package/dist/src/types/comparison-coercion.js.map +1 -1
  424. package/dist/src/types/representation.d.ts +65 -0
  425. package/dist/src/types/representation.d.ts.map +1 -0
  426. package/dist/src/types/representation.js +63 -0
  427. package/dist/src/types/representation.js.map +1 -0
  428. package/dist/src/types/validation.d.ts +76 -22
  429. package/dist/src/types/validation.d.ts.map +1 -1
  430. package/dist/src/types/validation.js +110 -31
  431. package/dist/src/types/validation.js.map +1 -1
  432. package/dist/src/vtab/best-access-plan.d.ts +10 -0
  433. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  434. package/dist/src/vtab/best-access-plan.js +16 -0
  435. package/dist/src/vtab/best-access-plan.js.map +1 -1
  436. package/dist/src/vtab/capabilities.d.ts +72 -4
  437. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  438. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  439. package/dist/src/vtab/memory/layer/manager.js +17 -13
  440. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  441. package/dist/src/vtab/module.d.ts +13 -7
  442. package/dist/src/vtab/module.d.ts.map +1 -1
  443. package/package.json +3 -3
  444. package/dist/src/planner/nodes/array-index-node.d.ts +0 -22
  445. package/dist/src/planner/nodes/array-index-node.d.ts.map +0 -1
  446. package/dist/src/planner/nodes/array-index-node.js +0 -41
  447. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  448. package/dist/src/runtime/emit/array-index.d.ts +0 -5
  449. package/dist/src/runtime/emit/array-index.d.ts.map +0 -1
  450. package/dist/src/runtime/emit/array-index.js +0 -22
  451. package/dist/src/runtime/emit/array-index.js.map +0 -1
@@ -0,0 +1,121 @@
1
+ /**
2
+ * The one owner of the **relation key** — the label that names a single *read*
3
+ * of a table inside a plan, as opposed to the table itself.
4
+ *
5
+ * Format: `` `<schema>.<table>#<nodeId>` ``, all lowercase — e.g. `main.orders#42`.
6
+ * The `#<nodeId>` suffix is what makes it instance-unique: a self-join reads one
7
+ * table twice and the two reads must be told apart.
8
+ *
9
+ * Every site that builds, parses, or matches that label goes through this module.
10
+ * The recipe drifted three separate times when it was spelled by hand (a site that
11
+ * forgot to lowercase silently widened every single-key equality select to a whole-
12
+ * table scan), and the failure mode is always silent: two sites compute keys for the
13
+ * same read, the strings differ, the lookup finds nothing, the feature degrades
14
+ * quietly. Keeping one owner is what makes that class of drift impossible rather
15
+ * than merely unlikely.
16
+ *
17
+ * This module is deliberately a **leaf**: its only imports are `planner/nodes/`, so
18
+ * `core/`, `runtime/`, and `func/` can import it without dragging in the analysis
19
+ * machinery, and `constraint-extractor.ts` can import it without a cycle through
20
+ * `binding-extractor.ts`.
21
+ */
22
+ import { TableReferenceNode } from '../nodes/reference.js';
23
+ /** Suffix used when a node carries no id. Unreachable today (`PlanNode.id` is
24
+ * always assigned) but preserved so the key is never silently truncated. */
25
+ const UNKNOWN_NODE_ID = 'unknown';
26
+ /** Lowercased qualified base name (`schema.table`) for a table schema. */
27
+ export function relationBaseName(schema) {
28
+ return `${schema.schemaName}.${schema.name}`.toLowerCase();
29
+ }
30
+ /**
31
+ * Compose a key from an already-canonical (lowercased, qualified) base and a node id.
32
+ * Prefer {@link relationKeyOf} where a `TableReferenceNode` is in hand.
33
+ */
34
+ export function relationKeyFrom(base, nodeId) {
35
+ return `${base}#${nodeId ?? UNKNOWN_NODE_ID}`;
36
+ }
37
+ /** The key of a table reference — THE canonical entry point. */
38
+ export function relationKeyOf(ref) {
39
+ return relationKeyFrom(relationBaseName(ref.tableSchema), ref.id);
40
+ }
41
+ /**
42
+ * The key of an arbitrary relational node — the general case
43
+ * {@link createTableInfoFromNode} needs.
44
+ *
45
+ * A `TableReferenceNode` always canonicalizes to {@link relationKeyOf}, regardless
46
+ * of the display name the caller passed, so two callers naming the same read cannot
47
+ * disagree. Anything else falls back to `node.toString()`, lowercased — preserving
48
+ * today's behaviour for non-table relational nodes, which have no schema-qualified
49
+ * name to canonicalize on. An empty `displayName` falls back too, rather than
50
+ * producing a base-less key.
51
+ */
52
+ export function relationKeyOfRelation(node, displayName) {
53
+ if (node instanceof TableReferenceNode)
54
+ return relationKeyOf(node);
55
+ const base = (displayName || node.toString()).toLowerCase();
56
+ return relationKeyFrom(base, node.id);
57
+ }
58
+ /**
59
+ * The base-table half of a key.
60
+ *
61
+ * Splits at the **last** `#`: a node id never contains `#`, but a quoted table name
62
+ * legally can (`create table "we#ird"`), so splitting at the first `#` would truncate
63
+ * the base. Returns the whole string when there is no `#` at all.
64
+ */
65
+ export function relationKeyBase(key) {
66
+ const hash = key.lastIndexOf('#');
67
+ return hash >= 0 ? key.slice(0, hash) : key;
68
+ }
69
+ /**
70
+ * The same read, re-based onto `newBase` — what `ALTER TABLE … RENAME` propagation
71
+ * needs. Round-trips with {@link relationKeyBase}.
72
+ */
73
+ export function relationKeyWithBase(key, newBase) {
74
+ const hash = key.lastIndexOf('#');
75
+ return hash >= 0 ? `${newBase}${key.slice(hash)}` : newBase;
76
+ }
77
+ /**
78
+ * Whether `key` names the read at `nodeId`.
79
+ *
80
+ * Compares the id segment exactly rather than by string suffix, so id `42` does not
81
+ * match `main.orders#142`.
82
+ */
83
+ export function relationKeyHasNodeId(key, nodeId) {
84
+ const hash = key.lastIndexOf('#');
85
+ if (hash < 0)
86
+ return false;
87
+ return key.slice(hash + 1) === (nodeId ?? UNKNOWN_NODE_ID);
88
+ }
89
+ /**
90
+ * Every `TableReferenceNode` instance reachable from `plan`, keyed by relation key.
91
+ *
92
+ * The walk descends `getChildren()`, NOT `getRelations()`: a table reference under a
93
+ * scalar subquery expression (`not exists (select … from t …)`, the shape almost
94
+ * every assertion body has) hangs off a scalar child and is invisible to the
95
+ * relational-only walk.
96
+ *
97
+ * Callers that care about reference *identity* — one entry per reference, two for a
98
+ * self-join — must hand in a plan that has only been optimized for analysis
99
+ * (`Optimizer.optimizeForAnalysis`). Full physical optimization leaves several
100
+ * distinct `TableReferenceNode` instances per table, so the same table comes back
101
+ * more than once under different node ids.
102
+ *
103
+ * NOTE: re-walks the whole plan on every call, and several consumers call it over the
104
+ * same plan (assertion creation, the MV bounded-delta and full-rebuild arms). Plan
105
+ * trees are small and this has never shown up in a profile; if it ever does, memoize
106
+ * per plan-node instance (a WeakMap keyed on the root) rather than caching by key.
107
+ */
108
+ export function collectTableReferences(plan) {
109
+ const out = new Map();
110
+ collectInto(plan, out);
111
+ return out;
112
+ }
113
+ function collectInto(node, out) {
114
+ if (node instanceof TableReferenceNode) {
115
+ out.set(relationKeyOf(node), { node, base: relationBaseName(node.tableSchema) });
116
+ }
117
+ for (const child of node.getChildren()) {
118
+ collectInto(child, out);
119
+ }
120
+ }
121
+ //# sourceMappingURL=relation-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-key.js","sourceRoot":"","sources":["../../../../src/planner/analysis/relation-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAoB3D;6EAC6E;AAC7E,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,MAA4C;IAC5E,OAAO,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,MAAiC;IAC9E,OAAO,GAAG,IAAI,IAAI,MAAM,IAAI,eAAe,EAAE,CAAC;AAC/C,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,aAAa,CAAC,GAAuB;IACpD,OAAO,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAwB,EAAE,WAAoB;IACnF,IAAI,IAAI,YAAY,kBAAkB;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5D,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,GAAgB;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAgB,EAAE,OAAe;IACpE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAgB,EAAE,MAAiC;IACvF,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAc;IACpD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAmC,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,IAAc,EAAE,GAAyC;IAC7E,IAAI,IAAI,YAAY,kBAAkB,EAAE,CAAC;QACxC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,WAAW,CAAC,KAA4B,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scalar-param-usage.d.ts","sourceRoot":"","sources":["../../../../src/planner/analysis/scalar-param-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AA+CtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CA+BhF"}
1
+ {"version":3,"file":"scalar-param-usage.d.ts","sourceRoot":"","sources":["../../../../src/planner/analysis/scalar-param-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAuDtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CA+BhF"}
@@ -2,14 +2,22 @@ import { BinaryOpNode, CastNode, BetweenNode } from '../nodes/scalar.js';
2
2
  import { InNode } from '../nodes/subquery.js';
3
3
  import { ParameterReferenceNode } from '../nodes/reference.js';
4
4
  import { PhysicalType } from '../../types/logical-type.js';
5
+ import { classifyBinaryOperator } from './binary-operator-class.js';
5
6
  /**
6
- * Comparison operators whose runtime compares operands by storage class
7
+ * True for the operators whose runtime compares operands by storage class
7
8
  * (`emitComparisonOp` in runtime/emit/binary.ts). An array/object value on one
8
9
  * side and a scalar on the other can never be equal/ordered — the OBJECT
9
10
  * storage class sorts above every scalar — so the predicate silently matches
10
- * nothing. `IS` / `IS NOT` are null-safe and intentionally excluded.
11
+ * nothing. `IS` / `IS NOT` are null-safe and intentionally excluded, which is
12
+ * why this asks for the `comparison` class rather than `isComparisonOperator`
13
+ * (that one also accepts the `is` class, for collation validation).
14
+ *
15
+ * Read off the shared classification rather than a private list — see
16
+ * `analysis/binary-operator-class.ts`.
11
17
  */
12
- const SCALAR_COMPARISON_OPS = new Set(['=', '==', '!=', '<>', '<', '<=', '>', '>=']);
18
+ function isScalarComparisonOperator(operator) {
19
+ return classifyBinaryOperator(operator) === 'comparison';
20
+ }
13
21
  /** A non-object scalar physical type — INTEGER / REAL / TEXT / BLOB / BOOLEAN. */
14
22
  function isScalarPhysical(pt) {
15
23
  return pt === PhysicalType.INTEGER
@@ -60,7 +68,7 @@ export function collectScalarRequiredParams(plan) {
60
68
  const out = new Set();
61
69
  plan.visit((node) => {
62
70
  if (node instanceof BinaryOpNode) {
63
- if (!SCALAR_COMPARISON_OPS.has(node.expression.operator.toUpperCase()))
71
+ if (!isScalarComparisonOperator(node.expression.operator))
64
72
  return;
65
73
  consider(node.left, [node.right], out);
66
74
  consider(node.right, [node.left], out);
@@ -1 +1 @@
1
- {"version":3,"file":"scalar-param-usage.js","sourceRoot":"","sources":["../../../../src/planner/analysis/scalar-param-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scalar-param-usage.js","sourceRoot":"","sources":["../../../../src/planner/analysis/scalar-param-usage.ts"],"names":[],"mappings":"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"}
@@ -9,15 +9,21 @@
9
9
  * comparator keys off it, predicate coercion decides casts from it). The merge is
10
10
  * order-independent: swapping the operands can never change the result.
11
11
  *
12
+ * Every result position with that same shape — one column, several branches, no
13
+ * branch converted — folds through {@link mergeSetOpAdvertisedType} rather than
14
+ * inventing its own rule: CASE arms (`CaseExprNode`), VALUES rows across ALL rows
15
+ * (`ValuesNode`), the value-returning polymorphic builtins (`findCommonType` for
16
+ * coalesce/iif/choose/greatest/least) and LAG/LEAD's default argument. Arithmetic
17
+ * is NOT one of them — it produces ONE converted value, so it promotes separately
18
+ * (see docs/types-inference.md § Binary operator result types).
19
+ *
12
20
  * Rules, first match wins (see docs/types.md § Where coercion happens):
13
21
  * 1. Identical logical types → that type (registry singletons, identity compare).
14
22
  * 2. Either side is NULL → the other side's type (a `select null` branch is a
15
23
  * valid member of every type and must not poison a well-typed union).
16
24
  * 3. Both builtin numeric (and differing) → NUMERIC, whose value space
17
25
  * (`number | bigint`) covers both branches as they actually are — no branch
18
- * conversion needed. NOT the CASE rule ("arms differ ⇒ TEXT") — `1 union all
19
- * 2.5` must stay numeric; and NOT arithmetic's INTEGER + REAL → REAL, which
20
- * describes one value, not a stream mixing both forms.
26
+ * conversion needed. `1 union all 2.5` must stay numeric.
21
27
  * 4. Exactly one side object-physical (JSON today) → the object side's type,
22
28
  * with the other operand marked `convert` — the same rule and direction
23
29
  * `insertCrossTypeCoercion` applies to comparisons (casting the JSON side to
@@ -1 +1 @@
1
- {"version":3,"file":"set-op-type-merge.d.ts","sourceRoot":"","sources":["../../../../src/planner/analysis/set-op-type-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAOD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,oBAAoB,CAoChG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW,CAG3F"}
1
+ {"version":3,"file":"set-op-type-merge.d.ts","sourceRoot":"","sources":["../../../../src/planner/analysis/set-op-type-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACpC,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACpC;AAOD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,oBAAoB,CA4ChG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW,CAG3F"}
@@ -9,15 +9,21 @@
9
9
  * comparator keys off it, predicate coercion decides casts from it). The merge is
10
10
  * order-independent: swapping the operands can never change the result.
11
11
  *
12
+ * Every result position with that same shape — one column, several branches, no
13
+ * branch converted — folds through {@link mergeSetOpAdvertisedType} rather than
14
+ * inventing its own rule: CASE arms (`CaseExprNode`), VALUES rows across ALL rows
15
+ * (`ValuesNode`), the value-returning polymorphic builtins (`findCommonType` for
16
+ * coalesce/iif/choose/greatest/least) and LAG/LEAD's default argument. Arithmetic
17
+ * is NOT one of them — it produces ONE converted value, so it promotes separately
18
+ * (see docs/types-inference.md § Binary operator result types).
19
+ *
12
20
  * Rules, first match wins (see docs/types.md § Where coercion happens):
13
21
  * 1. Identical logical types → that type (registry singletons, identity compare).
14
22
  * 2. Either side is NULL → the other side's type (a `select null` branch is a
15
23
  * valid member of every type and must not poison a well-typed union).
16
24
  * 3. Both builtin numeric (and differing) → NUMERIC, whose value space
17
25
  * (`number | bigint`) covers both branches as they actually are — no branch
18
- * conversion needed. NOT the CASE rule ("arms differ ⇒ TEXT") — `1 union all
19
- * 2.5` must stay numeric; and NOT arithmetic's INTEGER + REAL → REAL, which
20
- * describes one value, not a stream mixing both forms.
26
+ * conversion needed. `1 union all 2.5` must stay numeric.
21
27
  * 4. Exactly one side object-physical (JSON today) → the object side's type,
22
28
  * with the other operand marked `convert` — the same rule and direction
23
29
  * `insertCrossTypeCoercion` applies to comparisons (casting the JSON side to
@@ -44,6 +50,12 @@ function isBuiltinNumeric(t) {
44
50
  */
45
51
  export function mergeSetOpColumnType(left, right) {
46
52
  // 1. Identical (the registry hands out one instance per type).
53
+ // NOTE: a schema that round-trips through persistence (observed once on the
54
+ // store module's rename path) can hold a NON-singleton LogicalType, which this
55
+ // identity compare — and rule 3's isBuiltinNumeric — then miss; the merge
56
+ // degrades to NUMERIC/ANY (over-wide, never wrong). If store-backed columns
57
+ // ever visibly advertise ANY where the types match, switch these to
58
+ // name-based comparison.
47
59
  if (left === right)
48
60
  return { logicalType: left };
49
61
  // 2. NULL is a member of every type; the other side's claim stands.
@@ -56,11 +68,13 @@ export function mergeSetOpColumnType(left, right) {
56
68
  // space the unconverted mixed stream inhabits. A non-builtin numeric type has
57
69
  // no principled promotion — fall through to ANY (rule 5) rather than guess.
58
70
  //
59
- // Do NOT "restore consistency" with `BinaryOpNode.generateType` / `findCommonType`,
60
- // which promote INTEGER + REAL to REAL — correct there (one value in one form),
61
- // wrong here (a stream mixing both). Advertising REAL makes `buildRowCoercion`
62
- // skip conversion on the identity match, landing a bigint unconverted in a
63
- // REAL-declared column (ticket `set-op-numeric-promotion-skips-conversion`).
71
+ // Do NOT "simplify" this to INTEGER + REAL → REAL. Advertising REAL used to land
72
+ // a bigint unconverted in a REAL-declared column, because `buildRowCoercion`
73
+ // skipped the identity match outright (ticket
74
+ // `set-op-numeric-promotion-skips-conversion`). Its conformance guard now catches
75
+ // that, but the merge still must not claim REAL: the guard would convert the
76
+ // INTEGER branch's bigints to doubles, trading a representation violation for
77
+ // silent precision loss.
64
78
  if (left.isNumeric && right.isNumeric) {
65
79
  if (isBuiltinNumeric(left) && isBuiltinNumeric(right))
66
80
  return { logicalType: NUMERIC_TYPE };
@@ -1 +1 @@
1
- {"version":3,"file":"set-op-type-merge.js","sourceRoot":"","sources":["../../../../src/planner/analysis/set-op-type-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAc1G,sFAAsF;AACtF,SAAS,gBAAgB,CAAC,CAAc;IACvC,OAAO,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAiB,EAAE,KAAkB;IACzE,+DAA+D;IAC/D,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAEjD,oEAAoE;IACpE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAEtD,+EAA+E;IAC/E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,EAAE;IACF,oFAAoF;IACpF,gFAAgF;IAChF,+EAA+E;IAC/E,2EAA2E;IAC3E,6EAA6E;IAC7E,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QAC5F,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,sBAAsB;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC;IAC/D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,UAAU;YAChB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;YACzC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAiB,EAAE,KAAkB;IAC7E,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"set-op-type-merge.js","sourceRoot":"","sources":["../../../../src/planner/analysis/set-op-type-merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAc1G,sFAAsF;AACtF,SAAS,gBAAgB,CAAC,CAAc;IACvC,OAAO,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAiB,EAAE,KAAkB;IACzE,+DAA+D;IAC/D,4EAA4E;IAC5E,+EAA+E;IAC/E,0EAA0E;IAC1E,4EAA4E;IAC5E,oEAAoE;IACpE,yBAAyB;IACzB,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAEjD,oEAAoE;IACpE,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAEtD,+EAA+E;IAC/E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,EAAE;IACF,iFAAiF;IACjF,6EAA6E;IAC7E,8CAA8C;IAC9C,kFAAkF;IAClF,6EAA6E;IAC7E,8EAA8E;IAC9E,yBAAyB;IACzB,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;QAC5F,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,sBAAsB;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,KAAK,YAAY,CAAC,MAAM,CAAC;IAC/D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,UAAU;YAChB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;YACzC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAiB,EAAE,KAAkB;IAC7E,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/alter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EAAY,KAAK,QAAQ,EAA2D,MAAM,uBAAuB,CAAC;AAezH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,cAAc,GACvB,QAAQ,CAyOV"}
1
+ {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/alter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EAAY,KAAK,QAAQ,EAA2D,MAAM,uBAAuB,CAAC;AAkBzH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,cAAc,GACvB,QAAQ,CAyOV"}
@@ -6,13 +6,16 @@ import { StatusCode } from '../../common/types.js';
6
6
  import { PlanNode } from '../nodes/plan-node.js';
7
7
  import { buildExpression } from './expression.js';
8
8
  import { buildRowDefaultScope } from './default-scope.js';
9
- import { validateDeterministicDefault, validateDeterministicGenerated } from '../validation/determinism-validator.js';
9
+ import { validateDeterministicDefault } from '../validation/determinism-validator.js';
10
+ import { buildGeneratedColumnExpr } from './generated-column-scope.js';
10
11
  import { tryFoldLiteral } from '../../parser/utils.js';
11
12
  import { inferType } from '../../types/registry.js';
13
+ import { buildCellCoercion } from '../../types/validation.js';
12
14
  import { columnSchemaToScalarType } from '../type-utils.js';
13
15
  import { astToString, expressionToString } from '../../emit/ast-stringify.js';
14
16
  import { validateReservedTags } from '../../schema/reserved-tags.js';
15
17
  import { validateAddColumnGeneratedRefs } from '../../schema/table.js';
18
+ import { buildColumnSourceResolver } from '../../schema/column-source-resolver.js';
16
19
  import { columnTagDiagnostics, raiseStmtTagDiagnostics } from './tag-diagnostics.js';
17
20
  import { planViewBody } from './create-view.js';
18
21
  import { schemaAuthoredContext } from './schema-authored-context.js';
@@ -239,7 +242,7 @@ function buildAddColumnBackfill(ctx, tableReference, columnDef) {
239
242
  // compile below turns an unresolvable (or self-referencing) name into a generic
240
243
  // "Column not found".
241
244
  if (generatedExpr) {
242
- validateAddColumnGeneratedRefs(generatedExpr, columnDef.name, tableSchema.columns, tableSchema.name);
245
+ validateAddColumnGeneratedRefs(generatedExpr, columnDef.name, tableSchema.columns, tableSchema.name, tableSchema.schemaName, buildColumnSourceResolver(ctx.db));
243
246
  }
244
247
  // Fresh attributes for the existing columns, referenced only by this expression's
245
248
  // column refs and resolved at runtime via the row slot the emitter installs over
@@ -251,34 +254,39 @@ function buildAddColumnBackfill(ctx, tableReference, columnDef) {
251
254
  type: columnSchemaToScalarType(column),
252
255
  sourceRelation: 'add-column-backfill',
253
256
  }));
254
- const rowScope = buildRowDefaultScope(ctx.scope, tableSchema.columns, rowAttrs);
255
- // Schema-authored SQL, wrapped exactly as the three DML builders wrap theirs, so the
256
- // backfill expression resolves bare relation names against the altered table's own
257
- // schema — not whatever path the ALTER runs on. The CTE half of the wrapper is inert
258
- // here (ALTER is not an `AST.QueryExpr`, so it can neither be a CTE body nor carry a
259
- // `with` clause of its own); the schema-path half is the load-bearing part.
260
- const node = buildExpression({ ...schemaAuthoredContext(ctx, tableSchema.schemaName), scope: rowScope }, sourceExpr);
261
- // Same validator each arm's write-path build site uses, so an ALTER accepts exactly
262
- // what the equivalent CREATE TABLE + INSERT accepts. Both honour
263
- // `nondeterministic_schema`, so the escape hatch is unchanged.
264
- if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
265
- if (generatedExpr) {
266
- validateDeterministicGenerated(node, columnDef.name, tableSchema.name);
267
- }
268
- else {
257
+ let node;
258
+ if (generatedExpr) {
259
+ // The generated arm goes through the builder every write-path site shares, so a
260
+ // GENERATED ALWAYS AS declaration this ALTER accepts is one every subsequent
261
+ // INSERT / UPDATE / upsert recompute accepts — same accepted spellings, same
262
+ // `schemaAuthoredContext` wrapper, same determinism validation.
263
+ node = buildGeneratedColumnExpr(ctx, tableSchema, columnDef.name, generatedExpr, rowAttrs);
264
+ }
265
+ else {
266
+ const rowScope = buildRowDefaultScope(ctx.scope, tableSchema.columns, rowAttrs);
267
+ // Schema-authored SQL, wrapped exactly as the three DML builders wrap theirs, so the
268
+ // backfill expression resolves bare relation names against the altered table's own
269
+ // schema — not whatever path the ALTER runs on. The CTE half of the wrapper is inert
270
+ // here (ALTER is not an `AST.QueryExpr`, so it can neither be a CTE body nor carry a
271
+ // `with` clause of its own); the schema-path half is the load-bearing part.
272
+ node = buildExpression({ ...schemaAuthoredContext(ctx, tableSchema.schemaName), scope: rowScope }, sourceExpr);
273
+ // Same validator the DEFAULT's write-path build site uses, so an ALTER accepts
274
+ // exactly what the equivalent CREATE TABLE + INSERT accepts. It honours
275
+ // `nondeterministic_schema`, so the escape hatch is unchanged.
276
+ if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
269
277
  validateDeterministicDefault(node, columnDef.name, tableSchema.name);
270
278
  }
271
279
  }
272
280
  const rowDescriptor = [];
273
281
  rowAttrs.forEach((attr, index) => { rowDescriptor[attr.id] = index; });
274
282
  // The evaluated value has to reach storage in the new column's declared form, exactly as an
275
- // INSERT's would. Skip the conversion when the expression's static type already IS that type
276
- // (identity comparison — the registry hands out one shared LogicalType instance per type),
277
- // mirroring `buildRowCoercion`: re-converting an already-converted value is destructive for
278
- // JSON. See `AddColumnBackfill.coerceTo`.
283
+ // INSERT's would — so it takes the same decision, from the same helper the DML write path
284
+ // uses (`buildCellCoercion`), rather than an open-coded copy the two sites could drift on.
285
+ // Convert unless the expression's static type already IS the new column's type AND the
286
+ // value in hand already inhabits it. See `AddColumnBackfill.coerce`.
279
287
  const newColumnType = inferType(columnDef.dataType);
280
- const coerceTo = node.getType().logicalType === newColumnType ? undefined : newColumnType;
281
- return { node, rowDescriptor, coerceTo };
288
+ const coerce = buildCellCoercion(node.getType().logicalType, newColumnType, columnDef.name);
289
+ return { node, rowDescriptor, coerce };
282
290
  }
283
291
  /**
284
292
  * Compile the column-level CHECK predicates of an ADD COLUMN that backfills per row (a
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.js","sourceRoot":"","sources":["../../../../src/planner/building/alter-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alter-table.js","sourceRoot":"","sources":["../../../../src/planner/building/alter-table.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,QAAQ,CAEtF"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAOtD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,QAAQ,CAwBtF"}
@@ -1,5 +1,26 @@
1
1
  import { AnalyzePlanNode } from '../nodes/analyze-node.js';
2
+ import { isCommittedSchemaRef, resolveTableSchema } from './schema-resolution.js';
3
+ import { QuereusError } from '../../common/errors.js';
4
+ import { StatusCode } from '../../common/types.js';
5
+ import { isViewSchema } from '../../schema/view.js';
2
6
  export function buildAnalyzeStmt(ctx, stmt) {
7
+ if (stmt.tableName) {
8
+ // A plain view has no stored rows to analyze — reject it by name before
9
+ // resolveTableSchema (table-only) turns it into a misleading "not found".
10
+ // The `committed` pseudo-schema is dropped here for the same reason
11
+ // resolveTableSchema drops it: it is not a real schema, so the name behind
12
+ // it resolves through the search path.
13
+ const lookupSchema = isCommittedSchemaRef(stmt.schemaName) ? undefined : stmt.schemaName;
14
+ const item = ctx.schemaManager.findSchemaItem(stmt.tableName, lookupSchema, ctx.schemaPath);
15
+ if (isViewSchema(item)) {
16
+ throw new QuereusError(`Cannot ANALYZE view '${item.schemaName}.${item.name}': a view has no stored rows to collect statistics from.`, StatusCode.ERROR);
17
+ }
18
+ const tableSchema = resolveTableSchema(ctx, stmt.tableName, stmt.schemaName);
19
+ return new AnalyzePlanNode(ctx.scope, stmt, tableSchema.name, tableSchema.schemaName);
20
+ }
21
+ if (stmt.schemaName && !ctx.schemaManager.getSchema(stmt.schemaName)) {
22
+ throw new QuereusError(`Schema not found: ${stmt.schemaName}`, StatusCode.ERROR);
23
+ }
3
24
  return new AnalyzePlanNode(ctx.scope, stmt, stmt.tableName, stmt.schemaName);
4
25
  }
5
26
  //# sourceMappingURL=analyze.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../src/planner/building/analyze.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,UAAU,gBAAgB,CAAC,GAAoB,EAAE,IAAqB;IAC3E,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../src/planner/building/analyze.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,GAAoB,EAAE,IAAqB;IAC3E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,wEAAwE;QACxE,0EAA0E;QAC1E,oEAAoE;QACpE,2EAA2E;QAC3E,uCAAuC;QACvC,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACzF,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5F,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CACrB,wBAAwB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,0DAA0D,EAC9G,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7E,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,YAAY,CAAC,qBAAqB,IAAI,CAAC,UAAU,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2B9D,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,SAAS,CA8FvF"}
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA+B9D,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,SAAS,CAqCvF"}