@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
@@ -7,6 +7,7 @@ import { RowOp, type SqlValue } from '../common/types.js';
7
7
  import type * as AST from '../parser/ast.js';
8
8
  import type { LogicalType } from '../types/logical-type.js';
9
9
  import type { TableStatistics } from '../planner/stats/catalog-stats.js';
10
+ import type { ResolveColumnInSource } from './rename/shared.js';
10
11
  /**
11
12
  * Represents the schema definition of a table (real or virtual).
12
13
  */
@@ -134,6 +135,13 @@ export declare function resolveNamedConstraintClass(tableSchema: TableSchema, co
134
135
  * typed — harmless, and not special-cased here.
135
136
  */
136
137
  export declare function namedConstraintExists(tableSchema: TableSchema, name: string): boolean;
138
+ /**
139
+ * Every constraint name a table currently holds (CHECK / UNIQUE / FK — the same
140
+ * three arrays {@link namedConstraintExists} scans), case-folded. The set form of
141
+ * that predicate, for callers that seed a mint-disambiguation taken-set
142
+ * ({@link disambiguateAutoConstraintName}) rather than testing one name.
143
+ */
144
+ export declare function collectTableConstraintNames(tableSchema: TableSchema): Set<string>;
137
145
  /**
138
146
  * Refuses a *user-written* constraint name that is already taken — the within-table
139
147
  * name-uniqueness rule shared by every ALTER path that adds a named constraint
@@ -159,6 +167,42 @@ export declare function namedConstraintExists(tableSchema: TableSchema, name: st
159
167
  * @throws QuereusError(CONSTRAINT) when the name is taken.
160
168
  */
161
169
  export declare function assertConstraintNameFree(tableSchema: TableSchema, name: string, alsoTaken?: ReadonlySet<string>): void;
170
+ /**
171
+ * Visits every *user-written* constraint name in a CREATE TABLE declaration —
172
+ * column-level clauses first, then table-level, each in declaration order, with
173
+ * the name spelled as the user typed it. Only the three classes that occupy a
174
+ * named-constraint array (CHECK / UNIQUE / FOREIGN KEY) are visited: a name on
175
+ * an inline NOT NULL / DEFAULT is not stored, so it cannot collide.
176
+ *
177
+ * The single walk behind both {@link collectDeclaredConstraintNames} (the mint
178
+ * taken-set) and `assertNoDuplicateConstraintNames` (schema/catalog.ts, the
179
+ * CREATE-time refusal), so the class filter cannot drift between the guard and
180
+ * the set it guards.
181
+ */
182
+ export declare function forEachDeclaredConstraintName(astColumns: ReadonlyArray<AST.ColumnDef>, astConstraints: ReadonlyArray<AST.TableConstraint> | undefined, visit: (name: string) => void): void;
183
+ /**
184
+ * The statement-wide taken-set the CREATE TABLE mint sites disambiguate against:
185
+ * every *user-written* CHECK / UNIQUE / FOREIGN KEY constraint name in the
186
+ * declaration, case-folded. Seeded BEFORE any mint runs so a mint can never
187
+ * collide with a user name declared later in the statement.
188
+ */
189
+ export declare function collectDeclaredConstraintNames(astColumns: ReadonlyArray<AST.ColumnDef>, astConstraints: ReadonlyArray<AST.TableConstraint> | undefined): Set<string>;
190
+ /**
191
+ * Collision-only disambiguation for an engine-minted constraint name
192
+ * (`_check_<col>`, `_fk_<table>_<cols>`). The first occurrence keeps the base
193
+ * name byte-identical to what the mint has always produced — the property that
194
+ * keeps every non-colliding persisted name and corpus assertion unchanged; the
195
+ * Nth colliding occurrence gets `_<N>` (N starting at 2), bumping past any
196
+ * already-taken suffixed spelling. `taken` spans the statement's user-written
197
+ * names ({@link collectDeclaredConstraintNames}) plus every earlier mint — one
198
+ * case-folded name space across CHECK / UNIQUE / FK — so a mint can never
199
+ * collide with a name the user typed, or with another mint. The chosen name is
200
+ * registered into `taken` before returning.
201
+ *
202
+ * A suffixed name keeps the reserved `_` prefix, so `isAutoConstraintName`
203
+ * (schema/catalog.ts) still classifies it as engine-synthesized.
204
+ */
205
+ export declare function disambiguateAutoConstraintName(base: string, taken: Set<string>): string;
162
206
  /**
163
207
  * Builds a map from column names to their indices in the columns array
164
208
  *
@@ -353,9 +397,9 @@ export declare function appendIndexToTableSchema(tableSchema: TableSchema, index
353
397
  * likewise left to the caller: the engine recomputes them from column names right after DROP
354
398
  * COLUMN returns (`withGeneratedColumnGraph` in `runDropColumn`), so only a caller driving a
355
399
  * module's API directly ever observes a stale map — mirroring the same carve-out on the insert
356
- * side. `referencedColumns` on a foreign key is not touched, for the same reason as on the insert
357
- * side: enforcement resolves the parent indices on demand from `referencedColumnNames` against
358
- * the parent's CURRENT schema.
400
+ * side. A foreign key has no stored parent-column-index field to touch, for the same reason as on
401
+ * the insert side: enforcement resolves the parent indices on demand from `referencedColumnNames`
402
+ * against the parent's CURRENT schema.
359
403
  */
360
404
  export declare function shiftSchemaIndicesForDrop(schema: TableSchema, colIndex: number): {
361
405
  columns: ReadonlyArray<ColumnSchema>;
@@ -463,6 +507,27 @@ export interface RowConstraintSchema {
463
507
  defaultConflict?: ConflictResolution;
464
508
  /** Arbitrary metadata tags (informational only) */
465
509
  tags?: Readonly<Record<string, SqlValue>>;
510
+ /**
511
+ * Verbatim violation text for a SYNTHESIZED constraint whose expression the
512
+ * user never wrote (e.g. the lens NOT NULL obligation's `<col> is not null`),
513
+ * carried onto the built {@link import('../planner/nodes/constraint-check-node.js').ConstraintCheck}
514
+ * so the failure reads as its real class (`NOT NULL constraint failed: t.col`)
515
+ * instead of an anonymous CHECK. Unset for user-written constraints. Transient —
516
+ * set only on a write-plan-time constraint, never persisted to the catalog.
517
+ */
518
+ violationMessage?: string;
519
+ /**
520
+ * When true, this constraint's expression evaluates to NULL when SATISFIED and
521
+ * to the violation-message TEXT when VIOLATED — inverting the pipeline's usual
522
+ * truthy-passes test. `runtime/row-constraints.ts` then fails the row iff the
523
+ * evaluated value is non-NULL and reports that value verbatim as the failure
524
+ * message. Lets one planned expression decide SEVERAL rules while keeping exact
525
+ * per-rule attribution (the lens decomposition writes' grouped deferred
526
+ * logical-row re-read — see `synthesizeLensRowLocalDeferredConstraint`).
527
+ * Transient — set only on a write-plan-time constraint, never persisted to the
528
+ * catalog.
529
+ */
530
+ messageValued?: boolean;
466
531
  /**
467
532
  * Lens-synthesized **row-local CHECK only**: the lowercased basis-column names this
468
533
  * constraint depends on, supplied by the prover (`collectLensRowLocalConstraints`)
@@ -537,8 +602,6 @@ export interface ForeignKeyConstraintSchema {
537
602
  referencedTable: string;
538
603
  /** Referenced schema (default: same schema) */
539
604
  referencedSchema?: string;
540
- /** Column indices in the parent table */
541
- referencedColumns: ReadonlyArray<number>;
542
605
  /**
543
606
  * Referenced column names for deferred resolution.
544
607
  * Parent column indices can't be resolved at schema creation time because
@@ -565,6 +628,26 @@ export interface ForeignKeyConstraintSchema {
565
628
  * Uses stored column names or falls back to the parent's primary key.
566
629
  */
567
630
  export declare function resolveReferencedColumns(fk: ForeignKeyConstraintSchema, parentSchema: TableSchema): number[];
631
+ /**
632
+ * {@link resolveReferencedColumns} plus the arity check every ENFORCEMENT site
633
+ * needs: a FK whose child column count does not match the resolved parent key
634
+ * cannot be checked at all, so the statement must fail rather than quietly skip
635
+ * the constraint.
636
+ *
637
+ * The gap this closes is the `references <Parent>` form with no parent column
638
+ * list: the declaration builders (`schema/constraint-builder.ts`
639
+ * `buildForeignKeyConstraintSchema`, `SchemaManager.extractForeignKeys`) compare
640
+ * counts only when a parent column list is written, and the defaulted form
641
+ * resolves to the parent's primary key — which may not exist yet (forward
642
+ * references are legal, see docs/sql-ddl.md § Order Independence) and can change
643
+ * arity later. So the arity is only knowable at enforcement time, and every
644
+ * enforcement site routes through here.
645
+ *
646
+ * Introspection / optimization callers (key-utils, ind-utils, lens FK
647
+ * discovery, `foreign_key_info`) keep using {@link resolveReferencedColumns} —
648
+ * a malformed FK must not make a read query fail.
649
+ */
650
+ export declare function resolveReferencedColumnsForEnforcement(fk: ForeignKeyConstraintSchema, parentSchema: TableSchema, childSchema: TableSchema): number[];
568
651
  /**
569
652
  * Represents a UNIQUE constraint on one or more columns (beyond the primary key)
570
653
  */
@@ -739,20 +822,35 @@ export declare function findGoverningBasisKeys(table: TableSchema, indices: read
739
822
  * Returns a copy of `tableSchema` with `generatedColumnDependencies` and
740
823
  * `generatedColumnTopoOrder` recomputed from its current column list.
741
824
  * Throws on cycle. The other fields are preserved as-is.
742
- */
743
- export declare function withGeneratedColumnGraph(tableSchema: TableSchema): TableSchema;
744
- /**
745
- * For each generated column, walks its expression AST and collects the column
746
- * indices in this table that the expression references. Unknown column names
747
- * referenced unqualified (or qualified to this table) are rejected with a
748
- * specific error so typos surface at CREATE TABLE / ALTER TABLE time rather
749
- * than at INSERT/UPDATE time.
750
825
  *
751
- * References qualified to a different table are skipped — they belong to
752
- * an outer scope (e.g. a scalar subquery's source) and don't constitute a
753
- * dependency on this table's columns.
754
- */
755
- export declare function extractGeneratedColumnDependencies(columns: ReadonlyArray<ColumnSchema>, tableName: string): Map<number, number[]>;
826
+ * `resolveColumnInSource` is the catalog-backed resolver
827
+ * (`buildColumnSourceResolver(db)`) the scope-aware reference analysis
828
+ * consults for inner FROM sources; questions about this table itself are
829
+ * answered from `tableSchema.columns` (the catalog may hold a stale
830
+ * pre-ALTER column set, or not hold the table at all).
831
+ */
832
+ export declare function withGeneratedColumnGraph(tableSchema: TableSchema, resolveColumnInSource: ResolveColumnInSource): TableSchema;
833
+ /**
834
+ * For each generated column, collects the column indices in this table that
835
+ * its expression references, via the scope-aware collector
836
+ * (`./generated-column-refs.ts`) — a name bound by a FROM clause inside the
837
+ * expression belongs to that source, not to this table. Per reference:
838
+ *
839
+ * - `'own'` binding: a known column records a dependency edge; an unknown
840
+ * name of `'column'` shape is rejected ("not found") so typos surface at
841
+ * CREATE TABLE / ALTER TABLE time rather than at INSERT/UPDATE time; an
842
+ * unknown `'identifier'` is ignored (it may legitimately be a function or
843
+ * mutation-context variable).
844
+ * - `'foreign'` binding: ignored entirely.
845
+ * - `'unbound'` binding (a qualified reference nothing binds): rejected —
846
+ * there is nothing for it to resolve against at write time either.
847
+ * - `'unknown'` binding (an opaque subquery / function / CTE source
848
+ * intervenes): a known column records an edge (a missing edge would compute
849
+ * a generated column before its dependency and silently write NULL);
850
+ * an unknown name is ignored silently. Net effect vs. the scope-blind
851
+ * analysis this replaced: only ever accepts more, never less.
852
+ */
853
+ export declare function extractGeneratedColumnDependencies(columns: ReadonlyArray<ColumnSchema>, tableName: string, schemaName: string, resolveColumnInSource: ResolveColumnInSource): Map<number, number[]>;
756
854
  /**
757
855
  * Pre-flight for `ALTER TABLE ADD COLUMN … GENERATED ALWAYS AS (<expr>)`, run at
758
856
  * plan-build BEFORE the expression is compiled against a scope holding only the
@@ -770,7 +868,7 @@ export declare function extractGeneratedColumnDependencies(columns: ReadonlyArra
770
868
  * A self-reference is the only cycle ADD COLUMN can create: an existing column's
771
869
  * expression cannot name a column that does not exist yet.
772
870
  */
773
- export declare function validateAddColumnGeneratedRefs(expr: AST.Expression, newColumnName: string, existingColumns: ReadonlyArray<ColumnSchema>, tableName: string): void;
871
+ export declare function validateAddColumnGeneratedRefs(expr: AST.Expression, newColumnName: string, existingColumns: ReadonlyArray<ColumnSchema>, tableName: string, schemaName: string, resolveColumnInSource: ResolveColumnInSource): void;
774
872
  /**
775
873
  * Topologically sorts generated columns so a generated column's dependencies
776
874
  * come before it. Throws on any cycle (including self-edges).
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/schema/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/schema/table.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { StatusCode } from '../common/types.js';
4
4
  import { quereusError, QuereusError } from '../common/errors.js';
5
5
  import { createLogger } from '../common/logger.js';
6
6
  import { inferType } from '../types/registry.js';
7
- import { traverseAst } from '../parser/visitor.js';
7
+ import { collectGeneratedColumnRefs } from './generated-column-refs.js';
8
8
  const log = createLogger('schema:table');
9
9
  const warnLog = log.extend('warn');
10
10
  /**
@@ -65,6 +65,25 @@ export function namedConstraintExists(tableSchema, name) {
65
65
  || (tableSchema.uniqueConstraints ?? []).some(c => c.name?.toLowerCase() === lower)
66
66
  || (tableSchema.foreignKeys ?? []).some(c => c.name?.toLowerCase() === lower);
67
67
  }
68
+ /**
69
+ * Every constraint name a table currently holds (CHECK / UNIQUE / FK — the same
70
+ * three arrays {@link namedConstraintExists} scans), case-folded. The set form of
71
+ * that predicate, for callers that seed a mint-disambiguation taken-set
72
+ * ({@link disambiguateAutoConstraintName}) rather than testing one name.
73
+ */
74
+ export function collectTableConstraintNames(tableSchema) {
75
+ const names = new Set();
76
+ for (const c of tableSchema.checkConstraints ?? [])
77
+ if (c.name)
78
+ names.add(c.name.toLowerCase());
79
+ for (const c of tableSchema.uniqueConstraints ?? [])
80
+ if (c.name)
81
+ names.add(c.name.toLowerCase());
82
+ for (const c of tableSchema.foreignKeys ?? [])
83
+ if (c.name)
84
+ names.add(c.name.toLowerCase());
85
+ return names;
86
+ }
68
87
  /**
69
88
  * Refuses a *user-written* constraint name that is already taken — the within-table
70
89
  * name-uniqueness rule shared by every ALTER path that adds a named constraint
@@ -94,6 +113,67 @@ export function assertConstraintNameFree(tableSchema, name, alsoTaken) {
94
113
  return;
95
114
  throw new QuereusError(`Cannot add constraint '${name}' to table '${tableSchema.name}': a constraint with that name already exists`, StatusCode.CONSTRAINT);
96
115
  }
116
+ /**
117
+ * Visits every *user-written* constraint name in a CREATE TABLE declaration —
118
+ * column-level clauses first, then table-level, each in declaration order, with
119
+ * the name spelled as the user typed it. Only the three classes that occupy a
120
+ * named-constraint array (CHECK / UNIQUE / FOREIGN KEY) are visited: a name on
121
+ * an inline NOT NULL / DEFAULT is not stored, so it cannot collide.
122
+ *
123
+ * The single walk behind both {@link collectDeclaredConstraintNames} (the mint
124
+ * taken-set) and `assertNoDuplicateConstraintNames` (schema/catalog.ts, the
125
+ * CREATE-time refusal), so the class filter cannot drift between the guard and
126
+ * the set it guards.
127
+ */
128
+ export function forEachDeclaredConstraintName(astColumns, astConstraints, visit) {
129
+ const claim = (con) => {
130
+ if (!con.name)
131
+ return;
132
+ if (con.type !== 'check' && con.type !== 'unique' && con.type !== 'foreignKey')
133
+ return;
134
+ visit(con.name);
135
+ };
136
+ for (const colDef of astColumns) {
137
+ for (const con of colDef.constraints ?? [])
138
+ claim(con);
139
+ }
140
+ for (const con of astConstraints ?? [])
141
+ claim(con);
142
+ }
143
+ /**
144
+ * The statement-wide taken-set the CREATE TABLE mint sites disambiguate against:
145
+ * every *user-written* CHECK / UNIQUE / FOREIGN KEY constraint name in the
146
+ * declaration, case-folded. Seeded BEFORE any mint runs so a mint can never
147
+ * collide with a user name declared later in the statement.
148
+ */
149
+ export function collectDeclaredConstraintNames(astColumns, astConstraints) {
150
+ const names = new Set();
151
+ forEachDeclaredConstraintName(astColumns, astConstraints, name => names.add(name.toLowerCase()));
152
+ return names;
153
+ }
154
+ /**
155
+ * Collision-only disambiguation for an engine-minted constraint name
156
+ * (`_check_<col>`, `_fk_<table>_<cols>`). The first occurrence keeps the base
157
+ * name byte-identical to what the mint has always produced — the property that
158
+ * keeps every non-colliding persisted name and corpus assertion unchanged; the
159
+ * Nth colliding occurrence gets `_<N>` (N starting at 2), bumping past any
160
+ * already-taken suffixed spelling. `taken` spans the statement's user-written
161
+ * names ({@link collectDeclaredConstraintNames}) plus every earlier mint — one
162
+ * case-folded name space across CHECK / UNIQUE / FK — so a mint can never
163
+ * collide with a name the user typed, or with another mint. The chosen name is
164
+ * registered into `taken` before returning.
165
+ *
166
+ * A suffixed name keeps the reserved `_` prefix, so `isAutoConstraintName`
167
+ * (schema/catalog.ts) still classifies it as engine-synthesized.
168
+ */
169
+ export function disambiguateAutoConstraintName(base, taken) {
170
+ let candidate = base;
171
+ for (let n = 2; taken.has(candidate.toLowerCase()); n++) {
172
+ candidate = `${base}_${n}`;
173
+ }
174
+ taken.add(candidate.toLowerCase());
175
+ return candidate;
176
+ }
97
177
  /**
98
178
  * Builds a map from column names to their indices in the columns array
99
179
  *
@@ -382,9 +462,9 @@ export function appendIndexToTableSchema(tableSchema, indexSchema) {
382
462
  * likewise left to the caller: the engine recomputes them from column names right after DROP
383
463
  * COLUMN returns (`withGeneratedColumnGraph` in `runDropColumn`), so only a caller driving a
384
464
  * module's API directly ever observes a stale map — mirroring the same carve-out on the insert
385
- * side. `referencedColumns` on a foreign key is not touched, for the same reason as on the insert
386
- * side: enforcement resolves the parent indices on demand from `referencedColumnNames` against
387
- * the parent's CURRENT schema.
465
+ * side. A foreign key has no stored parent-column-index field to touch, for the same reason as on
466
+ * the insert side: enforcement resolves the parent indices on demand from `referencedColumnNames`
467
+ * against the parent's CURRENT schema.
388
468
  */
389
469
  export function shiftSchemaIndicesForDrop(schema, colIndex) {
390
470
  if (colIndex < 0 || colIndex >= schema.columns.length) {
@@ -619,6 +699,37 @@ export function resolveReferencedColumns(fk, parentSchema) {
619
699
  // Default to primary key columns
620
700
  return parentSchema.primaryKeyDefinition.map(pk => pk.index);
621
701
  }
702
+ /**
703
+ * {@link resolveReferencedColumns} plus the arity check every ENFORCEMENT site
704
+ * needs: a FK whose child column count does not match the resolved parent key
705
+ * cannot be checked at all, so the statement must fail rather than quietly skip
706
+ * the constraint.
707
+ *
708
+ * The gap this closes is the `references <Parent>` form with no parent column
709
+ * list: the declaration builders (`schema/constraint-builder.ts`
710
+ * `buildForeignKeyConstraintSchema`, `SchemaManager.extractForeignKeys`) compare
711
+ * counts only when a parent column list is written, and the defaulted form
712
+ * resolves to the parent's primary key — which may not exist yet (forward
713
+ * references are legal, see docs/sql-ddl.md § Order Independence) and can change
714
+ * arity later. So the arity is only knowable at enforcement time, and every
715
+ * enforcement site routes through here.
716
+ *
717
+ * Introspection / optimization callers (key-utils, ind-utils, lens FK
718
+ * discovery, `foreign_key_info`) keep using {@link resolveReferencedColumns} —
719
+ * a malformed FK must not make a read query fail.
720
+ */
721
+ export function resolveReferencedColumnsForEnforcement(fk, parentSchema, childSchema) {
722
+ const parentColIndices = resolveReferencedColumns(fk, parentSchema);
723
+ if (parentColIndices.length === fk.columns.length)
724
+ return parentColIndices;
725
+ const fkName = fk.name ?? `_fk_${childSchema.name}`;
726
+ const child = `${childSchema.schemaName}.${childSchema.name}`;
727
+ const parent = `${parentSchema.schemaName}.${parentSchema.name}`;
728
+ const target = (fk.referencedColumnNames && fk.referencedColumnNames.length > 0)
729
+ ? `${parentColIndices.length} column(s) of '${parent}'`
730
+ : `the primary key of '${parent}', which has ${parentColIndices.length} column(s)`;
731
+ throw new QuereusError(`Foreign key '${fkName}' on table '${child}': ${fk.columns.length} column(s) reference ${target}.`, StatusCode.ERROR);
732
+ }
622
733
  /**
623
734
  * Helper to parse primary key from AST column and table constraints.
624
735
  * @param columns Parsed column definitions from AST.
@@ -852,9 +963,15 @@ function findColumnPKDefinition(columns) {
852
963
  * Returns a copy of `tableSchema` with `generatedColumnDependencies` and
853
964
  * `generatedColumnTopoOrder` recomputed from its current column list.
854
965
  * Throws on cycle. The other fields are preserved as-is.
966
+ *
967
+ * `resolveColumnInSource` is the catalog-backed resolver
968
+ * (`buildColumnSourceResolver(db)`) the scope-aware reference analysis
969
+ * consults for inner FROM sources; questions about this table itself are
970
+ * answered from `tableSchema.columns` (the catalog may hold a stale
971
+ * pre-ALTER column set, or not hold the table at all).
855
972
  */
856
- export function withGeneratedColumnGraph(tableSchema) {
857
- const rawDeps = extractGeneratedColumnDependencies(tableSchema.columns, tableSchema.name);
973
+ export function withGeneratedColumnGraph(tableSchema, resolveColumnInSource) {
974
+ const rawDeps = extractGeneratedColumnDependencies(tableSchema.columns, tableSchema.name, tableSchema.schemaName, resolveColumnInSource);
858
975
  if (rawDeps.size === 0) {
859
976
  return Object.freeze({
860
977
  ...tableSchema,
@@ -873,46 +990,80 @@ export function withGeneratedColumnGraph(tableSchema) {
873
990
  });
874
991
  }
875
992
  /**
876
- * For each generated column, walks its expression AST and collects the column
877
- * indices in this table that the expression references. Unknown column names
878
- * referenced unqualified (or qualified to this table) are rejected with a
879
- * specific error so typos surface at CREATE TABLE / ALTER TABLE time rather
880
- * than at INSERT/UPDATE time.
993
+ * Wrap the catalog-backed source resolver so questions about the table under
994
+ * analysis are answered from the in-flight column list instead of the catalog:
995
+ * at CREATE TABLE the catalog does not hold the table yet, and at DROP COLUMN
996
+ * it still holds the pre-drop column set. `extraColumnLower` covers ALTER ADD
997
+ * COLUMN, where the resolver must answer for the post-ALTER column set the
998
+ * emitter's re-analysis will see.
999
+ */
1000
+ function resolveWithInFlightColumns(resolve, schemaName, tableName, columnIndexMap, extraColumnLower) {
1001
+ const schemaLower = schemaName.toLowerCase();
1002
+ const tableLower = tableName.toLowerCase();
1003
+ return (sourceSchema, sourceName, columnName) => {
1004
+ if (sourceSchema.toLowerCase() === schemaLower && sourceName.toLowerCase() === tableLower) {
1005
+ const colLower = columnName.toLowerCase();
1006
+ return columnIndexMap.has(colLower) || colLower === extraColumnLower;
1007
+ }
1008
+ return resolve(sourceSchema, sourceName, columnName);
1009
+ };
1010
+ }
1011
+ /**
1012
+ * Shared rejection for a qualified generated-column reference nothing binds
1013
+ * (`RefBinding` `'unbound'`) — thrown identically by both authoring surfaces
1014
+ * so a declaration cannot be accepted by one and rejected by the other. See
1015
+ * `RefBinding` in `./generated-column-refs.ts`.
881
1016
  *
882
- * References qualified to a different table are skipped — they belong to
883
- * an outer scope (e.g. a scalar subquery's source) and don't constitute a
884
- * dependency on this table's columns.
1017
+ * NOTE: accepted tradeoff — this also fires on catalog reload (via
1018
+ * `withGeneratedColumnGraph`), so a table a pre-fix build persisted with such a
1019
+ * body now fails to LOAD rather than loading unwritable. Kept: the table could
1020
+ * never be written either way, and backwards compatibility is not yet a project
1021
+ * constraint. Revisit if stores written by older builds must open.
885
1022
  */
886
- export function extractGeneratedColumnDependencies(columns, tableName) {
1023
+ function unboundQualifierError(ref, generatedColumnName, tableName) {
1024
+ return new QuereusError(`'${ref.originalQualifier}.${ref.originalName}' referenced by generated column '${generatedColumnName}' in table '${tableName}' binds nothing: a generated expression computes from the row being written, so it may only name this table's own columns (bare, '${tableName}.', or 'new.') or columns of a source it selects from`, StatusCode.ERROR);
1025
+ }
1026
+ /**
1027
+ * For each generated column, collects the column indices in this table that
1028
+ * its expression references, via the scope-aware collector
1029
+ * (`./generated-column-refs.ts`) — a name bound by a FROM clause inside the
1030
+ * expression belongs to that source, not to this table. Per reference:
1031
+ *
1032
+ * - `'own'` binding: a known column records a dependency edge; an unknown
1033
+ * name of `'column'` shape is rejected ("not found") so typos surface at
1034
+ * CREATE TABLE / ALTER TABLE time rather than at INSERT/UPDATE time; an
1035
+ * unknown `'identifier'` is ignored (it may legitimately be a function or
1036
+ * mutation-context variable).
1037
+ * - `'foreign'` binding: ignored entirely.
1038
+ * - `'unbound'` binding (a qualified reference nothing binds): rejected —
1039
+ * there is nothing for it to resolve against at write time either.
1040
+ * - `'unknown'` binding (an opaque subquery / function / CTE source
1041
+ * intervenes): a known column records an edge (a missing edge would compute
1042
+ * a generated column before its dependency and silently write NULL);
1043
+ * an unknown name is ignored silently. Net effect vs. the scope-blind
1044
+ * analysis this replaced: only ever accepts more, never less.
1045
+ */
1046
+ export function extractGeneratedColumnDependencies(columns, tableName, schemaName, resolveColumnInSource) {
887
1047
  const columnIndexMap = buildColumnIndexMap(columns);
888
- const tableNameLower = tableName.toLowerCase();
1048
+ const resolve = resolveWithInFlightColumns(resolveColumnInSource, schemaName, tableName, columnIndexMap);
889
1049
  const result = new Map();
890
1050
  columns.forEach((col, colIdx) => {
891
1051
  if (!col.generated || !col.generatedExpr)
892
1052
  return;
893
1053
  const deps = new Set();
894
- traverseAst(col.generatedExpr, {
895
- enterNode: (node) => {
896
- if (node.type === 'column') {
897
- const ref = node;
898
- if (ref.table && ref.table.toLowerCase() !== tableNameLower)
899
- return;
900
- const refIdx = columnIndexMap.get(ref.name.toLowerCase());
901
- if (refIdx === undefined) {
902
- throw new QuereusError(`Column '${ref.name}' referenced by generated column '${col.name}' not found in table '${tableName}'`, StatusCode.ERROR);
903
- }
904
- deps.add(refIdx);
905
- }
906
- else if (node.type === 'identifier') {
907
- const ref = node;
908
- if (ref.schema)
909
- return;
910
- const refIdx = columnIndexMap.get(ref.name.toLowerCase());
911
- if (refIdx !== undefined)
912
- deps.add(refIdx);
913
- }
914
- },
915
- });
1054
+ for (const ref of collectGeneratedColumnRefs(col.generatedExpr, tableName, schemaName, resolve)) {
1055
+ if (ref.binding === 'unbound')
1056
+ throw unboundQualifierError(ref, col.name, tableName);
1057
+ if (ref.binding === 'foreign')
1058
+ continue;
1059
+ const refIdx = columnIndexMap.get(ref.name);
1060
+ if (refIdx !== undefined) {
1061
+ deps.add(refIdx);
1062
+ }
1063
+ else if (ref.binding === 'own' && ref.shape === 'column') {
1064
+ throw new QuereusError(`Column '${ref.originalName}' referenced by generated column '${col.name}' not found in table '${tableName}'`, StatusCode.ERROR);
1065
+ }
1066
+ }
916
1067
  result.set(colIdx, Array.from(deps).sort((a, b) => a - b));
917
1068
  });
918
1069
  return result;
@@ -934,45 +1085,36 @@ export function extractGeneratedColumnDependencies(columns, tableName) {
934
1085
  * A self-reference is the only cycle ADD COLUMN can create: an existing column's
935
1086
  * expression cannot name a column that does not exist yet.
936
1087
  */
937
- export function validateAddColumnGeneratedRefs(expr, newColumnName, existingColumns, tableName) {
1088
+ export function validateAddColumnGeneratedRefs(expr, newColumnName, existingColumns, tableName, schemaName, resolveColumnInSource) {
938
1089
  const columnIndexMap = buildColumnIndexMap(existingColumns);
939
- const tableNameLower = tableName.toLowerCase();
940
1090
  const newColLower = newColumnName.toLowerCase();
941
1091
  // `add column v … generated always as (v * 2)` where `v` ALREADY exists is a duplicate
942
1092
  // column, not a cycle; the reference resolves to the existing sibling. Leave the
943
1093
  // rejection to `runAddColumn`'s duplicate check so the message names the real problem.
944
1094
  const newColumnIsDuplicate = columnIndexMap.has(newColLower);
945
- traverseAst(expr, {
946
- enterNode: (node) => {
947
- // Same ref shapes and same skip rules as extractGeneratedColumnDependencies:
948
- // a ref qualified to another table belongs to an outer scope, and a bare
949
- // `identifier` may legitimately resolve to something that is not a column of
950
- // this table — so only the unambiguous `column` shape yields "not found".
951
- let name;
952
- if (node.type === 'column') {
953
- const ref = node;
954
- if (ref.table && ref.table.toLowerCase() !== tableNameLower)
955
- return;
956
- name = ref.name;
957
- }
958
- else if (node.type === 'identifier') {
959
- const ref = node;
960
- if (ref.schema)
961
- return;
962
- name = ref.name;
963
- }
964
- else {
965
- return;
966
- }
967
- const lower = name.toLowerCase();
968
- if (lower === newColLower && !newColumnIsDuplicate) {
969
- throw new QuereusError(`Cyclic dependency in generated columns: '${newColumnName}'`, StatusCode.ERROR);
970
- }
971
- if (node.type === 'column' && !columnIndexMap.has(lower)) {
972
- throw new QuereusError(`Column '${name}' referenced by generated column '${newColumnName}' not found in table '${tableName}'`, StatusCode.ERROR);
973
- }
974
- },
975
- });
1095
+ // Resolve questions about this table from the POST-ALTER column set (existing
1096
+ // plus the new column): the emitter re-runs `extractGeneratedColumnDependencies`
1097
+ // on that set, and this pre-flight must accept exactly what it will.
1098
+ const resolve = resolveWithInFlightColumns(resolveColumnInSource, schemaName, tableName, columnIndexMap, newColLower);
1099
+ for (const ref of collectGeneratedColumnRefs(expr, tableName, schemaName, resolve)) {
1100
+ if (ref.binding === 'unbound')
1101
+ throw unboundQualifierError(ref, newColumnName, tableName);
1102
+ if (ref.binding === 'foreign')
1103
+ continue;
1104
+ // Both `'own'` and `'unknown'` bindings of the new column's own name are a
1105
+ // self-cycle here: the emitter's re-analysis records a dependency edge for
1106
+ // either (see extractGeneratedColumnDependencies) and its topological sort
1107
+ // then raises this same error — this pre-flight only moves it earlier.
1108
+ if (ref.name === newColLower && !newColumnIsDuplicate) {
1109
+ throw new QuereusError(`Cyclic dependency in generated columns: '${newColumnName}'`, StatusCode.ERROR);
1110
+ }
1111
+ // Only an `'own'`-bound `column` shape yields "not found" — an `'unknown'`
1112
+ // binding may bind an opaque inner source, and a bare `identifier` may
1113
+ // legitimately resolve to something that is not a column of this table.
1114
+ if (ref.binding === 'own' && ref.shape === 'column' && !columnIndexMap.has(ref.name)) {
1115
+ throw new QuereusError(`Column '${ref.originalName}' referenced by generated column '${newColumnName}' not found in table '${tableName}'`, StatusCode.ERROR);
1116
+ }
1117
+ }
976
1118
  }
977
1119
  /**
978
1120
  * Topologically sorts generated columns so a generated column's dependencies