@quereus/quereus 4.11.0 → 4.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/dist/src/common/type-inference.d.ts +12 -6
  2. package/dist/src/common/type-inference.d.ts.map +1 -1
  3. package/dist/src/common/type-inference.js +12 -24
  4. package/dist/src/common/type-inference.js.map +1 -1
  5. package/dist/src/core/database-assertions.d.ts.map +1 -1
  6. package/dist/src/core/database-assertions.js +7 -5
  7. package/dist/src/core/database-assertions.js.map +1 -1
  8. package/dist/src/core/database-events.d.ts +4 -3
  9. package/dist/src/core/database-events.d.ts.map +1 -1
  10. package/dist/src/core/database-events.js +4 -3
  11. package/dist/src/core/database-events.js.map +1 -1
  12. package/dist/src/core/database-materialized-views-analysis.d.ts +1 -3
  13. package/dist/src/core/database-materialized-views-analysis.d.ts.map +1 -1
  14. package/dist/src/core/database-materialized-views-analysis.js +1 -11
  15. package/dist/src/core/database-materialized-views-analysis.js.map +1 -1
  16. package/dist/src/core/database-materialized-views-plan-builders.d.ts.map +1 -1
  17. package/dist/src/core/database-materialized-views-plan-builders.js +12 -10
  18. package/dist/src/core/database-materialized-views-plan-builders.js.map +1 -1
  19. package/dist/src/core/database.d.ts.map +1 -1
  20. package/dist/src/core/database.js +13 -2
  21. package/dist/src/core/database.js.map +1 -1
  22. package/dist/src/core/derived-row-validator.d.ts.map +1 -1
  23. package/dist/src/core/derived-row-validator.js +14 -2
  24. package/dist/src/core/derived-row-validator.js.map +1 -1
  25. package/dist/src/core/param.d.ts +9 -0
  26. package/dist/src/core/param.d.ts.map +1 -1
  27. package/dist/src/core/param.js +21 -1
  28. package/dist/src/core/param.js.map +1 -1
  29. package/dist/src/core/statement.d.ts.map +1 -1
  30. package/dist/src/core/statement.js +38 -15
  31. package/dist/src/core/statement.js.map +1 -1
  32. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  33. package/dist/src/func/builtins/aggregate.js +7 -2
  34. package/dist/src/func/builtins/aggregate.js.map +1 -1
  35. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  36. package/dist/src/func/builtins/builtin-window-functions.js +27 -11
  37. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  38. package/dist/src/func/builtins/datetime.d.ts.map +1 -1
  39. package/dist/src/func/builtins/datetime.js +8 -3
  40. package/dist/src/func/builtins/datetime.js.map +1 -1
  41. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  42. package/dist/src/func/builtins/explain.js +9 -29
  43. package/dist/src/func/builtins/explain.js.map +1 -1
  44. package/dist/src/func/builtins/json-tvf.d.ts.map +1 -1
  45. package/dist/src/func/builtins/json-tvf.js +14 -7
  46. package/dist/src/func/builtins/json-tvf.js.map +1 -1
  47. package/dist/src/func/builtins/return-types.d.ts +29 -0
  48. package/dist/src/func/builtins/return-types.d.ts.map +1 -1
  49. package/dist/src/func/builtins/return-types.js +4 -1
  50. package/dist/src/func/builtins/return-types.js.map +1 -1
  51. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  52. package/dist/src/func/builtins/scalar.js +22 -67
  53. package/dist/src/func/builtins/scalar.js.map +1 -1
  54. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  55. package/dist/src/func/builtins/schema.js +26 -16
  56. package/dist/src/func/builtins/schema.js.map +1 -1
  57. package/dist/src/index.d.ts +1 -1
  58. package/dist/src/index.d.ts.map +1 -1
  59. package/dist/src/index.js +6 -1
  60. package/dist/src/index.js.map +1 -1
  61. package/dist/src/parser/parser.d.ts.map +1 -1
  62. package/dist/src/parser/parser.js +8 -5
  63. package/dist/src/parser/parser.js.map +1 -1
  64. package/dist/src/parser/visitor.d.ts +16 -0
  65. package/dist/src/parser/visitor.d.ts.map +1 -1
  66. package/dist/src/parser/visitor.js +16 -0
  67. package/dist/src/parser/visitor.js.map +1 -1
  68. package/dist/src/planner/analysis/assertion-plan.d.ts +33 -0
  69. package/dist/src/planner/analysis/assertion-plan.d.ts.map +1 -0
  70. package/dist/src/planner/analysis/assertion-plan.js +39 -0
  71. package/dist/src/planner/analysis/assertion-plan.js.map +1 -0
  72. package/dist/src/planner/analysis/binary-operator-class.d.ts +55 -0
  73. package/dist/src/planner/analysis/binary-operator-class.d.ts.map +1 -0
  74. package/dist/src/planner/analysis/binary-operator-class.js +57 -0
  75. package/dist/src/planner/analysis/binary-operator-class.js.map +1 -0
  76. package/dist/src/planner/analysis/binding-extractor.d.ts +9 -3
  77. package/dist/src/planner/analysis/binding-extractor.d.ts.map +1 -1
  78. package/dist/src/planner/analysis/binding-extractor.js +11 -16
  79. package/dist/src/planner/analysis/binding-extractor.js.map +1 -1
  80. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  81. package/dist/src/planner/analysis/change-scope.js +19 -6
  82. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  83. package/dist/src/planner/analysis/check-extraction.d.ts +1 -7
  84. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  85. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  86. package/dist/src/planner/analysis/comparison-collation.d.ts +17 -0
  87. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -1
  88. package/dist/src/planner/analysis/comparison-collation.js +17 -5
  89. package/dist/src/planner/analysis/comparison-collation.js.map +1 -1
  90. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  91. package/dist/src/planner/analysis/constraint-extractor.js +18 -18
  92. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  93. package/dist/src/planner/analysis/coverage-prover.d.ts +11 -7
  94. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -1
  95. package/dist/src/planner/analysis/coverage-prover.js +11 -7
  96. package/dist/src/planner/analysis/coverage-prover.js.map +1 -1
  97. package/dist/src/planner/analysis/equi-correlation.d.ts +1 -1
  98. package/dist/src/planner/analysis/equi-correlation.js +1 -1
  99. package/dist/src/planner/analysis/expression-fingerprint.d.ts.map +1 -1
  100. package/dist/src/planner/analysis/expression-fingerprint.js +0 -2
  101. package/dist/src/planner/analysis/expression-fingerprint.js.map +1 -1
  102. package/dist/src/planner/analysis/key-filter.d.ts.map +1 -1
  103. package/dist/src/planner/analysis/key-filter.js +2 -3
  104. package/dist/src/planner/analysis/key-filter.js.map +1 -1
  105. package/dist/src/planner/analysis/relation-key.d.ts +104 -0
  106. package/dist/src/planner/analysis/relation-key.d.ts.map +1 -0
  107. package/dist/src/planner/analysis/relation-key.js +121 -0
  108. package/dist/src/planner/analysis/relation-key.js.map +1 -0
  109. package/dist/src/planner/analysis/scalar-param-usage.d.ts.map +1 -1
  110. package/dist/src/planner/analysis/scalar-param-usage.js +12 -4
  111. package/dist/src/planner/analysis/scalar-param-usage.js.map +1 -1
  112. package/dist/src/planner/analysis/set-op-type-merge.d.ts +9 -3
  113. package/dist/src/planner/analysis/set-op-type-merge.d.ts.map +1 -1
  114. package/dist/src/planner/analysis/set-op-type-merge.js +22 -8
  115. package/dist/src/planner/analysis/set-op-type-merge.js.map +1 -1
  116. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  117. package/dist/src/planner/building/alter-table.js +31 -23
  118. package/dist/src/planner/building/alter-table.js.map +1 -1
  119. package/dist/src/planner/building/analyze.d.ts.map +1 -1
  120. package/dist/src/planner/building/analyze.js +21 -0
  121. package/dist/src/planner/building/analyze.js.map +1 -1
  122. package/dist/src/planner/building/block.d.ts.map +1 -1
  123. package/dist/src/planner/building/block.js +222 -82
  124. package/dist/src/planner/building/block.js.map +1 -1
  125. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  126. package/dist/src/planner/building/constraint-builder.js +5 -3
  127. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  128. package/dist/src/planner/building/delete.js +1 -1
  129. package/dist/src/planner/building/delete.js.map +1 -1
  130. package/dist/src/planner/building/expression.d.ts.map +1 -1
  131. package/dist/src/planner/building/expression.js +11 -3
  132. package/dist/src/planner/building/expression.js.map +1 -1
  133. package/dist/src/planner/building/foreign-key-builder.d.ts +16 -6
  134. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  135. package/dist/src/planner/building/foreign-key-builder.js +43 -20
  136. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  137. package/dist/src/planner/building/generated-column-scope.d.ts +58 -0
  138. package/dist/src/planner/building/generated-column-scope.d.ts.map +1 -0
  139. package/dist/src/planner/building/generated-column-scope.js +117 -0
  140. package/dist/src/planner/building/generated-column-scope.js.map +1 -0
  141. package/dist/src/planner/building/insert.d.ts.map +1 -1
  142. package/dist/src/planner/building/insert.js +20 -28
  143. package/dist/src/planner/building/insert.js.map +1 -1
  144. package/dist/src/planner/building/select-aggregates.d.ts +73 -132
  145. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  146. package/dist/src/planner/building/select-aggregates.js +405 -81
  147. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  148. package/dist/src/planner/building/select-modifiers.d.ts +37 -8
  149. package/dist/src/planner/building/select-modifiers.d.ts.map +1 -1
  150. package/dist/src/planner/building/select-modifiers.js +8 -9
  151. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  152. package/dist/src/planner/building/select-ordinal.d.ts +6 -0
  153. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  154. package/dist/src/planner/building/select-ordinal.js +1 -1
  155. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  156. package/dist/src/planner/building/select-window.d.ts +2 -2
  157. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  158. package/dist/src/planner/building/select-window.js +82 -101
  159. package/dist/src/planner/building/select-window.js.map +1 -1
  160. package/dist/src/planner/building/select.d.ts.map +1 -1
  161. package/dist/src/planner/building/select.js +78 -33
  162. package/dist/src/planner/building/select.js.map +1 -1
  163. package/dist/src/planner/building/update.d.ts.map +1 -1
  164. package/dist/src/planner/building/update.js +14 -8
  165. package/dist/src/planner/building/update.js.map +1 -1
  166. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  167. package/dist/src/planner/building/view-mutation-builder.js +329 -14
  168. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  169. package/dist/src/planner/building/with.d.ts +6 -0
  170. package/dist/src/planner/building/with.d.ts.map +1 -1
  171. package/dist/src/planner/building/with.js +52 -3
  172. package/dist/src/planner/building/with.js.map +1 -1
  173. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  174. package/dist/src/planner/cache/correlation-detector.js +44 -17
  175. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  176. package/dist/src/planner/framework/physical-utils.d.ts +6 -0
  177. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  178. package/dist/src/planner/framework/physical-utils.js +6 -0
  179. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  180. package/dist/src/planner/mutation/lens-enforcement.d.ts +123 -0
  181. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  182. package/dist/src/planner/mutation/lens-enforcement.js +362 -5
  183. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  184. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +1 -1
  185. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -1
  186. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -1
  187. package/dist/src/planner/nodes/alter-table-node.d.ts +15 -11
  188. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  189. package/dist/src/planner/nodes/alter-table-node.js +5 -0
  190. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  191. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  192. package/dist/src/planner/nodes/bloom-join-node.js +7 -0
  193. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  194. package/dist/src/planner/nodes/constraint-check-node.d.ts +16 -0
  195. package/dist/src/planner/nodes/constraint-check-node.d.ts.map +1 -1
  196. package/dist/src/planner/nodes/constraint-check-node.js.map +1 -1
  197. package/dist/src/planner/nodes/plan-node-type.d.ts +1 -1
  198. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  199. package/dist/src/planner/nodes/plan-node-type.js +1 -1
  200. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  201. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  202. package/dist/src/planner/nodes/pragma.js +5 -2
  203. package/dist/src/planner/nodes/pragma.js.map +1 -1
  204. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  205. package/dist/src/planner/nodes/reference.js +9 -1
  206. package/dist/src/planner/nodes/reference.js.map +1 -1
  207. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  208. package/dist/src/planner/nodes/scalar.js +117 -91
  209. package/dist/src/planner/nodes/scalar.js.map +1 -1
  210. package/dist/src/planner/nodes/sequence-node.d.ts +50 -0
  211. package/dist/src/planner/nodes/sequence-node.d.ts.map +1 -0
  212. package/dist/src/planner/nodes/sequence-node.js +96 -0
  213. package/dist/src/planner/nodes/sequence-node.js.map +1 -0
  214. package/dist/src/planner/nodes/values-node.d.ts +8 -0
  215. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  216. package/dist/src/planner/nodes/values-node.js +29 -6
  217. package/dist/src/planner/nodes/values-node.js.map +1 -1
  218. package/dist/src/planner/nodes/view-mutation-node.d.ts +43 -1
  219. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -1
  220. package/dist/src/planner/nodes/view-mutation-node.js +27 -6
  221. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -1
  222. package/dist/src/planner/nodes/window-node.d.ts +33 -4
  223. package/dist/src/planner/nodes/window-node.d.ts.map +1 -1
  224. package/dist/src/planner/nodes/window-node.js +80 -36
  225. package/dist/src/planner/nodes/window-node.js.map +1 -1
  226. package/dist/src/planner/planning-context.d.ts +38 -1
  227. package/dist/src/planner/planning-context.d.ts.map +1 -1
  228. package/dist/src/planner/rules/access/rule-key-set-seek.d.ts.map +1 -1
  229. package/dist/src/planner/rules/access/rule-key-set-seek.js +8 -3
  230. package/dist/src/planner/rules/access/rule-key-set-seek.js.map +1 -1
  231. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +18 -12
  232. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  233. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +4 -3
  234. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  235. package/dist/src/planner/rules/window/rule-monotonic-window.d.ts.map +1 -1
  236. package/dist/src/planner/rules/window/rule-monotonic-window.js +6 -0
  237. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  238. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  239. package/dist/src/planner/scopes/param.js +10 -5
  240. package/dist/src/planner/scopes/param.js.map +1 -1
  241. package/dist/src/planner/util/ind-utils.d.ts +25 -8
  242. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  243. package/dist/src/planner/util/ind-utils.js +53 -10
  244. package/dist/src/planner/util/ind-utils.js.map +1 -1
  245. package/dist/src/planner/util/key-utils.d.ts +7 -7
  246. package/dist/src/planner/util/key-utils.js +9 -9
  247. package/dist/src/planner/util/key-utils.js.map +1 -1
  248. package/dist/src/runtime/delta-executor.d.ts.map +1 -1
  249. package/dist/src/runtime/delta-executor.js +7 -2
  250. package/dist/src/runtime/delta-executor.js.map +1 -1
  251. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  252. package/dist/src/runtime/emit/add-constraint.js +50 -15
  253. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  254. package/dist/src/runtime/emit/alter-schema-event.d.ts +2 -43
  255. package/dist/src/runtime/emit/alter-schema-event.d.ts.map +1 -1
  256. package/dist/src/runtime/emit/alter-schema-event.js +2 -53
  257. package/dist/src/runtime/emit/alter-schema-event.js.map +1 -1
  258. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  259. package/dist/src/runtime/emit/alter-table.js +59 -24
  260. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  261. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  262. package/dist/src/runtime/emit/analyze.js +7 -0
  263. package/dist/src/runtime/emit/analyze.js.map +1 -1
  264. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
  265. package/dist/src/runtime/emit/assertion-rename-helpers.js +2 -3
  266. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
  267. package/dist/src/runtime/emit/binary.d.ts +5 -0
  268. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  269. package/dist/src/runtime/emit/binary.js +22 -22
  270. package/dist/src/runtime/emit/binary.js.map +1 -1
  271. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  272. package/dist/src/runtime/emit/block.js +9 -3
  273. package/dist/src/runtime/emit/block.js.map +1 -1
  274. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  275. package/dist/src/runtime/emit/constraint-check.js +5 -6
  276. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  277. package/dist/src/runtime/emit/create-assertion.d.ts.map +1 -1
  278. package/dist/src/runtime/emit/create-assertion.js +71 -70
  279. package/dist/src/runtime/emit/create-assertion.js.map +1 -1
  280. package/dist/src/runtime/emit/create-index.d.ts.map +1 -1
  281. package/dist/src/runtime/emit/create-index.js +8 -3
  282. package/dist/src/runtime/emit/create-index.js.map +1 -1
  283. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  284. package/dist/src/runtime/emit/create-table.js +20 -10
  285. package/dist/src/runtime/emit/create-table.js.map +1 -1
  286. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  287. package/dist/src/runtime/emit/create-view.js +51 -44
  288. package/dist/src/runtime/emit/create-view.js.map +1 -1
  289. package/dist/src/runtime/emit/ddl-event-scope.d.ts +71 -0
  290. package/dist/src/runtime/emit/ddl-event-scope.d.ts.map +1 -0
  291. package/dist/src/runtime/emit/ddl-event-scope.js +80 -0
  292. package/dist/src/runtime/emit/ddl-event-scope.js.map +1 -0
  293. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  294. package/dist/src/runtime/emit/dml-executor.js +23 -23
  295. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  296. package/dist/src/runtime/emit/drop-assertion.d.ts.map +1 -1
  297. package/dist/src/runtime/emit/drop-assertion.js +23 -17
  298. package/dist/src/runtime/emit/drop-assertion.js.map +1 -1
  299. package/dist/src/runtime/emit/drop-index.d.ts.map +1 -1
  300. package/dist/src/runtime/emit/drop-index.js +7 -2
  301. package/dist/src/runtime/emit/drop-index.js.map +1 -1
  302. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  303. package/dist/src/runtime/emit/drop-table.js +16 -10
  304. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  305. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  306. package/dist/src/runtime/emit/drop-view.js +50 -43
  307. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  308. package/dist/src/runtime/emit/insert.d.ts.map +1 -1
  309. package/dist/src/runtime/emit/insert.js +2 -1
  310. package/dist/src/runtime/emit/insert.js.map +1 -1
  311. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  312. package/dist/src/runtime/emit/materialized-view.js +87 -67
  313. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  314. package/dist/src/runtime/emit/schema-declarative.d.ts +8 -0
  315. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  316. package/dist/src/runtime/emit/schema-declarative.js +128 -25
  317. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  318. package/dist/src/runtime/emit/sequence.d.ts +17 -0
  319. package/dist/src/runtime/emit/sequence.d.ts.map +1 -0
  320. package/dist/src/runtime/emit/sequence.js +40 -0
  321. package/dist/src/runtime/emit/sequence.js.map +1 -0
  322. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -1
  323. package/dist/src/runtime/emit/set-object-tags.js +40 -32
  324. package/dist/src/runtime/emit/set-object-tags.js.map +1 -1
  325. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  326. package/dist/src/runtime/emit/table-valued-function.js +3 -2
  327. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  328. package/dist/src/runtime/emit/update.js +3 -3
  329. package/dist/src/runtime/emit/update.js.map +1 -1
  330. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -1
  331. package/dist/src/runtime/emit/view-mutation.js +45 -3
  332. package/dist/src/runtime/emit/view-mutation.js.map +1 -1
  333. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  334. package/dist/src/runtime/foreign-key-actions.js +9 -10
  335. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  336. package/dist/src/runtime/register.d.ts.map +1 -1
  337. package/dist/src/runtime/register.js +3 -2
  338. package/dist/src/runtime/register.js.map +1 -1
  339. package/dist/src/runtime/row-constraints.d.ts +14 -8
  340. package/dist/src/runtime/row-constraints.d.ts.map +1 -1
  341. package/dist/src/runtime/row-constraints.js +41 -15
  342. package/dist/src/runtime/row-constraints.js.map +1 -1
  343. package/dist/src/runtime/strict-representation.d.ts +11 -6
  344. package/dist/src/runtime/strict-representation.d.ts.map +1 -1
  345. package/dist/src/runtime/strict-representation.js +1 -44
  346. package/dist/src/runtime/strict-representation.js.map +1 -1
  347. package/dist/src/schema/assertion.d.ts +25 -2
  348. package/dist/src/schema/assertion.d.ts.map +1 -1
  349. package/dist/src/schema/assertion.js.map +1 -1
  350. package/dist/src/schema/catalog-rendering.d.ts +38 -0
  351. package/dist/src/schema/catalog-rendering.d.ts.map +1 -0
  352. package/dist/src/schema/catalog-rendering.js +171 -0
  353. package/dist/src/schema/catalog-rendering.js.map +1 -0
  354. package/dist/src/schema/catalog.d.ts +69 -3
  355. package/dist/src/schema/catalog.d.ts.map +1 -1
  356. package/dist/src/schema/catalog.js +124 -19
  357. package/dist/src/schema/catalog.js.map +1 -1
  358. package/dist/src/schema/column-source-resolver.d.ts +9 -5
  359. package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
  360. package/dist/src/schema/column-source-resolver.js +9 -5
  361. package/dist/src/schema/column-source-resolver.js.map +1 -1
  362. package/dist/src/schema/constraint-builder.d.ts +13 -10
  363. package/dist/src/schema/constraint-builder.d.ts.map +1 -1
  364. package/dist/src/schema/constraint-builder.js +45 -17
  365. package/dist/src/schema/constraint-builder.js.map +1 -1
  366. package/dist/src/schema/declared-schema-manager.d.ts +50 -0
  367. package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
  368. package/dist/src/schema/declared-schema-manager.js +52 -0
  369. package/dist/src/schema/declared-schema-manager.js.map +1 -1
  370. package/dist/src/schema/expr-scope/frame.d.ts +65 -0
  371. package/dist/src/schema/expr-scope/frame.d.ts.map +1 -0
  372. package/dist/src/schema/expr-scope/frame.js +104 -0
  373. package/dist/src/schema/expr-scope/frame.js.map +1 -0
  374. package/dist/src/schema/expr-scope/walk.d.ts +40 -0
  375. package/dist/src/schema/expr-scope/walk.d.ts.map +1 -0
  376. package/dist/src/schema/expr-scope/walk.js +260 -0
  377. package/dist/src/schema/expr-scope/walk.js.map +1 -0
  378. package/dist/src/schema/generated-column-refs.d.ts +41 -0
  379. package/dist/src/schema/generated-column-refs.d.ts.map +1 -0
  380. package/dist/src/schema/generated-column-refs.js +124 -0
  381. package/dist/src/schema/generated-column-refs.js.map +1 -0
  382. package/dist/src/schema/lens-ack.d.ts.map +1 -1
  383. package/dist/src/schema/lens-ack.js +5 -2
  384. package/dist/src/schema/lens-ack.js.map +1 -1
  385. package/dist/src/schema/lens-compiler.d.ts.map +1 -1
  386. package/dist/src/schema/lens-compiler.js +9 -1
  387. package/dist/src/schema/lens-compiler.js.map +1 -1
  388. package/dist/src/schema/lens-prover.d.ts +7 -2
  389. package/dist/src/schema/lens-prover.d.ts.map +1 -1
  390. package/dist/src/schema/lens-prover.js +105 -11
  391. package/dist/src/schema/lens-prover.js.map +1 -1
  392. package/dist/src/schema/lens.d.ts +12 -0
  393. package/dist/src/schema/lens.d.ts.map +1 -1
  394. package/dist/src/schema/lens.js +10 -0
  395. package/dist/src/schema/lens.js.map +1 -1
  396. package/dist/src/schema/manager.d.ts +35 -1
  397. package/dist/src/schema/manager.d.ts.map +1 -1
  398. package/dist/src/schema/manager.js +125 -26
  399. package/dist/src/schema/manager.js.map +1 -1
  400. package/dist/src/schema/rename/self-qualifier-strip.d.ts +16 -10
  401. package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -1
  402. package/dist/src/schema/rename/self-qualifier-strip.js +30 -213
  403. package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -1
  404. package/dist/src/schema/rename-rewriter.d.ts +4 -3
  405. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  406. package/dist/src/schema/rename-rewriter.js +4 -3
  407. package/dist/src/schema/rename-rewriter.js.map +1 -1
  408. package/dist/src/schema/schema-differ.d.ts +54 -6
  409. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  410. package/dist/src/schema/schema-differ.js +108 -42
  411. package/dist/src/schema/schema-differ.js.map +1 -1
  412. package/dist/src/schema/schema-hasher.d.ts +12 -0
  413. package/dist/src/schema/schema-hasher.d.ts.map +1 -1
  414. package/dist/src/schema/schema-hasher.js +28 -10
  415. package/dist/src/schema/schema-hasher.js.map +1 -1
  416. package/dist/src/schema/table.d.ts +74 -19
  417. package/dist/src/schema/table.d.ts.map +1 -1
  418. package/dist/src/schema/table.js +133 -71
  419. package/dist/src/schema/table.js.map +1 -1
  420. package/dist/src/types/comparison-coercion.d.ts +5 -1
  421. package/dist/src/types/comparison-coercion.d.ts.map +1 -1
  422. package/dist/src/types/comparison-coercion.js +21 -5
  423. package/dist/src/types/comparison-coercion.js.map +1 -1
  424. package/dist/src/types/representation.d.ts +65 -0
  425. package/dist/src/types/representation.d.ts.map +1 -0
  426. package/dist/src/types/representation.js +63 -0
  427. package/dist/src/types/representation.js.map +1 -0
  428. package/dist/src/types/validation.d.ts +76 -22
  429. package/dist/src/types/validation.d.ts.map +1 -1
  430. package/dist/src/types/validation.js +110 -31
  431. package/dist/src/types/validation.js.map +1 -1
  432. package/dist/src/vtab/best-access-plan.d.ts +10 -0
  433. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  434. package/dist/src/vtab/best-access-plan.js +16 -0
  435. package/dist/src/vtab/best-access-plan.js.map +1 -1
  436. package/dist/src/vtab/capabilities.d.ts +72 -4
  437. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  438. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  439. package/dist/src/vtab/memory/layer/manager.js +17 -13
  440. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  441. package/dist/src/vtab/module.d.ts +13 -7
  442. package/dist/src/vtab/module.d.ts.map +1 -1
  443. package/package.json +3 -3
  444. package/dist/src/planner/nodes/array-index-node.d.ts +0 -22
  445. package/dist/src/planner/nodes/array-index-node.d.ts.map +0 -1
  446. package/dist/src/planner/nodes/array-index-node.js +0 -41
  447. package/dist/src/planner/nodes/array-index-node.js.map +0 -1
  448. package/dist/src/runtime/emit/array-index.d.ts +0 -5
  449. package/dist/src/runtime/emit/array-index.d.ts.map +0 -1
  450. package/dist/src/runtime/emit/array-index.js +0 -22
  451. package/dist/src/runtime/emit/array-index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"foreign-key-builder.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/foreign-key-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAuB,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAA4C,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMzE,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAA2D,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AA4C/H;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,SAAS,EAAE,KAAK,GAAG,KAAK,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,UAAU,CAyBhB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACxC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,SAAS,EAAE,KAAK,GAAG,KAAK,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,SAAS,CAgBf;AAiDD;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,aAAa,CAAC,wBAAwB,CAAM,GAC7D,eAAe,EAAE,CAgHnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,aAAa,CAAC,wBAAwB,CAAM,GAC7D,eAAe,EAAE,CAmHnB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,0BAA0B,CAAC;IACxC,wFAAwF;IACxF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,uBAAuB,CACtC,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAC9B,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,UAAU,EAAE,OAAO,GACjB,mBAAmB,EAAE,GAAG,SAAS,CAqBnC"}
1
+ {"version":3,"file":"foreign-key-builder.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/foreign-key-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAuB,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAA0D,MAAM,uBAAuB,CAAC;AAC1G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMzE,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAA2D,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AA4C/H;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,SAAS,EAAE,KAAK,GAAG,KAAK,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,UAAU,CAyBhB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACxC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,SAAS,EAAE,KAAK,GAAG,KAAK,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,GAAG,CAAC,SAAS,CAgBf;AAiDD;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,aAAa,CAAC,wBAAwB,CAAM,GAC7D,eAAe,EAAE,CA2HnB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACtC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,aAAa,CAAC,wBAAwB,CAAM,GAC7D,eAAe,EAAE,CAoHnB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,0BAA0B,CAAC;IACxC,wFAAwF;IACxF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,uBAAuB,CACtC,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAC9B,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,UAAU,EAAE,OAAO,GACjB,mBAAmB,EAAE,GAAG,SAAS,CAwBnC"}
@@ -1,4 +1,4 @@
1
- import { RowOpFlag, resolveReferencedColumns } from '../../schema/table.js';
1
+ import { RowOpFlag, resolveReferencedColumnsForEnforcement } from '../../schema/table.js';
2
2
  import { ConflictResolution } from '../../common/constants.js';
3
3
  import { RegisteredScope } from '../scopes/registered.js';
4
4
  import { buildExpression } from './expression.js';
@@ -151,28 +151,37 @@ export function buildChildSideFKChecks(ctx, tableSchema, operation, oldAttribute
151
151
  // FK column is NULL — but otherwise no parent row can match, so the check must
152
152
  // fail. Build a null-guard chain terminated by a falsy literal in that case.
153
153
  const parentSchema = ctx.schemaManager.findTable(fk.referencedTable, fk.referencedSchema);
154
+ const constraintName = fk.name ?? `_fk_${tableSchema.name}`;
154
155
  let existsExpr;
156
+ // Set only for the absent-parent fallback: the null-guard chain is engine-
157
+ // synthesized, so quoting it back as the failure hint tells the user nothing
158
+ // about WHY the row was rejected. Name the table that is missing instead.
159
+ let violationMessage;
155
160
  if (!parentSchema) {
156
- log(`FK '${fk.name}': parent table '${fk.referencedTable}' not found; emitting null-guards-only check`);
161
+ const parentQualified = `${fk.referencedSchema ?? tableSchema.schemaName}.${fk.referencedTable}`;
162
+ log(`FK '${fk.name}': parent table '${parentQualified}' not found; emitting null-guards-only check`);
157
163
  const nullGuards = fk.columns.map((childColIdx) => ({
158
164
  type: 'unary',
159
165
  operator: 'IS NULL',
160
166
  expr: { type: 'column', name: tableSchema.columns[childColIdx].name, table: 'NEW' },
161
167
  }));
162
168
  existsExpr = nullGuards.reduceRight((acc, guard) => ({ type: 'binary', operator: 'OR', left: guard, right: acc }), { type: 'literal', value: 0 });
169
+ // An unqualified parent name binds to the CHILD's own schema
170
+ // (docs/sql-constraints.md §7.6), so naming the schema is what makes a cross-schema mistake
171
+ // visible: the fix is to qualify the parent.
172
+ violationMessage = `CHECK constraint failed: ${constraintName} — referenced table `
173
+ + `'${parentQualified}' does not exist`;
163
174
  }
164
175
  else {
165
- const parentColIndices = resolveReferencedColumns(fk, parentSchema);
166
- if (parentColIndices.length !== fk.columns.length) {
167
- log(`FK check skipped: column count mismatch for FK '${fk.name}'`);
168
- continue;
169
- }
176
+ // A count mismatch means the FK cannot be checked at all — raise rather
177
+ // than skip, so an unenforceable constraint never looks enforced.
178
+ const parentColIndices = resolveReferencedColumnsForEnforcement(fk, parentSchema, tableSchema);
170
179
  // Synthesize EXISTS(SELECT 1 FROM parent WHERE parent.ref = NEW.fk)
171
180
  existsExpr = synthesizeExistsCheck(fk, tableSchema, parentSchema, parentColIndices, 'new');
172
181
  }
173
182
  // Build as a RowConstraintSchema so it integrates with existing infrastructure
174
183
  const syntheticConstraint = {
175
- name: fk.name ?? `_fk_${tableSchema.name}`,
184
+ name: constraintName,
176
185
  expr: existsExpr,
177
186
  operations: (RowOpFlag.INSERT | RowOpFlag.UPDATE),
178
187
  deferrable: true,
@@ -218,6 +227,7 @@ export function buildChildSideFKChecks(ctx, tableSchema, operation, oldAttribute
218
227
  initiallyDeferred: true,
219
228
  needsDeferred: true,
220
229
  kind: 'fk-child',
230
+ violationMessage,
221
231
  });
222
232
  }
223
233
  finally {
@@ -257,9 +267,9 @@ export function buildParentSideFKChecks(ctx, tableSchema, operation, oldAttribut
257
267
  // rejected by the immediate plan-time NOT EXISTS).
258
268
  if (suppressed.has(fk))
259
269
  continue;
260
- const parentColIndices = resolveReferencedColumns(fk, tableSchema);
261
- if (parentColIndices.length !== fk.columns.length)
262
- continue;
270
+ // A count mismatch means this inbound FK cannot be checked — raise rather
271
+ // than skip, so RESTRICT never silently stops rejecting.
272
+ const parentColIndices = resolveReferencedColumnsForEnforcement(fk, tableSchema, childTable);
263
273
  // For UPDATE, the runtime skips this check when none of `parentColIndices`
264
274
  // changed (see runtime/row-constraints.ts).
265
275
  // Synthesize NOT EXISTS(SELECT 1 FROM child WHERE child.fk = OLD.pk)
@@ -346,12 +356,24 @@ export function buildParentSideFKChecks(ctx, tableSchema, operation, oldAttribut
346
356
  * outcome depends on which rows the same statement has already deleted.
347
357
  *
348
358
  * An inbound FK whose referenced-column resolution is malformed (column-count
349
- * mismatch) is skipped from the batch — the per-row paths skip it identically,
350
- * so it never disqualifies. The `foreign_keys` pragma is NOT part of the gate;
351
- * callers check it (the plan side already gates the build, the runtime flush
352
- * re-checks at execution).
359
+ * mismatch) RAISES here, matching the per-row builders — the batch replaces
360
+ * both per-row probes, so skipping it would leave the FK unenforced on this
361
+ * route only. That raise is why the `foreign_keys` pragma is checked HERE rather
362
+ * than left to callers: with enforcement off nothing is checked on either route,
363
+ * so a malformed inbound FK must not fail the statement either. Taking `db`
364
+ * (not a bare `SchemaManager`) is what makes that unforgettable — the runtime
365
+ * DML executor calls this gate on every DELETE/UPDATE and has no other pragma
366
+ * check before it.
367
+ *
368
+ * NOTE: the trust-the-origin RESTRICT suppression (`db._isFkRestrictSuppressed()`,
369
+ * re-checked in `flushParentRestrictBatch`) is deliberately NOT part of the gate —
370
+ * suppression means the origin already enforced this FK, and a malformed FK is a
371
+ * malformed declaration on both ends. If an apply-path write ever needs to survive
372
+ * a receiver-only malformed FK, this is the site to widen.
353
373
  */
354
- export function getBatchableRestrictFks(schemaManager, tableSchema, operation, onConflict, lensRouted) {
374
+ export function getBatchableRestrictFks(db, tableSchema, operation, onConflict, lensRouted) {
375
+ if (!db.options.getBooleanOption('foreign_keys'))
376
+ return undefined;
355
377
  if (lensRouted)
356
378
  return undefined;
357
379
  if (onConflict !== undefined
@@ -360,7 +382,7 @@ export function getBatchableRestrictFks(schemaManager, tableSchema, operation, o
360
382
  return undefined;
361
383
  }
362
384
  const batchable = [];
363
- for (const { childTable, fk } of schemaManager.getReferencingForeignKeys(tableSchema.schemaName, tableSchema.name)) {
385
+ for (const { childTable, fk } of db.schemaManager.getReferencingForeignKeys(tableSchema.schemaName, tableSchema.name)) {
364
386
  const action = operation === 'delete' ? fk.onDelete : fk.onUpdate;
365
387
  if (action !== 'restrict')
366
388
  return undefined;
@@ -368,9 +390,10 @@ export function getBatchableRestrictFks(schemaManager, tableSchema, operation, o
368
390
  && childTable.name.toLowerCase() === tableSchema.name.toLowerCase()) {
369
391
  return undefined;
370
392
  }
371
- const parentColIndices = resolveReferencedColumns(fk, tableSchema);
372
- if (parentColIndices.length !== fk.columns.length)
373
- continue; // malformed — per-row skips it too
393
+ // Raises on a column-count mismatch, exactly as the per-row builders do —
394
+ // the batch is the ONLY enforcement on this route (the per-row parent-side
395
+ // checks are not built when batching applies), so it must not skip.
396
+ const parentColIndices = resolveReferencedColumnsForEnforcement(fk, tableSchema, childTable);
374
397
  batchable.push({ childTable, fk, parentColIndices });
375
398
  }
376
399
  return batchable;
@@ -1 +1 @@
1
- {"version":3,"file":"foreign-key-builder.js","sourceRoot":"","sources":["../../../../src/planner/building/foreign-key-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foreign-key-builder.js","sourceRoot":"","sources":["../../../../src/planner/building/foreign-key-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type * as AST from '../../parser/ast.js';
2
+ import type { PlanningContext } from '../planning-context.js';
3
+ import type { TableSchema } from '../../schema/table.js';
4
+ import type { Attribute, ScalarPlanNode } from '../nodes/plan-node.js';
5
+ /**
6
+ * Compile one `generated always as (<expr>)` body against the row it is computed
7
+ * from. THE one place that decides what a generated expression may name, so the
8
+ * four sites that compile such a body — the INSERT row expansion, the
9
+ * `on conflict do update` recompute, the UPDATE recompute, and the
10
+ * `alter table … add column` backfill — accept exactly the same spellings. A
11
+ * declaration `create table` (or `alter table`) accepts is therefore one every
12
+ * subsequent write accepts.
13
+ *
14
+ * Accepted spellings, matching what the schema-time reference analysis
15
+ * (`schema/generated-column-refs.ts`) already classifies as binding the owning
16
+ * table's row:
17
+ *
18
+ * | spelling | how it resolves |
19
+ * |---------------------------------|--------------------------------------------------|
20
+ * | `<col>` | registered below |
21
+ * | `<table>.<col>` | folded to `<col>` by the self-qualifier strip |
22
+ * | `<own-schema>.<table>.<col>` | same |
23
+ * | `new.<col>` | registered below — an exact alias for the bare form|
24
+ * | `old.<col>` | NOT registered: a generated value is computed from |
25
+ * | | the row being written; there is no old row |
26
+ * | any other qualifier | falls through to the ordinary scope chain |
27
+ *
28
+ * `new.<col>` is accepted rather than rejected because `alter table … add column`
29
+ * already accepts and correctly backfills it, and because both `CHECK`
30
+ * (`constraint-builder.ts`) and column `DEFAULT` (`default-scope.ts`) accept it —
31
+ * for a `DEFAULT` it is the ONLY accepted spelling.
32
+ *
33
+ * MUTATION CONTEXT: unlike a `CHECK` or a column `DEFAULT`, a `with context`
34
+ * variable does NOT shadow a same-named column here — the bare name always means
35
+ * the column, and context variables are not registered at all. Two reasons: a
36
+ * generated value is a pure function of the row being written and must compute
37
+ * identically at every one of the four sites, and the `alter table … add column`
38
+ * backfill has no mutation-context envelope to read (letting a context variable
39
+ * capture the name would make a currently-working backfill fail); and the
40
+ * schema-time analysis already rejects any bare name in a generated body that is
41
+ * not a column of the table, so a generated body can only ever *collide* with a
42
+ * context variable, never usefully name one. See docs/sql-ddl.md § Generated
43
+ * Columns.
44
+ */
45
+ export declare function buildGeneratedColumnExpr(ctx: PlanningContext, tableSchema: TableSchema,
46
+ /** The generated column's name, for the determinism diagnostic. At
47
+ * `add column` this is the column being declared, which is NOT yet in
48
+ * `tableSchema.columns`. */
49
+ columnName: string, generatedExpr: AST.Expression,
50
+ /**
51
+ * The attributes carrying the row the expression computes from, index-aligned
52
+ * with `tableSchema.columns`. Each site supplies its own: the prior projection's
53
+ * output (INSERT, so a generated column referencing another sees the freshly
54
+ * computed value), the conflicting row (`do update`), the update source, or the
55
+ * pre-ALTER row (backfill).
56
+ */
57
+ rowAttributes: ReadonlyArray<Attribute>): ScalarPlanNode;
58
+ //# sourceMappingURL=generated-column-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-column-scope.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/generated-column-scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAYvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,wBAAwB,CACvC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW;AACxB;;6BAE6B;AAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,UAAU;AAC7B;;;;;;GAMG;AACH,aAAa,EAAE,aAAa,CAAC,SAAS,CAAC,GACrC,cAAc,CAgEhB"}
@@ -0,0 +1,117 @@
1
+ import { quereusError } from '../../common/errors.js';
2
+ import { StatusCode } from '../../common/types.js';
3
+ import { RegisteredScope } from '../scopes/registered.js';
4
+ import { ColumnReferenceNode } from '../nodes/reference.js';
5
+ import { buildExpression } from './expression.js';
6
+ import { schemaAuthoredContext } from './schema-authored-context.js';
7
+ import { validateDeterministicGenerated } from '../validation/determinism-validator.js';
8
+ import { stripSelfQualifierInSchemaExpression } from '../../schema/rename-rewriter.js';
9
+ import { buildColumnSourceResolver } from '../../schema/column-source-resolver.js';
10
+ import { cloneExpr } from '../mutation/scope-transform.js';
11
+ import { columnSchemaToScalarType } from '../type-utils.js';
12
+ /**
13
+ * Compile one `generated always as (<expr>)` body against the row it is computed
14
+ * from. THE one place that decides what a generated expression may name, so the
15
+ * four sites that compile such a body — the INSERT row expansion, the
16
+ * `on conflict do update` recompute, the UPDATE recompute, and the
17
+ * `alter table … add column` backfill — accept exactly the same spellings. A
18
+ * declaration `create table` (or `alter table`) accepts is therefore one every
19
+ * subsequent write accepts.
20
+ *
21
+ * Accepted spellings, matching what the schema-time reference analysis
22
+ * (`schema/generated-column-refs.ts`) already classifies as binding the owning
23
+ * table's row:
24
+ *
25
+ * | spelling | how it resolves |
26
+ * |---------------------------------|--------------------------------------------------|
27
+ * | `<col>` | registered below |
28
+ * | `<table>.<col>` | folded to `<col>` by the self-qualifier strip |
29
+ * | `<own-schema>.<table>.<col>` | same |
30
+ * | `new.<col>` | registered below — an exact alias for the bare form|
31
+ * | `old.<col>` | NOT registered: a generated value is computed from |
32
+ * | | the row being written; there is no old row |
33
+ * | any other qualifier | falls through to the ordinary scope chain |
34
+ *
35
+ * `new.<col>` is accepted rather than rejected because `alter table … add column`
36
+ * already accepts and correctly backfills it, and because both `CHECK`
37
+ * (`constraint-builder.ts`) and column `DEFAULT` (`default-scope.ts`) accept it —
38
+ * for a `DEFAULT` it is the ONLY accepted spelling.
39
+ *
40
+ * MUTATION CONTEXT: unlike a `CHECK` or a column `DEFAULT`, a `with context`
41
+ * variable does NOT shadow a same-named column here — the bare name always means
42
+ * the column, and context variables are not registered at all. Two reasons: a
43
+ * generated value is a pure function of the row being written and must compute
44
+ * identically at every one of the four sites, and the `alter table … add column`
45
+ * backfill has no mutation-context envelope to read (letting a context variable
46
+ * capture the name would make a currently-working backfill fail); and the
47
+ * schema-time analysis already rejects any bare name in a generated body that is
48
+ * not a column of the table, so a generated body can only ever *collide* with a
49
+ * context variable, never usefully name one. See docs/sql-ddl.md § Generated
50
+ * Columns.
51
+ */
52
+ export function buildGeneratedColumnExpr(ctx, tableSchema,
53
+ /** The generated column's name, for the determinism diagnostic. At
54
+ * `add column` this is the column being declared, which is NOT yet in
55
+ * `tableSchema.columns`. */
56
+ columnName, generatedExpr,
57
+ /**
58
+ * The attributes carrying the row the expression computes from, index-aligned
59
+ * with `tableSchema.columns`. Each site supplies its own: the prior projection's
60
+ * output (INSERT, so a generated column referencing another sees the freshly
61
+ * computed value), the conflicting row (`do update`), the update source, or the
62
+ * pre-ALTER row (backfill).
63
+ */
64
+ rowAttributes) {
65
+ // Fold `<table>.<col>` / `<schema>.<table>.<col>` to the bare form the scope
66
+ // registers, on a clone — never the stored AST. Done as a rewrite rather than by
67
+ // seeding `<table>.<col>` scope keys for the reason `constraint-builder.ts`
68
+ // documents: this scope is an ancestor of every subquery planned inside the body,
69
+ // and qualified keys would let a join peer's parent-chain fallback resolve an
70
+ // inner relation's qualified columns against the outer row context.
71
+ //
72
+ // NOTE: clones and walks the body on every plan build of a write to a table with
73
+ // generated columns, exactly as the CHECK path does. Plan-build only (statements
74
+ // are prepared once, not per row) and generated bodies are small; if this ever
75
+ // shows up in a profile, cache the stripped form on the column schema.
76
+ let expr = generatedExpr;
77
+ const stripped = cloneExpr(generatedExpr);
78
+ if (stripSelfQualifierInSchemaExpression(stripped, tableSchema.name, tableSchema.schemaName, buildColumnSourceResolver(ctx.db))) {
79
+ expr = stripped;
80
+ }
81
+ const scope = new RegisteredScope(ctx.scope);
82
+ // NOTE: a column whose quoted name contains a dot (`"new.a"` beside a column `a`)
83
+ // makes the `new.` alias key collide with the bare key, and `registerSymbol`
84
+ // rejects the duplicate — so every write to such a table fails to plan. Pre-exists
85
+ // this builder on the CHECK (`constraint-builder.ts`) and `do update` SET scopes,
86
+ // which key the same flat `<qualifier>.<name>` string namespace; tracked as
87
+ // `bug-scope-symbol-keys-collide-with-dotted-column-names`. Do not paper over it
88
+ // here — a local skip would silently pick one of the two columns.
89
+ tableSchema.columns.forEach((column, columnIndex) => {
90
+ const attr = rowAttributes[columnIndex];
91
+ if (!attr) {
92
+ // Every caller derives its row from `tableSchema.columns`, so a short array
93
+ // is a caller bug. Failing loudly beats registering nothing: the missing
94
+ // column name would fall through to the enclosing scope and bind whatever
95
+ // happens to be there.
96
+ quereusError(`Internal: generated column '${columnName}' on '${tableSchema.name}' has no row attribute for column '${column.name}' (index ${columnIndex}); row supplies ${rowAttributes.length} of ${tableSchema.columns.length}`, StatusCode.INTERNAL);
97
+ }
98
+ // Resolve against the column's DECLARED type (which carries its declared
99
+ // collation), so a generated expression comparing text resolves the same
100
+ // collation a read-path query and a CHECK would — the row attribute's type
101
+ // reflects whatever expression produced it.
102
+ const columnType = columnSchemaToScalarType(column);
103
+ const makeRef = (exp, s) => new ColumnReferenceNode(s, exp, columnType, attr.id, columnIndex);
104
+ const colNameLower = column.name.toLowerCase();
105
+ scope.registerSymbol(colNameLower, makeRef);
106
+ scope.registerSymbol(`new.${colNameLower}`, makeRef);
107
+ });
108
+ // Schema-authored SQL: bare relation names inside the body resolve against the
109
+ // TABLE's own schema and cannot bind the writing statement's CTEs, whichever site
110
+ // is compiling it.
111
+ const node = buildExpression({ ...schemaAuthoredContext(ctx, tableSchema.schemaName), scope }, expr);
112
+ if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
113
+ validateDeterministicGenerated(node, columnName, tableSchema.name);
114
+ }
115
+ return node;
116
+ }
117
+ //# sourceMappingURL=generated-column-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-column-scope.js","sourceRoot":"","sources":["../../../../src/planner/building/generated-column-scope.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAA2D,MAAM,uBAAuB,CAAC;AAKnI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKhD,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAikB9F,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;GAMG;AACH,gBAAgB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AACzD;;;;;;;;;GASG;AACH,cAAc,CAAC,EAAE,kBAAkB;AACnC;;;;;;GAMG;AACH,UAAU,UAAQ;AAClB;;;;;;;;;;;;GAYG;AACH,sBAAsB,CAAC,EAAE,KAAK,GAC5B,QAAQ,CAuaV"}
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAA2D,MAAM,uBAAuB,CAAC;AAKnI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkjB9F,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;GAMG;AACH,gBAAgB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AACzD;;;;;;;;;GASG;AACH,cAAc,CAAC,EAAE,kBAAkB;AACnC;;;;;;GAMG;AACH,UAAU,UAAQ;AAClB;;;;;;;;;;;;GAYG;AACH,sBAAsB,CAAC,EAAE,KAAK,GAC5B,QAAQ,CAuaV"}
@@ -12,6 +12,7 @@ import { buildExpression } from './expression.js';
12
12
  import { checkColumnsAssignable, columnSchemaToDef, columnSchemaToScalarType } from '../type-utils.js';
13
13
  import { RegisteredScope } from '../scopes/registered.js';
14
14
  import { buildRowDefaultScope } from './default-scope.js';
15
+ import { buildGeneratedColumnExpr } from './generated-column-scope.js';
15
16
  import { ColumnReferenceNode } from '../nodes/reference.js';
16
17
  import { SinkNode } from '../nodes/sink-node.js';
17
18
  import { ConstraintCheckNode } from '../nodes/constraint-check-node.js';
@@ -25,7 +26,7 @@ import { DmlExecutorNode } from '../nodes/dml-executor-node.js';
25
26
  import { buildConstraintChecks, buildNotNullDefaults } from './constraint-builder.js';
26
27
  import { buildChildSideFKChecks, buildParentSideFKChecks, getBatchableRestrictFks } from './foreign-key-builder.js';
27
28
  import { schemaAuthoredContext } from './schema-authored-context.js';
28
- import { validateDeterministicDefault, validateDeterministicGenerated } from '../validation/determinism-validator.js';
29
+ import { validateDeterministicDefault } from '../validation/determinism-validator.js';
29
30
  import { validateReturningQualifiers } from '../validation/returning-qualifier-validator.js';
30
31
  import { isCommittedSchemaRef } from './schema-resolution.js';
31
32
  import { buildViewMutation } from './view-mutation-builder.js';
@@ -174,22 +175,13 @@ function createGeneratedColumnProjection(ctx, sourceNode, tableSchema) {
174
175
  const genColumn = tableSchema.columns[genColIdx];
175
176
  if (!genColumn.generated || !genColumn.generatedExpr)
176
177
  continue;
178
+ // The row this iteration computes from is the CURRENT node's output, not the
179
+ // table reference's: generated columns processed in earlier iterations carry
180
+ // their freshly-computed value there. Do not collapse the chain.
177
181
  const inputAttributes = currentNode.getAttributes();
178
- // Scope: every column resolves to the corresponding attribute in the
179
- // current source. This includes generated columns processed in earlier
180
- // iterations — their attribute carries the freshly-computed value.
181
- const genScope = new RegisteredScope(ctx.scope);
182
- tableSchema.columns.forEach((col, colIndex) => {
183
- const attr = inputAttributes[colIndex];
184
- genScope.registerSymbol(col.name.toLowerCase(), (exp, s) => new ColumnReferenceNode(s, exp, attr.type, attr.id, colIndex));
185
- });
186
- const genCtx = { ...ctx, scope: genScope };
187
182
  const genProjections = tableSchema.columns.map((col, colIdx) => {
188
183
  if (colIdx === genColIdx) {
189
- const genNode = buildExpression(genCtx, genColumn.generatedExpr);
190
- if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
191
- validateDeterministicGenerated(genNode, genColumn.name, tableSchema.name);
192
- }
184
+ const genNode = buildGeneratedColumnExpr(ctx, tableSchema, genColumn.name, genColumn.generatedExpr, inputAttributes);
193
185
  return { node: genNode, alias: col.name };
194
186
  }
195
187
  const attr = inputAttributes[colIdx];
@@ -242,9 +234,12 @@ function resolveConflictTargetEnforcement(tableSchema, conflictTargetIndices) {
242
234
  }
243
235
  /**
244
236
  * Register the conflicting row's columns on `scope`, under both the bare name and
245
- * the `<table>.<name>` qualified form. Shared by the DO UPDATE SET scope (where
246
- * unqualified names mean the existing row) and the generated-column recompute
247
- * scope, which sees the same attributes but none of the `new.` / `excluded.` ones.
237
+ * the `<table>.<name>` qualified form. Serves the DO UPDATE SET scope, where
238
+ * unqualified names mean the existing row — user-written SQL, which may name the
239
+ * target however the statement spells it. The generated-column recompute reads the
240
+ * same attributes but builds its own scope in {@link buildGeneratedColumnExpr}: a
241
+ * stored body must accept the same spellings at every write site, not the ones this
242
+ * statement happens to offer.
248
243
  */
249
244
  function registerExistingRowColumns(scope, tableSchema, existingAttributes) {
250
245
  existingAttributes.forEach((attr, columnIndex) => {
@@ -267,23 +262,20 @@ function registerExistingRowColumns(scope, tableSchema, existingAttributes) {
267
262
  *
268
263
  * The expressions get their OWN scope over the existing-row attributes rather than
269
264
  * reusing the SET scope: schema-authored SQL must not be able to bind the
270
- * statement's `new.` / `excluded.` symbols. Wrapped in `schemaAuthoredContext` for
271
- * the same reason `building/update.ts` wraps its recompute — the table's own DDL
272
- * resolves bare relation names in its own schema and cannot see the writing
273
- * statement's CTEs.
265
+ * statement's `new.` / `excluded.` symbols. That scope — and the
266
+ * `schemaAuthoredContext` wrapper — come from {@link buildGeneratedColumnExpr}, the
267
+ * one builder all four generated-expression sites share, so this recompute accepts
268
+ * exactly the spellings an INSERT, an UPDATE and an ADD COLUMN backfill accept.
269
+ * Only the generated arm routes through it: the DO UPDATE SET scope keeps its own
270
+ * `<table>.<col>` registration, which serves user-written SQL, not a stored body.
274
271
  */
275
272
  function appendGeneratedRecomputes(ctx, tableSchema, existingAttributes, assignments) {
276
- const generatedCtx = schemaAuthoredContext({ ...ctx, scope: registerExistingRowColumns(new RegisteredScope(ctx.scope), tableSchema, existingAttributes) }, tableSchema.schemaName);
277
273
  const generatedAssignmentColumns = [];
278
274
  for (const colIndex of tableSchema.generatedColumnTopoOrder ?? []) {
279
275
  const col = tableSchema.columns[colIndex];
280
276
  if (!col.generated || !col.generatedExpr)
281
277
  continue;
282
- const genNode = buildExpression(generatedCtx, col.generatedExpr);
283
- if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
284
- validateDeterministicGenerated(genNode, col.name, tableSchema.name);
285
- }
286
- assignments.set(colIndex, genNode);
278
+ assignments.set(colIndex, buildGeneratedColumnExpr(ctx, tableSchema, col.name, col.generatedExpr, existingAttributes));
287
279
  generatedAssignmentColumns.push(colIndex);
288
280
  }
289
281
  return generatedAssignmentColumns;
@@ -325,7 +317,7 @@ function buildUpsertUpdateValidation(ctx, schemaAuthoredCtx, tableReference, con
325
317
  // cascaded ones). `runInsert` owns no ParentRestrictBatch, so unlike `runUpdate`
326
318
  // the admitted case is enforced by that per-row pre-walk rather than one
327
319
  // end-of-statement probe — same verdict, same message, no batching.
328
- if (getBatchableRestrictFks(ctx.schemaManager, tableSchema, 'update', undefined, lensRouted) === undefined) {
320
+ if (getBatchableRestrictFks(ctx.db, tableSchema, 'update', undefined, lensRouted) === undefined) {
329
321
  checks.push(...buildParentSideFKChecks(schemaAuthoredCtx, tableSchema, RowOpFlag.UPDATE, oldAttributes, newAttributes, contextAttributes));
330
322
  }
331
323
  }