@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
@@ -6,7 +6,7 @@ import { buildInsertStmt } from './insert.js';
6
6
  import { buildUpdateStmt } from './update.js';
7
7
  import { buildDeleteStmt } from './delete.js';
8
8
  import { buildExpression } from './expression.js';
9
- import { QuereusError } from '../../common/errors.js';
9
+ import { QuereusError, quereusError } from '../../common/errors.js';
10
10
  import { StatusCode } from '../../common/types.js';
11
11
  import { RegisteredScope } from '../scopes/registered.js';
12
12
  import { ColumnReferenceNode } from '../nodes/reference.js';
@@ -16,6 +16,11 @@ import { ColumnReferenceNode } from '../nodes/reference.js';
16
16
  */
17
17
  export function buildWithClause(ctx, withClause) {
18
18
  const cteNodes = new Map();
19
+ // Is this a statement's OWN leading clause? `buildBlock` marks those (by clause
20
+ // object identity) on the context it builds every top-level statement under; a
21
+ // context that never passed through `buildBlock` marks nothing, which is the
22
+ // conservative answer. Absent the mark, a data-modifying member is rejected below.
23
+ const isTopLevelClause = ctx.topLevelWithClauses?.has(withClause) ?? false;
19
24
  // Check for duplicate CTE names
20
25
  const cteNames = new Set();
21
26
  for (const cte of withClause.ctes) {
@@ -24,6 +29,9 @@ export function buildWithClause(ctx, withClause) {
24
29
  throw new QuereusError(`Duplicate CTE name '${cte.name}' in WITH clause`, StatusCode.ERROR);
25
30
  }
26
31
  cteNames.add(cteName);
32
+ if (!isTopLevelClause && isDataModifyingCte(cte)) {
33
+ rejectNestedDataModifyingCte(cte);
34
+ }
27
35
  }
28
36
  // Build each CTE in order
29
37
  // Note: For recursive CTEs, we may need to handle forward references
@@ -33,6 +41,28 @@ export function buildWithClause(ctx, withClause) {
33
41
  }
34
42
  return cteNodes;
35
43
  }
44
+ /**
45
+ * A data-modifying `with` member is legal ONLY in a statement's own leading clause.
46
+ * Only there does anything own its write: `attachUnreferencedDmlCtes` (building/block.ts)
47
+ * guarantees exactly one write per statement execution whether or not the member is read,
48
+ * and it is only ever handed top-level statements. Everywhere else the member's write is
49
+ * driven by whoever happens to reference it — dropped entirely when nothing does, re-driven
50
+ * on every evaluation when the position re-evaluates (a stored view body), and once for the
51
+ * whole statement rather than once per outer row when the position is a correlated subquery.
52
+ *
53
+ * Rejecting rather than defining those cases matches PostgreSQL, and mirrors the sibling
54
+ * reject in `planViewBody` (building/create-view.ts), which refuses a DML *body* for a view
55
+ * for the same re-drive reason.
56
+ *
57
+ * Sited here — one check on the clause — rather than at each nesting position, so it covers
58
+ * every one at once (`from` sub-query, scalar / `exists` / `in` sub-query, a clause nested
59
+ * inside another CTE body, a compound arm, a stored view / materialized-view / maintained
60
+ * body, an assertion body) plus any position added later: they all funnel through
61
+ * `buildWithContext` or `buildStoredBodyCTEs` into this function.
62
+ */
63
+ function rejectNestedDataModifyingCte(cte) {
64
+ quereusError(`WITH member '${cte.name}' is data-modifying (${cte.query.type.toUpperCase()}), which is only allowed in a statement's own leading WITH clause — not in a subquery or a stored view/materialized-view body, where the write would either be dropped or re-driven on every evaluation. Move the mutation to the statement that uses this query.`, StatusCode.ERROR, undefined, cte.query);
65
+ }
36
66
  /**
37
67
  * True when `cte` is the recursive (self-referential) member of a WITH clause —
38
68
  * the `recursive` keyword AND a compound (UNION / UNION ALL) SELECT body, which is
@@ -51,7 +81,7 @@ export function isRecursiveCte(recursive, cte) {
51
81
  * `RETURNING` clause (the parser requires one for a CTE body). Such a CTE is built
52
82
  * with `materialize` already on; see the call site in {@link buildCommonTableExpr}.
53
83
  */
54
- function isDataModifyingCte(cte) {
84
+ export function isDataModifyingCte(cte) {
55
85
  const t = cte.query.type;
56
86
  return t === 'insert' || t === 'update' || t === 'delete';
57
87
  }
@@ -135,7 +165,26 @@ export function buildCommonTableExpr(ctx, cte, isRecursive, existingCTEs, option
135
165
  // RETURNING sets are small; if a bulk write's RETURNING ever needs to stream,
136
166
  // buffering would have to become conditional on the reference count — which means
137
167
  // first fixing that undercount, not relaxing this flag.
138
- return new CTENode(ctx.scope, cte.name, cte.columns, query, cte.materializationHint, isRecursive, isDataModifyingCte(cte));
168
+ //
169
+ // Resolve the CTE's runtime identity through the per-statement memo
170
+ // (PlanningContext.cteDescriptors): every build of THIS source member within one
171
+ // statement gets the same descriptor, so all its CTENodes share one per-execution
172
+ // buffer in emitCTE — a data-modifying body writes once per statement execution
173
+ // even when the builders plan the member more than once (view write-through,
174
+ // multi-source decomposition, the unreferenced-member sink rebuild in buildBlock).
175
+ //
176
+ // NOTE: sharing the identity can also drop a READ-ONLY member's evaluation count from
177
+ // N to 1 — two builds of one member now feed one buffer when the materialization
178
+ // advisory buffers it, where they used to evaluate independently. Row-identical for a
179
+ // deterministic body, and arguably better for a non-deterministic one (one consistent
180
+ // image). If a body ever needs per-build re-evaluation, the memo has to become
181
+ // conditional on `isDataModifyingCte` rather than universal.
182
+ let tableDescriptor = ctx.cteDescriptors.get(cte);
183
+ if (!tableDescriptor) {
184
+ tableDescriptor = {};
185
+ ctx.cteDescriptors.set(cte, tableDescriptor);
186
+ }
187
+ return new CTENode(ctx.scope, cte.name, cte.columns, query, cte.materializationHint, isRecursive, isDataModifyingCte(cte), tableDescriptor);
139
188
  }
140
189
  /**
141
190
  * Builds a recursive CTE node from a CTE with UNION structure.
@@ -1 +1 @@
1
- {"version":3,"file":"with.js","sourceRoot":"","sources":["../../../../src/planner/building/with.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"with.js","sourceRoot":"","sources":["../../../../src/planner/building/with.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"correlation-detector.d.ts","sourceRoot":"","sources":["../../../../src/planner/cache/correlation-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAIjG;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAK9E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,CAMvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAShG"}
1
+ {"version":3,"file":"correlation-detector.d.ts","sourceRoot":"","sources":["../../../../src/planner/cache/correlation-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAIjG;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAO9E;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,CAOvF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAShG"}
@@ -10,9 +10,11 @@ import { PlanNodeType } from '../nodes/plan-node-type.js';
10
10
  */
11
11
  export function isCorrelatedSubquery(subqueryNode) {
12
12
  // Short-circuit: stop at the first external reference rather than collecting all.
13
+ // Each walk gets its OWN `seen` set — the two answer different questions, so
14
+ // sharing one would make the second walk skip nodes it must still inspect.
13
15
  const definedAttributes = new Set();
14
- collectDefinedAttributes(subqueryNode, definedAttributes);
15
- return hasExternalReferences(subqueryNode, definedAttributes);
16
+ collectDefinedAttributes(subqueryNode, definedAttributes, new Set());
17
+ return hasExternalReferences(subqueryNode, definedAttributes, new Set());
16
18
  }
17
19
  /**
18
20
  * Collect the attribute IDs the subquery references from *outer* scopes (i.e.
@@ -21,10 +23,11 @@ export function isCorrelatedSubquery(subqueryNode) {
21
23
  * correlation depends on, not merely that it is correlated.
22
24
  */
23
25
  export function collectExternalReferences(subqueryNode) {
26
+ // Each walk gets its own `seen` set — see {@link isCorrelatedSubquery}.
24
27
  const definedAttributes = new Set();
25
- collectDefinedAttributes(subqueryNode, definedAttributes);
28
+ collectDefinedAttributes(subqueryNode, definedAttributes, new Set());
26
29
  const external = new Set();
27
- collectExternalAttributeIds(subqueryNode, definedAttributes, external);
30
+ collectExternalAttributeIds(subqueryNode, definedAttributes, external, new Set());
28
31
  return external;
29
32
  }
30
33
  /**
@@ -46,7 +49,7 @@ export function readsColumnsOf(reader, producer) {
46
49
  if (external.size === 0)
47
50
  return false;
48
51
  const produced = new Set();
49
- collectDefinedAttributes(producer, produced);
52
+ collectDefinedAttributes(producer, produced, new Set());
50
53
  for (const attrId of external) {
51
54
  if (produced.has(attrId))
52
55
  return true;
@@ -54,9 +57,21 @@ export function readsColumnsOf(reader, producer) {
54
57
  return false;
55
58
  }
56
59
  /**
57
- * Recursively collect all attributes defined by relational nodes within a subtree
60
+ * Recursively collect all attributes defined by relational nodes within a subtree.
61
+ *
62
+ * `seen` dedupes node visits within one top-level call. A relational node reaches
63
+ * its inputs through BOTH `getChildren()` and `getRelations()` — for a join those
64
+ * two lists overlap completely — so an undeduped walk visits each input twice per
65
+ * level and costs 2^depth down a join spine. `getRelations()` is not always a
66
+ * subset of `getChildren()`, so both descents must stay; dedupe, do not prune.
67
+ * The set is per top-level call and must not be shared across calls or cached
68
+ * across plan builds — plan nodes are rebuilt during optimization and the answer
69
+ * depends on where the walk started.
58
70
  */
59
- function collectDefinedAttributes(node, definedAttributes) {
71
+ function collectDefinedAttributes(node, definedAttributes, seen) {
72
+ if (seen.has(node))
73
+ return;
74
+ seen.add(node);
60
75
  // If this is a relational node, add its attributes
61
76
  const isRelational = isRelationalNode(node);
62
77
  if (isRelational) {
@@ -68,20 +83,28 @@ function collectDefinedAttributes(node, definedAttributes) {
68
83
  // Recursively process all children
69
84
  const children = node.getChildren();
70
85
  for (const child of children) {
71
- collectDefinedAttributes(child, definedAttributes);
86
+ collectDefinedAttributes(child, definedAttributes, seen);
72
87
  }
73
88
  // Also process relational children if any
74
89
  if (isRelational) {
75
90
  const relations = node.getRelations();
76
91
  for (const relation of relations) {
77
- collectDefinedAttributes(relation, definedAttributes);
92
+ collectDefinedAttributes(relation, definedAttributes, seen);
78
93
  }
79
94
  }
80
95
  }
81
96
  /**
82
- * Check if the subtree contains any column references to attributes not in the defined set
97
+ * Check if the subtree contains any column references to attributes not in the defined set.
98
+ *
99
+ * See {@link collectDefinedAttributes} for why `seen` exists. Returning `false` on
100
+ * a repeat visit is sound: a node already visited that did not short-circuit
101
+ * `true` has no external reference under it, so `false` is the answer it already
102
+ * gave.
83
103
  */
84
- function hasExternalReferences(node, definedAttributes) {
104
+ function hasExternalReferences(node, definedAttributes, seen) {
105
+ if (seen.has(node))
106
+ return false;
107
+ seen.add(node);
85
108
  // Check if this is a column reference
86
109
  if (node.nodeType === PlanNodeType.ColumnReference) {
87
110
  const colRef = node;
@@ -93,7 +116,7 @@ function hasExternalReferences(node, definedAttributes) {
93
116
  // Check all children
94
117
  const children = node.getChildren();
95
118
  for (const child of children) {
96
- if (hasExternalReferences(child, definedAttributes)) {
119
+ if (hasExternalReferences(child, definedAttributes, seen)) {
97
120
  return true;
98
121
  }
99
122
  }
@@ -101,7 +124,7 @@ function hasExternalReferences(node, definedAttributes) {
101
124
  if (isRelationalNode(node)) {
102
125
  const relations = node.getRelations();
103
126
  for (const relation of relations) {
104
- if (hasExternalReferences(relation, definedAttributes)) {
127
+ if (hasExternalReferences(relation, definedAttributes, seen)) {
105
128
  return true;
106
129
  }
107
130
  }
@@ -110,9 +133,13 @@ function hasExternalReferences(node, definedAttributes) {
110
133
  }
111
134
  /**
112
135
  * Like {@link hasExternalReferences}, but accumulates every external attribute
113
- * ID into `external` instead of short-circuiting at the first one.
136
+ * ID into `external` instead of short-circuiting at the first one. See
137
+ * {@link collectDefinedAttributes} for why `seen` exists.
114
138
  */
115
- function collectExternalAttributeIds(node, definedAttributes, external) {
139
+ function collectExternalAttributeIds(node, definedAttributes, external, seen) {
140
+ if (seen.has(node))
141
+ return;
142
+ seen.add(node);
116
143
  if (node.nodeType === PlanNodeType.ColumnReference) {
117
144
  const colRef = node;
118
145
  if (!definedAttributes.has(colRef.attributeId)) {
@@ -120,11 +147,11 @@ function collectExternalAttributeIds(node, definedAttributes, external) {
120
147
  }
121
148
  }
122
149
  for (const child of node.getChildren()) {
123
- collectExternalAttributeIds(child, definedAttributes, external);
150
+ collectExternalAttributeIds(child, definedAttributes, external, seen);
124
151
  }
125
152
  if (isRelationalNode(node)) {
126
153
  for (const relation of node.getRelations()) {
127
- collectExternalAttributeIds(relation, definedAttributes, external);
154
+ collectExternalAttributeIds(relation, definedAttributes, external, seen);
128
155
  }
129
156
  }
130
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"correlation-detector.js","sourceRoot":"","sources":["../../../../src/planner/cache/correlation-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"correlation-detector.js","sourceRoot":"","sources":["../../../../src/planner/cache/correlation-detector.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,12 @@ export interface Ordering {
16
16
  /**
17
17
  * Extract ordering from sort keys if they are trivial column references
18
18
  * Returns undefined if any sort key is not a simple column reference
19
+ *
20
+ * NOTE: all-or-nothing. `order by a, b * 2` yields nothing, though the leading
21
+ * `a` prefix alone would be a sound (weaker) claim that merge join and the
22
+ * ordering-prefix rules could still use. Cheap to relax — return the prefix
23
+ * collected before the first non-column key — if a plan ever needs an ordering
24
+ * above a computed secondary sort key.
19
25
  */
20
26
  export declare function extractOrderingFromSortKeys(sortKeys: readonly {
21
27
  expression: ScalarPlanNode;
@@ -1 +1 @@
1
- {"version":3,"file":"physical-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/framework/physical-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,QAAQ,EAAE,SAAS;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,EAAE,EAC9E,gBAAgB,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GACzC,QAAQ,EAAE,GAAG,SAAS,CA0BxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/B,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAC9B,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,GAC3B,QAAQ,EAAE,GAAG,SAAS,CA6BxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,GAC9B,OAAO,CAwBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EACzB,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,GACvB,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAEhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,QAAQ,EAAE,GAAG,SAAS,CAexB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EACnD,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,SAAS,eAAe,EAAE,GAAG,SAAS,CAIxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EAC5C,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,GAC3C,SAAS,eAAe,EAAE,GAAG,SAAS,CAcxC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,WAAW,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EACnD,KAAK,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,SAAS,CAYjD"}
1
+ {"version":3,"file":"physical-utils.d.ts","sourceRoot":"","sources":["../../../../src/planner/framework/physical-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAC1C,QAAQ,EAAE,SAAS;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,EAAE,EAC9E,gBAAgB,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GACzC,QAAQ,EAAE,GAAG,SAAS,CA0BxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/B,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAC9B,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,GAC3B,QAAQ,EAAE,GAAG,SAAS,CA6BxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,GAC9B,OAAO,CAwBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EACzB,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,GACvB,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAEhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAChC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,QAAQ,EAAE,GAAG,SAAS,CAexB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EACnD,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,SAAS,eAAe,EAAE,GAAG,SAAS,CAIxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EAC5C,KAAK,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,GAC3C,SAAS,eAAe,EAAE,GAAG,SAAS,CAcxC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC5C,WAAW,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EACnD,KAAK,EAAE,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,SAAS,CAYjD"}
@@ -6,6 +6,12 @@ import { PlanNodeType } from '../nodes/plan-node-type.js';
6
6
  /**
7
7
  * Extract ordering from sort keys if they are trivial column references
8
8
  * Returns undefined if any sort key is not a simple column reference
9
+ *
10
+ * NOTE: all-or-nothing. `order by a, b * 2` yields nothing, though the leading
11
+ * `a` prefix alone would be a sound (weaker) claim that merge join and the
12
+ * ordering-prefix rules could still use. Cheap to relax — return the prefix
13
+ * collected before the first non-column key — if a plan ever needs an ordering
14
+ * above a computed secondary sort key.
9
15
  */
10
16
  export function extractOrderingFromSortKeys(sortKeys, sourceAttributes) {
11
17
  const ordering = [];
@@ -1 +1 @@
1
- {"version":3,"file":"physical-utils.js","sourceRoot":"","sources":["../../../../src/planner/framework/physical-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"physical-utils.js","sourceRoot":"","sources":["../../../../src/planner/framework/physical-utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import type * as AST from '../../parser/ast.js';
1
2
  import type { LensSlot } from '../../schema/lens.js';
2
3
  import type { RowConstraintSchema } from '../../schema/table.js';
3
4
  import { RowOpFlag } from '../../schema/table.js';
4
5
  import type { SchemaManager } from '../../schema/manager.js';
6
+ import type { BasisRelationRef } from '../../vtab/mapping-advertisement.js';
5
7
  import type { PlanningContext } from '../planning-context.js';
6
8
  /**
7
9
  * Lens row-local constraint enforcement (the write side of the lens prover's
@@ -70,6 +72,127 @@ export declare const LENS_BOUNDARY_ATTACHED_TAG = "quereus.lens.boundary.attache
70
72
  * row-local checks — the common case, so a non-lens / check-free write pays nothing.
71
73
  */
72
74
  export declare function collectLensRowLocalConstraints(ctx: PlanningContext, slot: LensSlot): RowConstraintSchema[];
75
+ /** One row-local logical check in authored (logical-column) terms. */
76
+ export interface LensRowLocalLogicalCheck {
77
+ /** The routed-constraint name (`lens:<name>` / `lens:check` / `lens:notnull:<col>`) — error text stays stable. */
78
+ readonly name: string;
79
+ /** The check expression over logical columns (authored, or synthesized for NOT NULL; shared, never mutated). */
80
+ readonly expr: AST.Expression;
81
+ /**
82
+ * Verbatim violation text for a synthesized check (the NOT NULL obligation) —
83
+ * the user never wrote the expression, so the failure must read as its real
84
+ * class (`NOT NULL constraint failed: t.col`), not an anonymous CHECK.
85
+ * Undefined for an authored CHECK, which keeps the derived message.
86
+ */
87
+ readonly violationMessage?: string;
88
+ }
89
+ /**
90
+ * The slot's `enforced-row-local` CHECK obligations in their authored (logical)
91
+ * terms — the raw material for the logical-row seam, before any basis rewrite.
92
+ * Returns `[]` for an un-proved / check-free slot (the common case).
93
+ */
94
+ export declare function collectLensRowLocalLogicalChecks(slot: LensSlot): LensRowLocalLogicalCheck[];
95
+ /**
96
+ * The logical column (declared spelling) that maps to `basisColumn` on `relation`,
97
+ * or `undefined` when no logical column exposes it. Used by the decomposition
98
+ * write paths to find the logical spelling of the shared key (the anchor's key
99
+ * column), so the deferred logical-view re-read can address the written row:
100
+ * `_lr.<logicalKey> = NEW.<memberKey>`. A surrogate (hidden) shared key maps to
101
+ * no logical column ⇒ `undefined` ⇒ the caller must refuse loudly rather than
102
+ * skip enforcement.
103
+ */
104
+ export declare function findLogicalColumnForBasis(slot: LensSlot, schemaManager: SchemaManager | undefined, relation: BasisRelationRef, basisColumn: string): string | undefined;
105
+ /**
106
+ * How the deferred logical-row re-read addresses the written row in the logical
107
+ * view, given only the riding base op's own key column (`<CORR>.<memberKey>`):
108
+ *
109
+ * - `shared-key` — the decomposition's shared key IS a logical column (a
110
+ * logical-tuple key): correlate directly, `_lr.<logicalKeyColumn> = <CORR>.<memberKey>`.
111
+ * - `member-hop` — the shared key is hidden (a surrogate): hop through the
112
+ * MANDATORY member owning each logical PK column to reconstruct the PK,
113
+ * `_lr.<pk_i> = (select __lra.<pkBasis_i> from <member_i> as __lra where __lra.<memberKey_i> = <CORR>.<memberKey>)`
114
+ * per PK column. Every member's key column carries the same shared-key value
115
+ * (the decomposition equi-join), so each hop lands on the written row's
116
+ * member row whichever member op the constraint rides — including a
117
+ * per-column decomposition whose compound PK spreads across several member
118
+ * stores (none of them the anchor).
119
+ */
120
+ export type LensLogicalRowAddress = {
121
+ readonly kind: 'shared-key';
122
+ readonly logicalKeyColumn: string;
123
+ } | {
124
+ readonly kind: 'member-hop';
125
+ readonly pkColumns: ReadonlyArray<{
126
+ readonly logicalColumn: string;
127
+ readonly basisColumn: string;
128
+ readonly relation: BasisRelationRef;
129
+ readonly relationKeyColumn: string;
130
+ }>;
131
+ };
132
+ /**
133
+ * Resolves how a decomposition write can address the written logical row —
134
+ * preferring the direct shared-key correlation, falling back to the member-hop
135
+ * when the shared key is hidden but every logical PK column maps to a plain
136
+ * basis column on a single-key MANDATORY member (the anchor, or — under a
137
+ * per-column decomposition — the member store backing that PK column). Returns
138
+ * `undefined` when neither addressing works (a keyless logical table over a
139
+ * hidden surrogate, a PK column on an optional / composite-key member) — the
140
+ * caller must then refuse the write loudly rather than skip enforcement.
141
+ */
142
+ export declare function resolveLensLogicalRowAddress(slot: LensSlot, schemaManager: SchemaManager | undefined, anchorRelation: BasisRelationRef, anchorKeyColumn: string): LensLogicalRowAddress | undefined;
143
+ /**
144
+ * The stable name of the grouped deferred logical-row constraint. Bookkeeping
145
+ * only — the deferred queue keys its rows by it and the "constraint rode no base
146
+ * op" trace log prints it. It never reaches a user-visible failure message: the
147
+ * constraint is message-valued, so its evaluated VALUE (the failing rule's own
148
+ * verbatim text) is what the runtime reports.
149
+ */
150
+ export declare const LENS_ROW_LOCAL_DEFERRED_NAME = "lens:rowlocal";
151
+ /**
152
+ * Builds the ONE deferred logical-row constraint covering EVERY row-local rule
153
+ * of a decomposition write, for one `(relation, correlation)` of the fan-out:
154
+ *
155
+ * (select min(case when not (<rule 1 over _lr.*>) then '<rule 1 message>'
156
+ * …
157
+ * when not (<rule n over _lr.*>) then '<rule n message>'
158
+ * else null end)
159
+ * from <logicalSchema>.<logicalTable> as _lr
160
+ * where <row address over <CORR>.<relationKeyColumn>>)
161
+ *
162
+ * The subquery FROM is the registered **logical view**, so at commit (the
163
+ * contained subquery auto-defers the constraint) it re-reads the written row's
164
+ * POST-write logical image — independent of which member relations the row's
165
+ * write happened to touch — ONCE, and decides all the rules against the row it
166
+ * already has. The constraint is **message-valued**
167
+ * ({@link RowConstraintSchema.messageValued}): it evaluates to NULL when every
168
+ * rule holds (also when the address matches no row — `min` over an empty
169
+ * selection is NULL, preserving the old `not exists` pass on a row the
170
+ * statement did not touch) and to a violated rule's verbatim message
171
+ * otherwise, which the runtime reports as-is. One planned subquery per
172
+ * group however many rules the table declares — where the retired
173
+ * one-constraint-per-rule shape paid plan construction linearly in the rule
174
+ * count (the measured cost this collapse removes).
175
+ *
176
+ * Per-rule NULL semantics carry inside the CASE: a rule evaluating to NULL
177
+ * makes its `when not (<rule>)` branch NULL ⇒ the branch is not taken ⇒ that
178
+ * rule passes (SQL's NULL-passes-a-CHECK convention, exactly what the per-rule
179
+ * form gave), while a later definitely-false rule still selects its own branch
180
+ * and ABORTs.
181
+ *
182
+ * The row address ({@link LensLogicalRowAddress}) correlates from the base op
183
+ * the constraint rides: `NEW` for an insert/update-shaped op, `OLD` for a
184
+ * member DELETE (the all-null assignment lowering, where no NEW row exists).
185
+ * `operations` masks the constraint to the op shape it rides (INSERT|UPDATE
186
+ * with `NEW`, DELETE with `OLD`); `referencedWriteRowRelations` carries the
187
+ * single `(relation, key column)` pair so the per-op gate (`constraintsForOp`)
188
+ * threads it onto exactly the ops targeting that member.
189
+ *
190
+ * Because the re-read evaluates the WHOLE logical row image, a cross-member
191
+ * CHECK (one the per-member gate could never thread) is enforced here too — the
192
+ * decomposition write paths that use this seam therefore close the documented
193
+ * cross-member deferral as a side effect (docs/lens.md § Constraint Attachment).
194
+ */
195
+ export declare function synthesizeLensRowLocalDeferredConstraint(ctx: PlanningContext, slot: LensSlot, checks: readonly LensRowLocalLogicalCheck[], address: LensLogicalRowAddress, relation: BasisRelationRef, relationKeyColumn: string, correlation: 'NEW' | 'OLD', operations: RowOpFlag): RowConstraintSchema;
73
196
  /**
74
197
  * Builds the basis-term child-side FK existence constraints a lens write must
75
198
  * enforce (the write side of the prover's `enforced-fk` obligation). For each FK
@@ -1 +1 @@
1
- {"version":3,"file":"lens-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAuE,MAAM,uBAAuB,CAAC;AACtI,OAAO,EAAE,SAAS,EAA+B,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAY7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAuR3E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CA+B1G;AA4JD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,GAAG,mBAAmB,EAAE,CAmDpH;AAgED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,0CAA0C,CACzD,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAC5C,mBAAmB,EAAE,CAiEvB;AAyED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,mBAAmB,EAAE,CAqDnH;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEvE"}
1
+ {"version":3,"file":"lens-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"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"}