@quereus/quereus 4.10.0 → 4.12.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 (457) 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 +5 -3
  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 +3 -2
  126. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  127. package/dist/src/planner/building/constraint-builder.js +20 -27
  128. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  129. package/dist/src/planner/building/delete.d.ts.map +1 -1
  130. package/dist/src/planner/building/delete.js +8 -25
  131. package/dist/src/planner/building/delete.js.map +1 -1
  132. package/dist/src/planner/building/expression.d.ts.map +1 -1
  133. package/dist/src/planner/building/expression.js +11 -3
  134. package/dist/src/planner/building/expression.js.map +1 -1
  135. package/dist/src/planner/building/foreign-key-builder.d.ts +19 -8
  136. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  137. package/dist/src/planner/building/foreign-key-builder.js +56 -37
  138. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  139. package/dist/src/planner/building/generated-column-scope.d.ts +58 -0
  140. package/dist/src/planner/building/generated-column-scope.d.ts.map +1 -0
  141. package/dist/src/planner/building/generated-column-scope.js +117 -0
  142. package/dist/src/planner/building/generated-column-scope.js.map +1 -0
  143. package/dist/src/planner/building/insert.d.ts.map +1 -1
  144. package/dist/src/planner/building/insert.js +36 -60
  145. package/dist/src/planner/building/insert.js.map +1 -1
  146. package/dist/src/planner/building/mutation-context.d.ts +63 -0
  147. package/dist/src/planner/building/mutation-context.d.ts.map +1 -0
  148. package/dist/src/planner/building/mutation-context.js +126 -0
  149. package/dist/src/planner/building/mutation-context.js.map +1 -0
  150. package/dist/src/planner/building/select-aggregates.d.ts +73 -132
  151. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  152. package/dist/src/planner/building/select-aggregates.js +405 -81
  153. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  154. package/dist/src/planner/building/select-modifiers.d.ts +37 -8
  155. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  156. package/dist/src/planner/building/select-modifiers.js +8 -9
  157. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  158. package/dist/src/planner/building/select-ordinal.d.ts +6 -0
  159. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  160. package/dist/src/planner/building/select-ordinal.js +1 -1
  161. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  162. package/dist/src/planner/building/select-window.d.ts +2 -2
  163. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  164. package/dist/src/planner/building/select-window.js +82 -101
  165. package/dist/src/planner/building/select-window.js.map +1 -1
  166. package/dist/src/planner/building/select.d.ts.map +1 -1
  167. package/dist/src/planner/building/select.js +78 -33
  168. package/dist/src/planner/building/select.js.map +1 -1
  169. package/dist/src/planner/building/update.d.ts.map +1 -1
  170. package/dist/src/planner/building/update.js +21 -32
  171. package/dist/src/planner/building/update.js.map +1 -1
  172. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  173. package/dist/src/planner/building/view-mutation-builder.js +329 -14
  174. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  175. package/dist/src/planner/building/with.d.ts +6 -0
  176. package/dist/src/planner/building/with.d.ts.map +1 -1
  177. package/dist/src/planner/building/with.js +52 -3
  178. package/dist/src/planner/building/with.js.map +1 -1
  179. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  180. package/dist/src/planner/cache/correlation-detector.js +44 -17
  181. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  182. package/dist/src/planner/framework/physical-utils.d.ts +6 -0
  183. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  184. package/dist/src/planner/framework/physical-utils.js +6 -0
  185. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  186. package/dist/src/planner/mutation/lens-enforcement.d.ts +123 -0
  187. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  188. package/dist/src/planner/mutation/lens-enforcement.js +362 -5
  189. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  190. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
  191. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
  192. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
  193. package/dist/src/planner/nodes/alter-table-node.d.ts +15 -11
  194. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  195. package/dist/src/planner/nodes/alter-table-node.js +5 -0
  196. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  197. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  198. package/dist/src/planner/nodes/bloom-join-node.js +7 -0
  199. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  200. package/dist/src/planner/nodes/constraint-check-node.d.ts +16 -0
  201. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  203. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
  204. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/plan-node-type.js +1 -1
  206. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  207. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  208. package/dist/src/planner/nodes/pragma.js +5 -2
  209. package/dist/src/planner/nodes/pragma.js.map +1 -1
  210. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  211. package/dist/src/planner/nodes/reference.js +9 -1
  212. package/dist/src/planner/nodes/reference.js.map +1 -1
  213. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  214. package/dist/src/planner/nodes/scalar.js +117 -91
  215. package/dist/src/planner/nodes/scalar.js.map +1 -1
  216. package/dist/src/planner/nodes/sequence-node.d.ts +50 -0
  217. package/dist/src/planner/nodes/sequence-node.d.ts.map +1 -0
  218. package/dist/src/planner/nodes/sequence-node.js +96 -0
  219. package/dist/src/planner/nodes/sequence-node.js.map +1 -0
  220. package/dist/src/planner/nodes/values-node.d.ts +8 -0
  221. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  222. package/dist/src/planner/nodes/values-node.js +29 -6
  223. package/dist/src/planner/nodes/values-node.js.map +1 -1
  224. package/dist/src/planner/nodes/view-mutation-node.d.ts +43 -1
  225. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  226. package/dist/src/planner/nodes/view-mutation-node.js +27 -6
  227. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  228. package/dist/src/planner/nodes/window-node.d.ts +33 -4
  229. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  230. package/dist/src/planner/nodes/window-node.js +80 -36
  231. package/dist/src/planner/nodes/window-node.js.map +1 -1
  232. package/dist/src/planner/planning-context.d.ts +38 -1
  233. package/dist/src/planner/planning-context.d.ts.map +1 -1
  234. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  235. package/dist/src/planner/rules/access/rule-key-set-seek.js +8 -3
  236. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  237. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +18 -12
  238. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  239. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +4 -3
  240. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  241. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  242. package/dist/src/planner/rules/window/rule-monotonic-window.js +6 -0
  243. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  244. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  245. package/dist/src/planner/scopes/param.js +10 -5
  246. package/dist/src/planner/scopes/param.js.map +1 -1
  247. package/dist/src/planner/util/ind-utils.d.ts +25 -8
  248. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  249. package/dist/src/planner/util/ind-utils.js +53 -10
  250. package/dist/src/planner/util/ind-utils.js.map +1 -1
  251. package/dist/src/planner/util/key-utils.d.ts +7 -7
  252. package/dist/src/planner/util/key-utils.js +9 -9
  253. package/dist/src/planner/util/key-utils.js.map +1 -1
  254. package/dist/src/runtime/delta-executor.d.ts.map +1 -1
  255. package/dist/src/runtime/delta-executor.js +7 -2
  256. package/dist/src/runtime/delta-executor.js.map +1 -1
  257. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  258. package/dist/src/runtime/emit/add-constraint.js +50 -15
  259. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  260. package/dist/src/runtime/emit/alter-schema-event.d.ts +2 -43
  261. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -1
  262. package/dist/src/runtime/emit/alter-schema-event.js +2 -53
  263. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -1
  264. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  265. package/dist/src/runtime/emit/alter-table.js +70 -26
  266. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  267. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  268. package/dist/src/runtime/emit/analyze.js +7 -0
  269. package/dist/src/runtime/emit/analyze.js.map +1 -1
  270. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
  271. package/dist/src/runtime/emit/assertion-rename-helpers.js +2 -3
  272. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
  273. package/dist/src/runtime/emit/binary.d.ts +5 -0
  274. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  275. package/dist/src/runtime/emit/binary.js +22 -22
  276. package/dist/src/runtime/emit/binary.js.map +1 -1
  277. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  278. package/dist/src/runtime/emit/block.js +9 -3
  279. package/dist/src/runtime/emit/block.js.map +1 -1
  280. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  281. package/dist/src/runtime/emit/constraint-check.js +22 -13
  282. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  283. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  284. package/dist/src/runtime/emit/create-assertion.js +71 -70
  285. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  286. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  287. package/dist/src/runtime/emit/create-index.js +8 -3
  288. package/dist/src/runtime/emit/create-index.js.map +1 -1
  289. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  290. package/dist/src/runtime/emit/create-table.js +20 -10
  291. package/dist/src/runtime/emit/create-table.js.map +1 -1
  292. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  293. package/dist/src/runtime/emit/create-view.js +51 -44
  294. package/dist/src/runtime/emit/create-view.js.map +1 -1
  295. package/dist/src/runtime/emit/ddl-event-scope.d.ts +71 -0
  296. package/dist/src/runtime/emit/ddl-event-scope.d.ts.map +1 -0
  297. package/dist/src/runtime/emit/ddl-event-scope.js +80 -0
  298. package/dist/src/runtime/emit/ddl-event-scope.js.map +1 -0
  299. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  300. package/dist/src/runtime/emit/dml-executor.js +28 -24
  301. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  302. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  303. package/dist/src/runtime/emit/drop-assertion.js +23 -17
  304. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  305. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  306. package/dist/src/runtime/emit/drop-index.js +7 -2
  307. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  308. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  309. package/dist/src/runtime/emit/drop-table.js +16 -10
  310. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  311. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  312. package/dist/src/runtime/emit/drop-view.js +50 -43
  313. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  314. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  315. package/dist/src/runtime/emit/insert.js +2 -1
  316. package/dist/src/runtime/emit/insert.js.map +1 -1
  317. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  318. package/dist/src/runtime/emit/materialized-view.js +87 -67
  319. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  320. package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
  321. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  322. package/dist/src/runtime/emit/schema-declarative.js +128 -25
  323. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  324. package/dist/src/runtime/emit/sequence.d.ts +17 -0
  325. package/dist/src/runtime/emit/sequence.d.ts.map +1 -0
  326. package/dist/src/runtime/emit/sequence.js +40 -0
  327. package/dist/src/runtime/emit/sequence.js.map +1 -0
  328. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  329. package/dist/src/runtime/emit/set-object-tags.js +40 -32
  330. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  331. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  332. package/dist/src/runtime/emit/table-valued-function.js +3 -2
  333. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  334. package/dist/src/runtime/emit/update.js +3 -3
  335. package/dist/src/runtime/emit/update.js.map +1 -1
  336. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  337. package/dist/src/runtime/emit/view-mutation.js +45 -3
  338. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  339. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  340. package/dist/src/runtime/foreign-key-actions.js +9 -10
  341. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  342. package/dist/src/runtime/register.d.ts.map +1 -1
  343. package/dist/src/runtime/register.js +3 -2
  344. package/dist/src/runtime/register.js.map +1 -1
  345. package/dist/src/runtime/row-constraints.d.ts +14 -8
  346. package/dist/src/runtime/row-constraints.d.ts.map +1 -1
  347. package/dist/src/runtime/row-constraints.js +41 -15
  348. package/dist/src/runtime/row-constraints.js.map +1 -1
  349. package/dist/src/runtime/strict-representation.d.ts +11 -6
  350. package/dist/src/runtime/strict-representation.d.ts.map +1 -1
  351. package/dist/src/runtime/strict-representation.js +1 -44
  352. package/dist/src/runtime/strict-representation.js.map +1 -1
  353. package/dist/src/schema/assertion.d.ts +25 -2
  354. package/dist/src/schema/assertion.d.ts.map +1 -1
  355. package/dist/src/schema/assertion.js.map +1 -1
  356. package/dist/src/schema/catalog-rendering.d.ts +38 -0
  357. package/dist/src/schema/catalog-rendering.d.ts.map +1 -0
  358. package/dist/src/schema/catalog-rendering.js +171 -0
  359. package/dist/src/schema/catalog-rendering.js.map +1 -0
  360. package/dist/src/schema/catalog.d.ts +94 -5
  361. package/dist/src/schema/catalog.d.ts.map +1 -1
  362. package/dist/src/schema/catalog.js +159 -21
  363. package/dist/src/schema/catalog.js.map +1 -1
  364. package/dist/src/schema/column-source-resolver.d.ts +9 -5
  365. package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
  366. package/dist/src/schema/column-source-resolver.js +9 -5
  367. package/dist/src/schema/column-source-resolver.js.map +1 -1
  368. package/dist/src/schema/constraint-builder.d.ts +23 -7
  369. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  370. package/dist/src/schema/constraint-builder.js +60 -16
  371. package/dist/src/schema/constraint-builder.js.map +1 -1
  372. package/dist/src/schema/declared-schema-manager.d.ts +50 -0
  373. package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
  374. package/dist/src/schema/declared-schema-manager.js +52 -0
  375. package/dist/src/schema/declared-schema-manager.js.map +1 -1
  376. package/dist/src/schema/expr-scope/frame.d.ts +65 -0
  377. package/dist/src/schema/expr-scope/frame.d.ts.map +1 -0
  378. package/dist/src/schema/expr-scope/frame.js +104 -0
  379. package/dist/src/schema/expr-scope/frame.js.map +1 -0
  380. package/dist/src/schema/expr-scope/walk.d.ts +40 -0
  381. package/dist/src/schema/expr-scope/walk.d.ts.map +1 -0
  382. package/dist/src/schema/expr-scope/walk.js +260 -0
  383. package/dist/src/schema/expr-scope/walk.js.map +1 -0
  384. package/dist/src/schema/generated-column-refs.d.ts +41 -0
  385. package/dist/src/schema/generated-column-refs.d.ts.map +1 -0
  386. package/dist/src/schema/generated-column-refs.js +124 -0
  387. package/dist/src/schema/generated-column-refs.js.map +1 -0
  388. package/dist/src/schema/lens-ack.d.ts.map +1 -1
  389. package/dist/src/schema/lens-ack.js +5 -2
  390. package/dist/src/schema/lens-ack.js.map +1 -1
  391. package/dist/src/schema/lens-compiler.d.ts.map +1 -1
  392. package/dist/src/schema/lens-compiler.js +9 -1
  393. package/dist/src/schema/lens-compiler.js.map +1 -1
  394. package/dist/src/schema/lens-prover.d.ts +7 -2
  395. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  396. package/dist/src/schema/lens-prover.js +105 -11
  397. package/dist/src/schema/lens-prover.js.map +1 -1
  398. package/dist/src/schema/lens.d.ts +12 -0
  399. package/dist/src/schema/lens.d.ts.map +1 -1
  400. package/dist/src/schema/lens.js +10 -0
  401. package/dist/src/schema/lens.js.map +1 -1
  402. package/dist/src/schema/manager.d.ts +48 -1
  403. package/dist/src/schema/manager.d.ts.map +1 -1
  404. package/dist/src/schema/manager.js +168 -36
  405. package/dist/src/schema/manager.js.map +1 -1
  406. package/dist/src/schema/rename/self-qualifier-strip.d.ts +16 -10
  407. package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -1
  408. package/dist/src/schema/rename/self-qualifier-strip.js +30 -213
  409. package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -1
  410. package/dist/src/schema/rename-rewriter.d.ts +4 -3
  411. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  412. package/dist/src/schema/rename-rewriter.js +4 -3
  413. package/dist/src/schema/rename-rewriter.js.map +1 -1
  414. package/dist/src/schema/schema-differ.d.ts +54 -6
  415. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  416. package/dist/src/schema/schema-differ.js +108 -42
  417. package/dist/src/schema/schema-differ.js.map +1 -1
  418. package/dist/src/schema/schema-hasher.d.ts +12 -0
  419. package/dist/src/schema/schema-hasher.d.ts.map +1 -1
  420. package/dist/src/schema/schema-hasher.js +28 -10
  421. package/dist/src/schema/schema-hasher.js.map +1 -1
  422. package/dist/src/schema/table.d.ts +117 -19
  423. package/dist/src/schema/table.d.ts.map +1 -1
  424. package/dist/src/schema/table.js +213 -71
  425. package/dist/src/schema/table.js.map +1 -1
  426. package/dist/src/types/comparison-coercion.d.ts +5 -1
  427. package/dist/src/types/comparison-coercion.d.ts.map +1 -1
  428. package/dist/src/types/comparison-coercion.js +21 -5
  429. package/dist/src/types/comparison-coercion.js.map +1 -1
  430. package/dist/src/types/representation.d.ts +65 -0
  431. package/dist/src/types/representation.d.ts.map +1 -0
  432. package/dist/src/types/representation.js +63 -0
  433. package/dist/src/types/representation.js.map +1 -0
  434. package/dist/src/types/validation.d.ts +76 -22
  435. package/dist/src/types/validation.d.ts.map +1 -1
  436. package/dist/src/types/validation.js +110 -31
  437. package/dist/src/types/validation.js.map +1 -1
  438. package/dist/src/vtab/best-access-plan.d.ts +10 -0
  439. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  440. package/dist/src/vtab/best-access-plan.js +16 -0
  441. package/dist/src/vtab/best-access-plan.js.map +1 -1
  442. package/dist/src/vtab/capabilities.d.ts +72 -4
  443. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  444. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  445. package/dist/src/vtab/memory/layer/manager.js +17 -13
  446. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  447. package/dist/src/vtab/module.d.ts +13 -7
  448. package/dist/src/vtab/module.d.ts.map +1 -1
  449. package/package.json +3 -3
  450. package/dist/src/planner/nodes/array-index-node.d.ts +0 -22
  451. package/dist/src/planner/nodes/array-index-node.d.ts.map +0 -1
  452. package/dist/src/planner/nodes/array-index-node.js +0 -41
  453. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  454. package/dist/src/runtime/emit/array-index.d.ts +0 -5
  455. package/dist/src/runtime/emit/array-index.d.ts.map +0 -1
  456. package/dist/src/runtime/emit/array-index.js +0 -22
  457. package/dist/src/runtime/emit/array-index.js.map +0 -1
@@ -14,7 +14,7 @@
14
14
  * resolution for a FK stays deferred (the parent may not exist yet) exactly as
15
15
  * in the CREATE TABLE path.
16
16
  */
17
- import { resolveReferencedColumns, opsToMask } from './table.js';
17
+ import { resolveReferencedColumns, resolveReferencedColumnsForEnforcement, opsToMask, disambiguateAutoConstraintName } from './table.js';
18
18
  import { QuereusError } from '../common/errors.js';
19
19
  import { StatusCode } from '../common/types.js';
20
20
  import { quoteIdentifier, expressionToString } from '../emit/ast-stringify.js';
@@ -51,8 +51,18 @@ export function buildUniqueConstraintSchema(con, columnIndexMap) {
51
51
  * parent-column resolution (the parent table may not exist yet). Mirrors
52
52
  * `SchemaManager.extractForeignKeys` (table-level arm), including the
53
53
  * child/parent column-count mismatch error.
54
+ *
55
+ * `takenNames` is the mint disambiguation set: an unnamed FK's
56
+ * `_fk_<table>_<cols>` mint is disambiguated against — and registered into — it
57
+ * (see `disambiguateAutoConstraintName`), so it can never repeat a name already
58
+ * in use. CREATE TABLE seeds it with the statement's user-written names; every
59
+ * ALTER path seeds it from the table's existing constraint names
60
+ * (`collectTableConstraintNames`). Omitting it is supported only for a caller
61
+ * that genuinely has no table to disambiguate against — an omitted set means an
62
+ * unnamed FK re-added over an existing `_fk_<table>_<cols>` mints that name a
63
+ * SECOND time, and one `DROP CONSTRAINT` then removes both.
54
64
  */
55
- export function buildForeignKeyConstraintSchema(con, columnIndexMap, childTableName, childSchemaName) {
65
+ export function buildForeignKeyConstraintSchema(con, columnIndexMap, childTableName, childSchemaName, takenNames) {
56
66
  if (con.type !== 'foreignKey' || !con.foreignKey || !con.columns) {
57
67
  throw new QuereusError('FOREIGN KEY constraint requires child columns and a REFERENCES clause', StatusCode.ERROR);
58
68
  }
@@ -64,7 +74,9 @@ export function buildForeignKeyConstraintSchema(con, columnIndexMap, childTableN
64
74
  }
65
75
  return idx;
66
76
  });
67
- const fkName = con.name ?? `_fk_${childTableName}_${con.columns.map(c => c.name).join('_')}`;
77
+ const mintedName = `_fk_${childTableName}_${con.columns.map(c => c.name).join('_')}`;
78
+ const fkName = con.name
79
+ ?? (takenNames !== undefined ? disambiguateAutoConstraintName(mintedName, takenNames) : mintedName);
68
80
  if (fk.columns && fk.columns.length !== childColIndices.length) {
69
81
  throw new QuereusError(`FK constraint '${fkName}' on table '${childTableName}': child column count (${childColIndices.length}) does not match parent column count (${fk.columns.length})`, StatusCode.ERROR);
70
82
  }
@@ -73,7 +85,6 @@ export function buildForeignKeyConstraintSchema(con, columnIndexMap, childTableN
73
85
  columns: Object.freeze(childColIndices),
74
86
  referencedTable: fk.table,
75
87
  referencedSchema: fk.schema ?? childSchemaName,
76
- referencedColumns: Object.freeze([]), // resolved at enforcement time
77
88
  referencedColumnNames: fk.columns, // deferred resolution via resolveReferencedColumns
78
89
  onDelete: fk.onDelete ?? 'restrict',
79
90
  onUpdate: fk.onUpdate ?? 'restrict',
@@ -88,22 +99,48 @@ export function buildForeignKeyConstraintSchema(con, columnIndexMap, childTableN
88
99
  * (memory + store) so a CHECK added via ALTER lands in the *module-cached*
89
100
  * schema, in lock-step with the catalog — the same place inline-CREATE CHECKs
90
101
  * live and where `DROP/RENAME CONSTRAINT` later resolve the constraint class. An
91
- * unnamed CHECK is auto-named `check_<existingCount>`, preserving the engine's
92
- * prior in-emitter naming (`existingCount` = the number of CHECKs already on the
93
- * table). Determinism is intentionally NOT validated here — a CHECK may reference
94
- * `new.*`/`old.*`, which is checked at INSERT/UPDATE plan time.
102
+ * unnamed CHECK is auto-named `check_<n>` — see {@link mintCheckConstraintName}
103
+ * for how `n` is chosen. Determinism is intentionally NOT validated here — a
104
+ * CHECK may reference `new.*`/`old.*`, which is checked at INSERT/UPDATE plan time.
95
105
  */
96
- export function buildCheckConstraintSchema(con, existingCount) {
106
+ export function buildCheckConstraintSchema(con, existingCount, takenNames) {
97
107
  if (con.type !== 'check' || !con.expr) {
98
108
  throw new QuereusError('CHECK constraint requires an expression', StatusCode.ERROR);
99
109
  }
100
110
  return {
101
- name: con.name || `check_${existingCount}`,
111
+ name: con.name || mintCheckConstraintName(existingCount, takenNames),
102
112
  expr: con.expr,
103
113
  operations: opsToMask(con.operations),
104
114
  tags: con.tags && Object.keys(con.tags).length > 0 ? Object.freeze({ ...con.tags }) : undefined,
105
115
  };
106
116
  }
117
+ /**
118
+ * The auto-name for an unnamed table-level CHECK: `check_<n>`, where `n` starts at
119
+ * `existingCount` (the number of CHECKs already on the table — the engine's
120
+ * historical spelling) and is bumped upward until the name is free on that table.
121
+ *
122
+ * `takenNames` is the table's existing constraint names, case-folded, spanning
123
+ * CHECK / UNIQUE / FOREIGN KEY as one namespace (`collectTableConstraintNames`) —
124
+ * the same namespace `namedConstraintExists` and `disambiguateAutoConstraintName`
125
+ * use. Without the probe, `DROP CONSTRAINT check_0` followed by another unnamed
126
+ * add re-mints a LIVE name (the count shrank), leaving two constraints one name
127
+ * addresses and one `DROP` removes both of.
128
+ *
129
+ * NOT `disambiguateAutoConstraintName`: that appends a `_<N>` collision suffix,
130
+ * which on this base would read `check_1_2`. Bumping the index instead keeps the
131
+ * documented `check_<n>` shape. Seeding at `existingCount` rather than scanning
132
+ * from 0 is what keeps every non-colliding name byte-identical to the historical
133
+ * mint — a table whose two CHECKs are USER-named has `existingCount` 2, so the
134
+ * next unnamed add stays `check_2` instead of shifting to a now-free `check_0`.
135
+ */
136
+ function mintCheckConstraintName(existingCount, takenNames) {
137
+ // `check_<n>` is already lower-case, and `takenNames` is case-folded, so no
138
+ // further folding is needed on either side of the membership test.
139
+ let n = existingCount;
140
+ while (takenNames.has(`check_${n}`))
141
+ n++;
142
+ return `check_${n}`;
143
+ }
107
144
  /* ──────────────── ALTER TABLE ADD COLUMN inline constraints ────────────────
108
145
  * A constraint written inline on an added column (`add column c int unique`,
109
146
  * `… check (c > 0)`, `… references p(pid)`) has no table-level AST of its own, so
@@ -126,15 +163,23 @@ export function buildCheckConstraintSchema(con, existingCount) {
126
163
  * {@link buildCheckConstraintSchema} (which would auto-name it `check_<n>`,
127
164
  * the table-level `ADD CONSTRAINT` convention): the inline-CREATE-TABLE spelling
128
165
  * of the same declaration is named `_check_<column>`, and the two paths must agree.
166
+ *
167
+ * `takenNames` (when provided) is the disambiguation set the CREATE TABLE mint
168
+ * sites share — the table's existing constraint names plus this statement's
169
+ * user-written inline names — so two unnamed CHECKs on one new column (legal;
170
+ * see `assertInlineConstraintNamesFree`) mint `_check_<col>` / `_check_<col>_2`
171
+ * exactly as the CREATE TABLE spelling does, instead of two constraints one
172
+ * name addresses. The mint is registered into the set as it is chosen.
129
173
  */
130
- export function extractColumnLevelCheckConstraints(columnDef) {
174
+ export function extractColumnLevelCheckConstraints(columnDef, takenNames) {
131
175
  const result = [];
132
176
  for (const con of columnDef.constraints ?? []) {
133
177
  if (con.type !== 'check' || !con.expr)
134
178
  continue;
179
+ const mint = `_check_${columnDef.name}`;
135
180
  result.push({
136
181
  type: 'check',
137
- name: con.name ?? `_check_${columnDef.name}`,
182
+ name: con.name ?? (takenNames !== undefined ? disambiguateAutoConstraintName(mint, takenNames) : mint),
138
183
  expr: con.expr,
139
184
  operations: con.operations,
140
185
  tags: con.tags,
@@ -331,10 +376,9 @@ export async function validateForeignKeyOverExistingRows(db, childSchema, fk, on
331
376
  sql = `select 1 from ${childRef} as ${childAlias} where ${notNullChain} limit 1`;
332
377
  }
333
378
  else {
334
- const parentColIndices = resolveReferencedColumns(fk, parentTable);
335
- if (parentColIndices.length !== fk.columns.length) {
336
- throw new QuereusError(`FK constraint '${fk.name ?? `_fk_${childSchema.name}`}' on table '${childSchema.name}': child column count (${fk.columns.length}) does not match parent column count (${parentColIndices.length})`, StatusCode.ERROR);
337
- }
379
+ // Shared with the plan-time / runtime enforcement sites so one malformed FK
380
+ // reports one message wherever it is met.
381
+ const parentColIndices = resolveReferencedColumnsForEnforcement(fk, parentTable, childSchema);
338
382
  const parentRef = qualifyRelation(parentTable.schemaName, parentTable.name);
339
383
  const parentAlias = '_p';
340
384
  // Aliases keep the correlation unambiguous even for a self-referencing FK
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-builder.js","sourceRoot":"","sources":["../../../src/schema/constraint-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constraint-builder.js","sourceRoot":"","sources":["../../../src/schema/constraint-builder.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,33 @@ export interface LensSnapshotPair {
9
9
  /** The most recent deploy. */
10
10
  current?: LensDeploymentSnapshot;
11
11
  }
12
+ /**
13
+ * What both sides of the declarative reconciliation rendered to at the end of
14
+ * the last successful `apply schema` whose migration plan came out **empty** —
15
+ * i.e. the last apply at which this process observed, via a real diff, that the
16
+ * catalog matches the declaration.
17
+ *
18
+ * On the next apply, both sides are re-rendered; if all three fields still
19
+ * match, `computeSchemaDiff` / `generateMigrationPlan` are skipped. See
20
+ * `docs/schema.md` § Applied-state snapshot.
21
+ *
22
+ * NOTE: the two renderings are retained per schema for as long as the declaration
23
+ * lives — measured at 309 KB + 109 KB for the 112.7 KB / 54-table declaration of
24
+ * `bench/apply-schema-unchanged.mjs`, i.e. roughly 4× the declaration's own DDL
25
+ * text. Storing them (rather than hashing) is what makes the comparison exact.
26
+ * If a host ever declares many large schemas and this shows up in a heap profile,
27
+ * the trade to revisit is hashing the catalog rendering instead — FNV-1a over
28
+ * 119 KB measured 1.46 ms, three times the string compare it would replace, plus
29
+ * a small collision risk.
30
+ */
31
+ export interface AppliedSchemaSnapshot {
32
+ /** `renderDeclaredSchemaCanonical` of the declaration that was applied. */
33
+ declaredRendering: string;
34
+ /** `renderCatalogForComparison` of the live catalog after the apply completed. */
35
+ catalogRendering: string;
36
+ /** The effective `default_collation` — a differ input outside both renderings. */
37
+ defaultCollation: string;
38
+ }
12
39
  /**
13
40
  * Manages declared schemas and their associated seed data
14
41
  */
@@ -33,10 +60,33 @@ export declare class DeclaredSchemaManager {
33
60
  * advisories. Errors never reach here — they throw atomically during deploy.
34
61
  */
35
62
  private deployedLensReports;
63
+ /**
64
+ * Memoized `renderDeclaredSchemaCanonical` per lowercased schema name. Paid
65
+ * once per `declare schema`, on the first apply after it — the apply that is
66
+ * going to do real work anyway.
67
+ */
68
+ private declaredRenderings;
69
+ /** Applied-state snapshots per lowercased schema name; see {@link AppliedSchemaSnapshot}. */
70
+ private appliedSnapshots;
36
71
  /**
37
72
  * Stores a declared schema
38
73
  */
39
74
  setDeclaredSchema(schemaName: string, declaration: AST.DeclareSchemaStmt): void;
75
+ /**
76
+ * Canonical, **tags-inclusive** rendering of the stored declaration for
77
+ * `schemaName` (memoized), or `undefined` when nothing is declared. This is
78
+ * the declared half of the applied-state snapshot compare — NOT the version
79
+ * hash, which strips tags (see {@link renderDeclaredSchemaCanonical}).
80
+ */
81
+ getDeclaredRendering(schemaName: string): string | undefined;
82
+ /** The applied-state snapshot for `schemaName`, or `undefined` if none recorded. */
83
+ getAppliedSnapshot(schemaName: string): AppliedSchemaSnapshot | undefined;
84
+ /**
85
+ * Records the applied-state snapshot for `schemaName`. Callers must only do
86
+ * this after an apply that both succeeded and produced an empty migration
87
+ * plan — see the write site in `runtime/emit/schema-declarative.ts`.
88
+ */
89
+ setAppliedSnapshot(schemaName: string, snapshot: AppliedSchemaSnapshot): void;
40
90
  /**
41
91
  * Retrieves a declared schema
42
92
  */
@@ -1 +1 @@
1
- {"version":3,"file":"declared-schema-manager.d.ts","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIzD,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,8BAA8B;IAC9B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,eAAe,CAAiD;IACxE,OAAO,CAAC,QAAQ,CAAqD;IACrE,+FAA+F;IAC/F,OAAO,CAAC,gBAAgB,CAA+C;IACvE;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB,CAA4C;IACzE;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB,CAA4C;IAEvE;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,iBAAiB,GAAG,IAAI;IAK/E;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,iBAAiB,GAAG,SAAS;IAIxE;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI;IAU5E;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,EAAE,GAAG,SAAS;IAM5E;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;IAI7D;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKvC;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAS9C;;;;OAIG;IACH,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI;IAKrF,sEAAsE;IACtE,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,GAAG,CAAC,eAAe,GAAG,SAAS;IAI9E;;;;OAIG;IACH,0BAA0B,CAAC,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAO7F,gGAAgG;IAChG,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIjF;;;;OAIG;IACH,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIhF,4EAA4E;IAC5E,qBAAqB,CAAC,iBAAiB,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;CAG9E"}
1
+ {"version":3,"file":"declared-schema-manager.d.ts","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createLogger } from '../common/logger.js';
2
+ import { renderDeclaredSchemaCanonical } from './schema-hasher.js';
2
3
  const log = createLogger('schema:declared');
3
4
  /**
4
5
  * Manages declared schemas and their associated seed data
@@ -24,13 +25,60 @@ export class DeclaredSchemaManager {
24
25
  * advisories. Errors never reach here — they throw atomically during deploy.
25
26
  */
26
27
  deployedLensReports = new Map();
28
+ /**
29
+ * Memoized `renderDeclaredSchemaCanonical` per lowercased schema name. Paid
30
+ * once per `declare schema`, on the first apply after it — the apply that is
31
+ * going to do real work anyway.
32
+ */
33
+ declaredRenderings = new Map();
34
+ /** Applied-state snapshots per lowercased schema name; see {@link AppliedSchemaSnapshot}. */
35
+ appliedSnapshots = new Map();
27
36
  /**
28
37
  * Stores a declared schema
29
38
  */
30
39
  setDeclaredSchema(schemaName, declaration) {
31
40
  this.declaredSchemas.set(schemaName.toLowerCase(), declaration);
41
+ // Invalidate the memoized rendering — it describes the PREVIOUS declaration.
42
+ //
43
+ // The applied snapshot deliberately SURVIVES a re-declare. It records what
44
+ // both sides rendered to, and the next apply re-renders the new declaration
45
+ // and compares; a re-`declare schema` of byte-identical text therefore still
46
+ // takes the fast path, while any real edit fails the compare. Clearing it
47
+ // here would throw that away for no soundness gain.
48
+ this.declaredRenderings.delete(schemaName.toLowerCase());
32
49
  log('Stored declared schema for: %s', schemaName);
33
50
  }
51
+ /**
52
+ * Canonical, **tags-inclusive** rendering of the stored declaration for
53
+ * `schemaName` (memoized), or `undefined` when nothing is declared. This is
54
+ * the declared half of the applied-state snapshot compare — NOT the version
55
+ * hash, which strips tags (see {@link renderDeclaredSchemaCanonical}).
56
+ */
57
+ getDeclaredRendering(schemaName) {
58
+ const key = schemaName.toLowerCase();
59
+ const cached = this.declaredRenderings.get(key);
60
+ if (cached !== undefined)
61
+ return cached;
62
+ const declaration = this.declaredSchemas.get(key);
63
+ if (!declaration)
64
+ return undefined;
65
+ const rendering = renderDeclaredSchemaCanonical(declaration);
66
+ this.declaredRenderings.set(key, rendering);
67
+ return rendering;
68
+ }
69
+ /** The applied-state snapshot for `schemaName`, or `undefined` if none recorded. */
70
+ getAppliedSnapshot(schemaName) {
71
+ return this.appliedSnapshots.get(schemaName.toLowerCase());
72
+ }
73
+ /**
74
+ * Records the applied-state snapshot for `schemaName`. Callers must only do
75
+ * this after an apply that both succeeded and produced an empty migration
76
+ * plan — see the write site in `runtime/emit/schema-declarative.ts`.
77
+ */
78
+ setAppliedSnapshot(schemaName, snapshot) {
79
+ this.appliedSnapshots.set(schemaName.toLowerCase(), snapshot);
80
+ log('Recorded applied-state snapshot for: %s', schemaName);
81
+ }
34
82
  /**
35
83
  * Retrieves a declared schema
36
84
  */
@@ -83,6 +131,10 @@ export class DeclaredSchemaManager {
83
131
  removeDeclaredSchema(schemaName) {
84
132
  this.declaredSchemas.delete(schemaName.toLowerCase());
85
133
  this.seedData.delete(schemaName.toLowerCase());
134
+ // Both derived caches go with the declaration: with nothing declared there is
135
+ // nothing for a later apply to compare a surviving snapshot against.
136
+ this.declaredRenderings.delete(schemaName.toLowerCase());
137
+ this.appliedSnapshots.delete(schemaName.toLowerCase());
86
138
  this.lensDeclarations.delete(schemaName.toLowerCase());
87
139
  this.deployedLensSnapshots.delete(schemaName.toLowerCase());
88
140
  this.deployedLensReports.delete(schemaName.toLowerCase());
@@ -1 +1 @@
1
- {"version":3,"file":"declared-schema-manager.js","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAU5C;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACzB,eAAe,GAAuC,IAAI,GAAG,EAAE,CAAC;IAChE,QAAQ,GAA2C,IAAI,GAAG,EAAE,CAAC,CAAC,kCAAkC;IACxG,+FAA+F;IACvF,gBAAgB,GAAqC,IAAI,GAAG,EAAE,CAAC;IACvE;;;;;;OAMG;IACK,qBAAqB,GAAkC,IAAI,GAAG,EAAE,CAAC;IACzE;;;;;;OAMG;IACK,mBAAmB,GAAkC,IAAI,GAAG,EAAE,CAAC;IAEvE;;OAEG;IACH,iBAAiB,CAAC,UAAkB,EAAE,WAAkC;QACvE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;QAChE,GAAG,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAkB;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAkB;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB,EAAE,SAAiB,EAAE,IAAkB;QACpE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;QACvD,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAClD,GAAG,CAAC,sCAAsC,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,UAAkB,EAAE,SAAiB;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QACtC,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAkB;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,UAAkB;QACtC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1D,GAAG,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,iBAAyB,EAAE,WAAgC;QAC7E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,WAAW,CAAC,CAAC;QACxE,GAAG,CAAC,iCAAiC,EAAE,iBAAiB,CAAC,CAAC;IAC3D,CAAC;IAED,sEAAsE;IACtE,kBAAkB,CAAC,iBAAyB;QAC3C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,iBAAyB,EAAE,QAAgC;QACrF,MAAM,GAAG,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAC9D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,GAAG,CAAC,0CAA0C,EAAE,iBAAiB,CAAC,CAAC;IACpE,CAAC;IAED,gGAAgG;IAChG,wBAAwB,CAAC,iBAAyB;QACjD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CAAC,iBAAyB,EAAE,MAAwB;QACxE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,4EAA4E;IAC5E,qBAAqB,CAAC,iBAAyB;QAC9C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;CACD"}
1
+ {"version":3,"file":"declared-schema-manager.js","sourceRoot":"","sources":["../../../src/schema/declared-schema-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import type * as AST from '../../parser/ast.js';
2
+ /** One FROM nesting level for a conservative scope walk. */
3
+ export interface ScopeFrame {
4
+ /** Lowercase qualifier names this frame's FROM binds (table names, aliases, CTE names). */
5
+ bound: Set<string>;
6
+ /** Real-table sources, askable via the catalog callback for unqualified capture. */
7
+ realSources: Array<{
8
+ schema: string;
9
+ name: string;
10
+ }>;
11
+ /**
12
+ * Frame contains sources whose column sets cannot be analyzed
13
+ * (subquery / function / CTE sources), or marks a context that must be
14
+ * treated as categorically unanalysable (CTE / derived-table bodies).
15
+ */
16
+ hasOpaque: boolean;
17
+ /**
18
+ * Marks a subtree whose names resolve in a naming environment this walk does not
19
+ * model at all (view write-through metadata: a result column's `with inverse`
20
+ * clause, a select's trailing `with defaults` clause, both evaluated against the
21
+ * written view row where `new.<output column>` is the naming environment).
22
+ * NOTHING below a sealed frame can reach the seed — not even the `new.` /
23
+ * owning-table spellings that an opaque frame still lets through, since the
24
+ * classifiers check those AFTER the frame loop. Implies {@link hasOpaque}.
25
+ */
26
+ sealed: boolean;
27
+ /** Lowercase CTE names declared at this level (consulted by nested FROMs). */
28
+ cteNames: Set<string>;
29
+ }
30
+ export declare function emptyScopeFrame(): ScopeFrame;
31
+ /** A frame that binds nothing but blocks every unqualified-capture question. */
32
+ export declare function opaqueScopeFrame(): ScopeFrame;
33
+ /**
34
+ * A frame nothing below can see past — see {@link ScopeFrame.sealed}.
35
+ *
36
+ * NOTE: nothing forces a NEW view write-through clause to be sealed. The two that
37
+ * exist (`with inverse`, `with defaults`) are sealed by hand in `./walk.ts`; a third
38
+ * would default to ordinary scope rules and its `new.<col>` refs would come back
39
+ * `'own'`, inventing a dependency on the table being defined. Unlike the expression
40
+ * node kinds — which the walk spec's `EXPRESSION_KINDS` ledger forces a decision for —
41
+ * "clauses resolved in the written-row environment" is not an enumerable set on the
42
+ * AST. If a third one lands, give it a ledger of its own here.
43
+ */
44
+ export declare function sealedScopeFrame(): ScopeFrame;
45
+ /**
46
+ * Whether any frame above the seed is sealed. A flat scan of `stack[1..]` rather
47
+ * than a position-relative check, which is correct precisely because a sealed
48
+ * frame blocks UNCONDITIONALLY: it is only ever on the stack while the walk is
49
+ * inside such a subtree.
50
+ */
51
+ export declare function hasSealedFrame(stack: ReadonlyArray<ScopeFrame>): boolean;
52
+ /** Whether any frame on the stack declares `name` (lowercase) as a CTE. */
53
+ export declare function isCteNameInScope(stack: ReadonlyArray<ScopeFrame>, name: string): boolean;
54
+ /**
55
+ * Record one FROM item's bindings into `frame`. A table source whose bare name
56
+ * is a CTE in scope (and carries no schema qualifier) is opaque — its column
57
+ * set is not analyzed; every other table source is a real source the catalog
58
+ * callback can be asked about. Subquery and function sources are opaque.
59
+ */
60
+ export declare function collectScopeBindings(item: AST.FromClause, defaultSchema: string, stack: ReadonlyArray<ScopeFrame>, frame: ScopeFrame): void;
61
+ /** Build the frame for a select body's FROM list. */
62
+ export declare function buildScopeFrame(from: AST.FromClause[] | undefined, defaultSchema: string, stack: ReadonlyArray<ScopeFrame>): ScopeFrame;
63
+ /** Run `fn` with `frame` pushed on `stack`, popping it after. */
64
+ export declare function withScopeFrame<T>(stack: ScopeFrame[], frame: ScopeFrame, fn: () => T): T;
65
+ //# sourceMappingURL=frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../../../src/schema/expr-scope/frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAchD,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IAC1B,2FAA2F;IAC3F,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,oFAAoF;IACpF,WAAW,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;OAQG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,UAAU,CAI7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAI7C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,OAAO,CAKxE;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,UAAU,GACf,IAAI,CAgCN;AAED,qDAAqD;AACrD,wBAAgB,eAAe,CAC9B,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,SAAS,EAClC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAC9B,UAAU,CAIZ;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAOxF"}
@@ -0,0 +1,104 @@
1
+ export function emptyScopeFrame() {
2
+ return { bound: new Set(), realSources: [], hasOpaque: false, sealed: false, cteNames: new Set() };
3
+ }
4
+ /** A frame that binds nothing but blocks every unqualified-capture question. */
5
+ export function opaqueScopeFrame() {
6
+ const frame = emptyScopeFrame();
7
+ frame.hasOpaque = true;
8
+ return frame;
9
+ }
10
+ /**
11
+ * A frame nothing below can see past — see {@link ScopeFrame.sealed}.
12
+ *
13
+ * NOTE: nothing forces a NEW view write-through clause to be sealed. The two that
14
+ * exist (`with inverse`, `with defaults`) are sealed by hand in `./walk.ts`; a third
15
+ * would default to ordinary scope rules and its `new.<col>` refs would come back
16
+ * `'own'`, inventing a dependency on the table being defined. Unlike the expression
17
+ * node kinds — which the walk spec's `EXPRESSION_KINDS` ledger forces a decision for —
18
+ * "clauses resolved in the written-row environment" is not an enumerable set on the
19
+ * AST. If a third one lands, give it a ledger of its own here.
20
+ */
21
+ export function sealedScopeFrame() {
22
+ const frame = opaqueScopeFrame();
23
+ frame.sealed = true;
24
+ return frame;
25
+ }
26
+ /**
27
+ * Whether any frame above the seed is sealed. A flat scan of `stack[1..]` rather
28
+ * than a position-relative check, which is correct precisely because a sealed
29
+ * frame blocks UNCONDITIONALLY: it is only ever on the stack while the walk is
30
+ * inside such a subtree.
31
+ */
32
+ export function hasSealedFrame(stack) {
33
+ for (let i = 1; i < stack.length; i++) {
34
+ if (stack[i].sealed)
35
+ return true;
36
+ }
37
+ return false;
38
+ }
39
+ /** Whether any frame on the stack declares `name` (lowercase) as a CTE. */
40
+ export function isCteNameInScope(stack, name) {
41
+ for (const frame of stack) {
42
+ if (frame.cteNames.has(name))
43
+ return true;
44
+ }
45
+ return false;
46
+ }
47
+ /**
48
+ * Record one FROM item's bindings into `frame`. A table source whose bare name
49
+ * is a CTE in scope (and carries no schema qualifier) is opaque — its column
50
+ * set is not analyzed; every other table source is a real source the catalog
51
+ * callback can be asked about. Subquery and function sources are opaque.
52
+ */
53
+ export function collectScopeBindings(item, defaultSchema, stack, frame) {
54
+ switch (item.type) {
55
+ case 'table': {
56
+ const ts = item;
57
+ const name = ts.table.name.toLowerCase();
58
+ frame.bound.add(ts.alias ? ts.alias.toLowerCase() : name);
59
+ if (ts.table.schema === undefined && isCteNameInScope(stack, name)) {
60
+ // CTE source — column set not analyzed.
61
+ frame.hasOpaque = true;
62
+ }
63
+ else {
64
+ frame.realSources.push({ schema: (ts.table.schema ?? defaultSchema).toLowerCase(), name });
65
+ }
66
+ break;
67
+ }
68
+ case 'join': {
69
+ const join = item;
70
+ collectScopeBindings(join.left, defaultSchema, stack, frame);
71
+ collectScopeBindings(join.right, defaultSchema, stack, frame);
72
+ break;
73
+ }
74
+ case 'subquerySource': {
75
+ frame.bound.add(item.alias.toLowerCase());
76
+ frame.hasOpaque = true;
77
+ break;
78
+ }
79
+ case 'functionSource': {
80
+ const fs = item;
81
+ if (fs.alias)
82
+ frame.bound.add(fs.alias.toLowerCase());
83
+ frame.hasOpaque = true;
84
+ break;
85
+ }
86
+ }
87
+ }
88
+ /** Build the frame for a select body's FROM list. */
89
+ export function buildScopeFrame(from, defaultSchema, stack) {
90
+ const frame = emptyScopeFrame();
91
+ (from ?? []).forEach(item => collectScopeBindings(item, defaultSchema, stack, frame));
92
+ return frame;
93
+ }
94
+ /** Run `fn` with `frame` pushed on `stack`, popping it after. */
95
+ export function withScopeFrame(stack, frame, fn) {
96
+ stack.push(frame);
97
+ try {
98
+ return fn();
99
+ }
100
+ finally {
101
+ stack.pop();
102
+ }
103
+ }
104
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../../../src/schema/expr-scope/frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type * as AST from '../../parser/ast.js';
2
+ import { type ScopeFrame } from './frame.js';
3
+ /** What a scope walk does when it reaches a name-bearing leaf. */
4
+ export interface ScopeWalkHandlers {
5
+ /**
6
+ * Every `column` node reached. `stack[0]` is always the seed frame.
7
+ *
8
+ * The stack is the walk's LIVE array, handed over as a read-only view — it is
9
+ * mutated as the walk unwinds, so a handler must read what it needs during the
10
+ * call and never retain the reference.
11
+ */
12
+ onColumn(col: AST.ColumnExpr, stack: ReadonlyArray<ScopeFrame>): void;
13
+ /**
14
+ * Every bare `identifier` node reached in expression position. Omit when the
15
+ * analysis has nothing to say about them (the self-qualifier strip). Same
16
+ * do-not-retain rule for `stack` as {@link onColumn}.
17
+ */
18
+ onIdentifier?(ident: AST.IdentifierExpr, stack: ReadonlyArray<ScopeFrame>): void;
19
+ }
20
+ export interface ScopeWalkOptions {
21
+ /**
22
+ * Lowercase schema an unqualified FROM table source belongs to — the owning
23
+ * object's schema, NOT a search path. `main.t.qty` inside an expression on
24
+ * `temp.t` is not a self-reference, and no resolver lookup happens here.
25
+ */
26
+ readonly defaultSchema: string;
27
+ /** Lowercase names the implicit seed frame binds (the owning table's name). */
28
+ readonly seedBindings: ReadonlyArray<string>;
29
+ }
30
+ /**
31
+ * Walk `root` with the conservative FROM-frame model, invoking `handlers` at
32
+ * every name-bearing leaf. The walk mirrors SQL shadowing rules: a qualifier
33
+ * rebound by an inner FROM is visible to the handler as a binding frame above
34
+ * the seed, and contexts that cannot correlate to the written row (CTE bodies,
35
+ * derived-table bodies, DML statements) sit under an opaque barrier frame.
36
+ *
37
+ * A missing `root` returns without touching the handlers.
38
+ */
39
+ export declare function walkSchemaExpressionScope(root: AST.AstNode | undefined, options: ScopeWalkOptions, handlers: ScopeWalkHandlers): void;
40
+ //# sourceMappingURL=walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../../../src/schema/expr-scope/walk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAwF,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAmCnI,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACtE;;;;OAIG;IACH,YAAY,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;CACjF;AAED,MAAM,WAAW,gBAAgB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7C;AASD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,GAAG,CAAC,OAAO,GAAG,SAAS,EAC7B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,iBAAiB,GACzB,IAAI,CAMN"}