@quereus/quereus 3.3.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (900) hide show
  1. package/README.md +7 -0
  2. package/dist/src/common/datatype.d.ts +12 -0
  3. package/dist/src/common/datatype.d.ts.map +1 -1
  4. package/dist/src/common/datatype.js.map +1 -1
  5. package/dist/src/common/types.d.ts +24 -0
  6. package/dist/src/common/types.d.ts.map +1 -1
  7. package/dist/src/common/types.js.map +1 -1
  8. package/dist/src/core/database-assertions.d.ts +37 -9
  9. package/dist/src/core/database-assertions.d.ts.map +1 -1
  10. package/dist/src/core/database-assertions.js +62 -110
  11. package/dist/src/core/database-assertions.js.map +1 -1
  12. package/dist/src/core/database-events.d.ts +163 -0
  13. package/dist/src/core/database-events.d.ts.map +1 -1
  14. package/dist/src/core/database-events.js +235 -21
  15. package/dist/src/core/database-events.js.map +1 -1
  16. package/dist/src/core/database-external-changes.d.ts +28 -0
  17. package/dist/src/core/database-external-changes.d.ts.map +1 -0
  18. package/dist/src/core/database-external-changes.js +242 -0
  19. package/dist/src/core/database-external-changes.js.map +1 -0
  20. package/dist/src/core/database-internal.d.ts +50 -1
  21. package/dist/src/core/database-internal.d.ts.map +1 -1
  22. package/dist/src/core/database-materialized-views.d.ts +1253 -0
  23. package/dist/src/core/database-materialized-views.d.ts.map +1 -0
  24. package/dist/src/core/database-materialized-views.js +3064 -0
  25. package/dist/src/core/database-materialized-views.js.map +1 -0
  26. package/dist/src/core/database-options.d.ts +4 -0
  27. package/dist/src/core/database-options.d.ts.map +1 -1
  28. package/dist/src/core/database-options.js +10 -0
  29. package/dist/src/core/database-options.js.map +1 -1
  30. package/dist/src/core/database-transaction.d.ts +19 -3
  31. package/dist/src/core/database-transaction.d.ts.map +1 -1
  32. package/dist/src/core/database-transaction.js +30 -3
  33. package/dist/src/core/database-transaction.js.map +1 -1
  34. package/dist/src/core/database-watchers.d.ts +19 -0
  35. package/dist/src/core/database-watchers.d.ts.map +1 -1
  36. package/dist/src/core/database-watchers.js +63 -3
  37. package/dist/src/core/database-watchers.js.map +1 -1
  38. package/dist/src/core/database.d.ts +203 -11
  39. package/dist/src/core/database.d.ts.map +1 -1
  40. package/dist/src/core/database.js +493 -29
  41. package/dist/src/core/database.js.map +1 -1
  42. package/dist/src/core/derived-row-validator.d.ts +137 -0
  43. package/dist/src/core/derived-row-validator.d.ts.map +1 -0
  44. package/dist/src/core/derived-row-validator.js +314 -0
  45. package/dist/src/core/derived-row-validator.js.map +1 -0
  46. package/dist/src/core/statement.d.ts.map +1 -1
  47. package/dist/src/core/statement.js +30 -9
  48. package/dist/src/core/statement.js.map +1 -1
  49. package/dist/src/emit/ast-stringify.d.ts +135 -1
  50. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  51. package/dist/src/emit/ast-stringify.js +793 -118
  52. package/dist/src/emit/ast-stringify.js.map +1 -1
  53. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  54. package/dist/src/func/builtins/aggregate.js +11 -10
  55. package/dist/src/func/builtins/aggregate.js.map +1 -1
  56. package/dist/src/func/builtins/builtin-window-functions.d.ts.map +1 -1
  57. package/dist/src/func/builtins/builtin-window-functions.js +32 -0
  58. package/dist/src/func/builtins/builtin-window-functions.js.map +1 -1
  59. package/dist/src/func/builtins/explain.d.ts +3 -0
  60. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  61. package/dist/src/func/builtins/explain.js +229 -0
  62. package/dist/src/func/builtins/explain.js.map +1 -1
  63. package/dist/src/func/builtins/index.d.ts.map +1 -1
  64. package/dist/src/func/builtins/index.js +10 -2
  65. package/dist/src/func/builtins/index.js.map +1 -1
  66. package/dist/src/func/builtins/json.d.ts.map +1 -1
  67. package/dist/src/func/builtins/json.js +3 -2
  68. package/dist/src/func/builtins/json.js.map +1 -1
  69. package/dist/src/func/builtins/mutation.d.ts +2 -0
  70. package/dist/src/func/builtins/mutation.d.ts.map +1 -0
  71. package/dist/src/func/builtins/mutation.js +53 -0
  72. package/dist/src/func/builtins/mutation.js.map +1 -0
  73. package/dist/src/func/builtins/schema.d.ts +2 -0
  74. package/dist/src/func/builtins/schema.d.ts.map +1 -1
  75. package/dist/src/func/builtins/schema.js +713 -26
  76. package/dist/src/func/builtins/schema.js.map +1 -1
  77. package/dist/src/func/builtins/string.js +1 -1
  78. package/dist/src/func/builtins/string.js.map +1 -1
  79. package/dist/src/func/registration.d.ts +9 -0
  80. package/dist/src/func/registration.d.ts.map +1 -1
  81. package/dist/src/func/registration.js +4 -0
  82. package/dist/src/func/registration.js.map +1 -1
  83. package/dist/src/index.d.ts +25 -6
  84. package/dist/src/index.d.ts.map +1 -1
  85. package/dist/src/index.js +27 -3
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/parser/ast.d.ts +353 -21
  88. package/dist/src/parser/ast.d.ts.map +1 -1
  89. package/dist/src/parser/index.d.ts +14 -1
  90. package/dist/src/parser/index.d.ts.map +1 -1
  91. package/dist/src/parser/index.js +19 -0
  92. package/dist/src/parser/index.js.map +1 -1
  93. package/dist/src/parser/lexer.d.ts +9 -0
  94. package/dist/src/parser/lexer.d.ts.map +1 -1
  95. package/dist/src/parser/lexer.js +9 -0
  96. package/dist/src/parser/lexer.js.map +1 -1
  97. package/dist/src/parser/parser.d.ts +276 -7
  98. package/dist/src/parser/parser.d.ts.map +1 -1
  99. package/dist/src/parser/parser.js +1387 -469
  100. package/dist/src/parser/parser.js.map +1 -1
  101. package/dist/src/parser/visitor.d.ts.map +1 -1
  102. package/dist/src/parser/visitor.js +12 -8
  103. package/dist/src/parser/visitor.js.map +1 -1
  104. package/dist/src/planner/analysis/assertion-classifier.d.ts.map +1 -1
  105. package/dist/src/planner/analysis/assertion-classifier.js +4 -0
  106. package/dist/src/planner/analysis/assertion-classifier.js.map +1 -1
  107. package/dist/src/planner/analysis/assertion-hoist-cache.d.ts.map +1 -1
  108. package/dist/src/planner/analysis/assertion-hoist-cache.js +8 -4
  109. package/dist/src/planner/analysis/assertion-hoist-cache.js.map +1 -1
  110. package/dist/src/planner/analysis/authored-inverse.d.ts +22 -0
  111. package/dist/src/planner/analysis/authored-inverse.d.ts.map +1 -0
  112. package/dist/src/planner/analysis/authored-inverse.js +267 -0
  113. package/dist/src/planner/analysis/authored-inverse.js.map +1 -0
  114. package/dist/src/planner/analysis/change-scope.d.ts +34 -4
  115. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  116. package/dist/src/planner/analysis/change-scope.js +108 -7
  117. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  118. package/dist/src/planner/analysis/check-extraction.d.ts +36 -2
  119. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  120. package/dist/src/planner/analysis/check-extraction.js +174 -46
  121. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  122. package/dist/src/planner/analysis/coarsened-key.d.ts +109 -0
  123. package/dist/src/planner/analysis/coarsened-key.d.ts.map +1 -0
  124. package/dist/src/planner/analysis/coarsened-key.js +228 -0
  125. package/dist/src/planner/analysis/coarsened-key.js.map +1 -0
  126. package/dist/src/planner/analysis/comparison-collation.d.ts +216 -0
  127. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -0
  128. package/dist/src/planner/analysis/comparison-collation.js +341 -0
  129. package/dist/src/planner/analysis/comparison-collation.js.map +1 -0
  130. package/dist/src/planner/analysis/constraint-extractor.d.ts +3 -1
  131. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  132. package/dist/src/planner/analysis/constraint-extractor.js +192 -9
  133. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  134. package/dist/src/planner/analysis/coverage-prover.d.ts +321 -0
  135. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -0
  136. package/dist/src/planner/analysis/coverage-prover.js +1038 -0
  137. package/dist/src/planner/analysis/coverage-prover.js.map +1 -0
  138. package/dist/src/planner/analysis/key-filter.d.ts +22 -0
  139. package/dist/src/planner/analysis/key-filter.d.ts.map +1 -0
  140. package/dist/src/planner/analysis/key-filter.js +105 -0
  141. package/dist/src/planner/analysis/key-filter.js.map +1 -0
  142. package/dist/src/planner/analysis/partial-unique-extraction.d.ts +36 -1
  143. package/dist/src/planner/analysis/partial-unique-extraction.d.ts.map +1 -1
  144. package/dist/src/planner/analysis/partial-unique-extraction.js +148 -22
  145. package/dist/src/planner/analysis/partial-unique-extraction.js.map +1 -1
  146. package/dist/src/planner/analysis/predicate-normalizer.d.ts.map +1 -1
  147. package/dist/src/planner/analysis/predicate-normalizer.js +30 -1
  148. package/dist/src/planner/analysis/predicate-normalizer.js.map +1 -1
  149. package/dist/src/planner/analysis/predicate-shape.d.ts +36 -1
  150. package/dist/src/planner/analysis/predicate-shape.d.ts.map +1 -1
  151. package/dist/src/planner/analysis/predicate-shape.js +51 -13
  152. package/dist/src/planner/analysis/predicate-shape.js.map +1 -1
  153. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +314 -0
  154. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -0
  155. package/dist/src/planner/analysis/query-rewrite-matcher.js +1081 -0
  156. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -0
  157. package/dist/src/planner/analysis/scalar-invertibility.d.ts +92 -0
  158. package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -0
  159. package/dist/src/planner/analysis/scalar-invertibility.js +129 -0
  160. package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -0
  161. package/dist/src/planner/analysis/update-lineage.d.ts +196 -0
  162. package/dist/src/planner/analysis/update-lineage.d.ts.map +1 -0
  163. package/dist/src/planner/analysis/update-lineage.js +322 -0
  164. package/dist/src/planner/analysis/update-lineage.js.map +1 -0
  165. package/dist/src/planner/analysis/view-complement.d.ts +42 -0
  166. package/dist/src/planner/analysis/view-complement.d.ts.map +1 -0
  167. package/dist/src/planner/analysis/view-complement.js +54 -0
  168. package/dist/src/planner/analysis/view-complement.js.map +1 -0
  169. package/dist/src/planner/building/alter-table.d.ts +1 -1
  170. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  171. package/dist/src/planner/building/alter-table.js +211 -2
  172. package/dist/src/planner/building/alter-table.js.map +1 -1
  173. package/dist/src/planner/building/block.d.ts.map +1 -1
  174. package/dist/src/planner/building/block.js +18 -1
  175. package/dist/src/planner/building/block.js.map +1 -1
  176. package/dist/src/planner/building/constraint-builder.d.ts +33 -5
  177. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  178. package/dist/src/planner/building/constraint-builder.js +63 -28
  179. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  180. package/dist/src/planner/building/create-view.d.ts +9 -0
  181. package/dist/src/planner/building/create-view.d.ts.map +1 -1
  182. package/dist/src/planner/building/create-view.js +41 -12
  183. package/dist/src/planner/building/create-view.js.map +1 -1
  184. package/dist/src/planner/building/ddl.d.ts.map +1 -1
  185. package/dist/src/planner/building/ddl.js +94 -0
  186. package/dist/src/planner/building/ddl.js.map +1 -1
  187. package/dist/src/planner/building/declare-schema.d.ts +1 -0
  188. package/dist/src/planner/building/declare-schema.d.ts.map +1 -1
  189. package/dist/src/planner/building/declare-schema.js +4 -1
  190. package/dist/src/planner/building/declare-schema.js.map +1 -1
  191. package/dist/src/planner/building/default-scope.d.ts +26 -0
  192. package/dist/src/planner/building/default-scope.d.ts.map +1 -0
  193. package/dist/src/planner/building/default-scope.js +41 -0
  194. package/dist/src/planner/building/default-scope.js.map +1 -0
  195. package/dist/src/planner/building/delete.d.ts +19 -1
  196. package/dist/src/planner/building/delete.d.ts.map +1 -1
  197. package/dist/src/planner/building/delete.js +109 -30
  198. package/dist/src/planner/building/delete.js.map +1 -1
  199. package/dist/src/planner/building/dml-target.d.ts +118 -0
  200. package/dist/src/planner/building/dml-target.d.ts.map +1 -0
  201. package/dist/src/planner/building/dml-target.js +282 -0
  202. package/dist/src/planner/building/dml-target.js.map +1 -0
  203. package/dist/src/planner/building/drop-index.d.ts.map +1 -1
  204. package/dist/src/planner/building/drop-index.js +4 -1
  205. package/dist/src/planner/building/drop-index.js.map +1 -1
  206. package/dist/src/planner/building/drop-view.d.ts.map +1 -1
  207. package/dist/src/planner/building/drop-view.js +4 -2
  208. package/dist/src/planner/building/drop-view.js.map +1 -1
  209. package/dist/src/planner/building/expression.d.ts.map +1 -1
  210. package/dist/src/planner/building/expression.js +60 -21
  211. package/dist/src/planner/building/expression.js.map +1 -1
  212. package/dist/src/planner/building/foreign-key-builder.d.ts +30 -0
  213. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  214. package/dist/src/planner/building/foreign-key-builder.js +160 -129
  215. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  216. package/dist/src/planner/building/insert.d.ts +45 -2
  217. package/dist/src/planner/building/insert.d.ts.map +1 -1
  218. package/dist/src/planner/building/insert.js +257 -88
  219. package/dist/src/planner/building/insert.js.map +1 -1
  220. package/dist/src/planner/building/lens-auxiliary-access.d.ts +22 -0
  221. package/dist/src/planner/building/lens-auxiliary-access.d.ts.map +1 -0
  222. package/dist/src/planner/building/lens-auxiliary-access.js +132 -0
  223. package/dist/src/planner/building/lens-auxiliary-access.js.map +1 -0
  224. package/dist/src/planner/building/materialized-view.d.ts +16 -0
  225. package/dist/src/planner/building/materialized-view.d.ts.map +1 -0
  226. package/dist/src/planner/building/materialized-view.js +57 -0
  227. package/dist/src/planner/building/materialized-view.js.map +1 -0
  228. package/dist/src/planner/building/returning-star.d.ts +32 -0
  229. package/dist/src/planner/building/returning-star.d.ts.map +1 -0
  230. package/dist/src/planner/building/returning-star.js +45 -0
  231. package/dist/src/planner/building/returning-star.js.map +1 -0
  232. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  233. package/dist/src/planner/building/select-aggregates.js +47 -0
  234. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  235. package/dist/src/planner/building/select-compound.d.ts.map +1 -1
  236. package/dist/src/planner/building/select-compound.js +84 -11
  237. package/dist/src/planner/building/select-compound.js.map +1 -1
  238. package/dist/src/planner/building/select-context.d.ts +10 -2
  239. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  240. package/dist/src/planner/building/select-context.js +7 -1
  241. package/dist/src/planner/building/select-context.js.map +1 -1
  242. package/dist/src/planner/building/select-modifiers.js +6 -0
  243. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  244. package/dist/src/planner/building/select-ordinal.d.ts +18 -0
  245. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  246. package/dist/src/planner/building/select-ordinal.js +30 -0
  247. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  248. package/dist/src/planner/building/select-projections.d.ts +8 -2
  249. package/dist/src/planner/building/select-projections.d.ts.map +1 -1
  250. package/dist/src/planner/building/select-projections.js +26 -4
  251. package/dist/src/planner/building/select-projections.js.map +1 -1
  252. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  253. package/dist/src/planner/building/select-window.js +8 -5
  254. package/dist/src/planner/building/select-window.js.map +1 -1
  255. package/dist/src/planner/building/select.d.ts.map +1 -1
  256. package/dist/src/planner/building/select.js +164 -59
  257. package/dist/src/planner/building/select.js.map +1 -1
  258. package/dist/src/planner/building/set-object-tags.d.ts +7 -0
  259. package/dist/src/planner/building/set-object-tags.d.ts.map +1 -0
  260. package/dist/src/planner/building/set-object-tags.js +38 -0
  261. package/dist/src/planner/building/set-object-tags.js.map +1 -0
  262. package/dist/src/planner/building/tag-diagnostics.d.ts +27 -0
  263. package/dist/src/planner/building/tag-diagnostics.d.ts.map +1 -0
  264. package/dist/src/planner/building/tag-diagnostics.js +37 -0
  265. package/dist/src/planner/building/tag-diagnostics.js.map +1 -0
  266. package/dist/src/planner/building/update.d.ts +18 -1
  267. package/dist/src/planner/building/update.d.ts.map +1 -1
  268. package/dist/src/planner/building/update.js +134 -58
  269. package/dist/src/planner/building/update.js.map +1 -1
  270. package/dist/src/planner/building/view-mutation-builder.d.ts +15 -0
  271. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -0
  272. package/dist/src/planner/building/view-mutation-builder.js +1158 -0
  273. package/dist/src/planner/building/view-mutation-builder.js.map +1 -0
  274. package/dist/src/planner/building/with.d.ts +11 -0
  275. package/dist/src/planner/building/with.d.ts.map +1 -1
  276. package/dist/src/planner/building/with.js +48 -10
  277. package/dist/src/planner/building/with.js.map +1 -1
  278. package/dist/src/planner/cost/index.d.ts +83 -0
  279. package/dist/src/planner/cost/index.d.ts.map +1 -1
  280. package/dist/src/planner/cost/index.js +114 -0
  281. package/dist/src/planner/cost/index.js.map +1 -1
  282. package/dist/src/planner/framework/characteristics.d.ts +38 -4
  283. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  284. package/dist/src/planner/framework/characteristics.js +50 -6
  285. package/dist/src/planner/framework/characteristics.js.map +1 -1
  286. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  287. package/dist/src/planner/framework/pass.js +2 -1
  288. package/dist/src/planner/framework/pass.js.map +1 -1
  289. package/dist/src/planner/framework/registry.d.ts +39 -1
  290. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  291. package/dist/src/planner/framework/registry.js +18 -2
  292. package/dist/src/planner/framework/registry.js.map +1 -1
  293. package/dist/src/planner/mutation/backward-body.d.ts +131 -0
  294. package/dist/src/planner/mutation/backward-body.d.ts.map +1 -0
  295. package/dist/src/planner/mutation/backward-body.js +135 -0
  296. package/dist/src/planner/mutation/backward-body.js.map +1 -0
  297. package/dist/src/planner/mutation/cte-flatten.d.ts +17 -0
  298. package/dist/src/planner/mutation/cte-flatten.d.ts.map +1 -0
  299. package/dist/src/planner/mutation/cte-flatten.js +364 -0
  300. package/dist/src/planner/mutation/cte-flatten.js.map +1 -0
  301. package/dist/src/planner/mutation/decomposition.d.ts +273 -0
  302. package/dist/src/planner/mutation/decomposition.d.ts.map +1 -0
  303. package/dist/src/planner/mutation/decomposition.js +1719 -0
  304. package/dist/src/planner/mutation/decomposition.js.map +1 -0
  305. package/dist/src/planner/mutation/lens-enforcement.d.ts +165 -0
  306. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -0
  307. package/dist/src/planner/mutation/lens-enforcement.js +745 -0
  308. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -0
  309. package/dist/src/planner/mutation/multi-source.d.ts +568 -0
  310. package/dist/src/planner/mutation/multi-source.d.ts.map +1 -0
  311. package/dist/src/planner/mutation/multi-source.js +2915 -0
  312. package/dist/src/planner/mutation/multi-source.js.map +1 -0
  313. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +37 -0
  314. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -0
  315. package/dist/src/planner/mutation/mutation-diagnostic.js +24 -0
  316. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -0
  317. package/dist/src/planner/mutation/mutation-tags.d.ts +33 -0
  318. package/dist/src/planner/mutation/mutation-tags.d.ts.map +1 -0
  319. package/dist/src/planner/mutation/mutation-tags.js +31 -0
  320. package/dist/src/planner/mutation/mutation-tags.js.map +1 -0
  321. package/dist/src/planner/mutation/propagate.d.ts +97 -0
  322. package/dist/src/planner/mutation/propagate.d.ts.map +1 -0
  323. package/dist/src/planner/mutation/propagate.js +220 -0
  324. package/dist/src/planner/mutation/propagate.js.map +1 -0
  325. package/dist/src/planner/mutation/scope-transform.d.ts +181 -0
  326. package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -0
  327. package/dist/src/planner/mutation/scope-transform.js +574 -0
  328. package/dist/src/planner/mutation/scope-transform.js.map +1 -0
  329. package/dist/src/planner/mutation/set-op.d.ts +242 -0
  330. package/dist/src/planner/mutation/set-op.d.ts.map +1 -0
  331. package/dist/src/planner/mutation/set-op.js +1687 -0
  332. package/dist/src/planner/mutation/set-op.js.map +1 -0
  333. package/dist/src/planner/mutation/single-source.d.ts +261 -0
  334. package/dist/src/planner/mutation/single-source.d.ts.map +1 -0
  335. package/dist/src/planner/mutation/single-source.js +1096 -0
  336. package/dist/src/planner/mutation/single-source.js.map +1 -0
  337. package/dist/src/planner/nodes/aggregate-node.js +3 -3
  338. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  339. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  340. package/dist/src/planner/nodes/alias-node.js +5 -1
  341. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  342. package/dist/src/planner/nodes/alter-table-node.d.ts +124 -1
  343. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  344. package/dist/src/planner/nodes/alter-table-node.js +27 -0
  345. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  346. package/dist/src/planner/nodes/analyze-node.d.ts +2 -1
  347. package/dist/src/planner/nodes/analyze-node.d.ts.map +1 -1
  348. package/dist/src/planner/nodes/analyze-node.js +18 -1
  349. package/dist/src/planner/nodes/analyze-node.js.map +1 -1
  350. package/dist/src/planner/nodes/asserted-keys-node.d.ts +43 -0
  351. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -0
  352. package/dist/src/planner/nodes/asserted-keys-node.js +99 -0
  353. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -0
  354. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  355. package/dist/src/planner/nodes/async-gather-node.js +33 -8
  356. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  357. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  358. package/dist/src/planner/nodes/bloom-join-node.js +2 -1
  359. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  360. package/dist/src/planner/nodes/create-view-node.d.ts +7 -2
  361. package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -1
  362. package/dist/src/planner/nodes/create-view-node.js +4 -1
  363. package/dist/src/planner/nodes/create-view-node.js.map +1 -1
  364. package/dist/src/planner/nodes/declarative-schema.d.ts +13 -1
  365. package/dist/src/planner/nodes/declarative-schema.d.ts.map +1 -1
  366. package/dist/src/planner/nodes/declarative-schema.js +32 -0
  367. package/dist/src/planner/nodes/declarative-schema.js.map +1 -1
  368. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  369. package/dist/src/planner/nodes/distinct-node.js +2 -0
  370. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  371. package/dist/src/planner/nodes/dml-executor-node.d.ts +29 -1
  372. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  373. package/dist/src/planner/nodes/dml-executor-node.js +27 -3
  374. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  375. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  376. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -0
  377. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  378. package/dist/src/planner/nodes/envelope-scan-node.d.ts +42 -0
  379. package/dist/src/planner/nodes/envelope-scan-node.d.ts.map +1 -0
  380. package/dist/src/planner/nodes/envelope-scan-node.js +62 -0
  381. package/dist/src/planner/nodes/envelope-scan-node.js.map +1 -0
  382. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  383. package/dist/src/planner/nodes/fanout-lookup-join-node.js +11 -1
  384. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  385. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  386. package/dist/src/planner/nodes/filter.js +63 -13
  387. package/dist/src/planner/nodes/filter.js.map +1 -1
  388. package/dist/src/planner/nodes/join-node.d.ts +41 -1
  389. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  390. package/dist/src/planner/nodes/join-node.js +78 -8
  391. package/dist/src/planner/nodes/join-node.js.map +1 -1
  392. package/dist/src/planner/nodes/join-utils.d.ts +33 -6
  393. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  394. package/dist/src/planner/nodes/join-utils.js +124 -9
  395. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  396. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +104 -0
  397. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -0
  398. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +91 -0
  399. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -0
  400. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  401. package/dist/src/planner/nodes/limit-offset.js +4 -5
  402. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  403. package/dist/src/planner/nodes/materialized-view-nodes.d.ts +69 -0
  404. package/dist/src/planner/nodes/materialized-view-nodes.d.ts.map +1 -0
  405. package/dist/src/planner/nodes/materialized-view-nodes.js +111 -0
  406. package/dist/src/planner/nodes/materialized-view-nodes.js.map +1 -0
  407. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  408. package/dist/src/planner/nodes/merge-join-node.js +2 -1
  409. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  410. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  411. package/dist/src/planner/nodes/ordinal-slice-node.js +2 -0
  412. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  413. package/dist/src/planner/nodes/plan-node-type.d.ts +9 -0
  414. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  415. package/dist/src/planner/nodes/plan-node-type.js +9 -0
  416. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  417. package/dist/src/planner/nodes/plan-node.d.ts +265 -5
  418. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  419. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  420. package/dist/src/planner/nodes/pragma.d.ts +2 -1
  421. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  422. package/dist/src/planner/nodes/pragma.js +12 -0
  423. package/dist/src/planner/nodes/pragma.js.map +1 -1
  424. package/dist/src/planner/nodes/project-node.d.ts +14 -1
  425. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  426. package/dist/src/planner/nodes/project-node.js +85 -11
  427. package/dist/src/planner/nodes/project-node.js.map +1 -1
  428. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  429. package/dist/src/planner/nodes/reference.js +62 -27
  430. package/dist/src/planner/nodes/reference.js.map +1 -1
  431. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  432. package/dist/src/planner/nodes/retrieve-node.js +7 -0
  433. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  434. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  435. package/dist/src/planner/nodes/returning-node.js +10 -3
  436. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  437. package/dist/src/planner/nodes/scalar.d.ts +20 -0
  438. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  439. package/dist/src/planner/nodes/scalar.js +71 -14
  440. package/dist/src/planner/nodes/scalar.js.map +1 -1
  441. package/dist/src/planner/nodes/set-object-tags-node.d.ts +39 -0
  442. package/dist/src/planner/nodes/set-object-tags-node.d.ts.map +1 -0
  443. package/dist/src/planner/nodes/set-object-tags-node.js +41 -0
  444. package/dist/src/planner/nodes/set-object-tags-node.js.map +1 -0
  445. package/dist/src/planner/nodes/set-operation-node.d.ts +123 -1
  446. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  447. package/dist/src/planner/nodes/set-operation-node.js +291 -18
  448. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  449. package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
  450. package/dist/src/planner/nodes/single-row.js +3 -0
  451. package/dist/src/planner/nodes/single-row.js.map +1 -1
  452. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  453. package/dist/src/planner/nodes/sort.js +7 -6
  454. package/dist/src/planner/nodes/sort.js.map +1 -1
  455. package/dist/src/planner/nodes/subquery.d.ts +2 -0
  456. package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
  457. package/dist/src/planner/nodes/subquery.js +18 -2
  458. package/dist/src/planner/nodes/subquery.js.map +1 -1
  459. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  460. package/dist/src/planner/nodes/table-access-nodes.js +23 -3
  461. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  462. package/dist/src/planner/nodes/table-function-call.js +6 -0
  463. package/dist/src/planner/nodes/table-function-call.js.map +1 -1
  464. package/dist/src/planner/nodes/values-node.d.ts +1 -0
  465. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  466. package/dist/src/planner/nodes/values-node.js +16 -6
  467. package/dist/src/planner/nodes/values-node.js.map +1 -1
  468. package/dist/src/planner/nodes/view-mutation-node.d.ts +259 -0
  469. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -0
  470. package/dist/src/planner/nodes/view-mutation-node.js +273 -0
  471. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -0
  472. package/dist/src/planner/nodes/window-function.d.ts +17 -1
  473. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  474. package/dist/src/planner/nodes/window-function.js +15 -1
  475. package/dist/src/planner/nodes/window-function.js.map +1 -1
  476. package/dist/src/planner/nodes/window-node.js +2 -2
  477. package/dist/src/planner/nodes/window-node.js.map +1 -1
  478. package/dist/src/planner/optimizer.d.ts.map +1 -1
  479. package/dist/src/planner/optimizer.js +372 -39
  480. package/dist/src/planner/optimizer.js.map +1 -1
  481. package/dist/src/planner/planning-context.d.ts +1 -1
  482. package/dist/src/planner/planning-context.d.ts.map +1 -1
  483. package/dist/src/planner/rules/access/lens-access-form-matcher.d.ts +70 -0
  484. package/dist/src/planner/rules/access/lens-access-form-matcher.d.ts.map +1 -0
  485. package/dist/src/planner/rules/access/lens-access-form-matcher.js +156 -0
  486. package/dist/src/planner/rules/access/lens-access-form-matcher.js.map +1 -0
  487. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.d.ts +31 -0
  488. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.d.ts.map +1 -0
  489. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.js +176 -0
  490. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.js.map +1 -0
  491. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  492. package/dist/src/planner/rules/access/rule-select-access-path.js +435 -37
  493. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  494. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -1
  495. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +9 -0
  496. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
  497. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +39 -0
  498. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -0
  499. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +616 -0
  500. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -0
  501. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts.map +1 -1
  502. package/dist/src/planner/rules/cache/rule-scalar-cse.js +8 -1
  503. package/dist/src/planner/rules/cache/rule-scalar-cse.js.map +1 -1
  504. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +36 -0
  505. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  506. package/dist/src/planner/rules/join/equi-pair-extractor.js +38 -1
  507. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  508. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts.map +1 -1
  509. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +10 -0
  510. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js.map +1 -1
  511. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -1
  512. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +19 -1
  513. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  514. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +130 -0
  515. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts.map +1 -0
  516. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +206 -0
  517. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js.map +1 -0
  518. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +67 -14
  519. package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
  520. package/dist/src/planner/rules/join/rule-join-elimination.js +81 -25
  521. package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
  522. package/dist/src/planner/rules/join/rule-join-existence-pruning.d.ts +84 -0
  523. package/dist/src/planner/rules/join/rule-join-existence-pruning.d.ts.map +1 -0
  524. package/dist/src/planner/rules/join/rule-join-existence-pruning.js +138 -0
  525. package/dist/src/planner/rules/join/rule-join-existence-pruning.js.map +1 -0
  526. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
  527. package/dist/src/planner/rules/join/rule-join-greedy-commute.js +9 -1
  528. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
  529. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  530. package/dist/src/planner/rules/join/rule-join-physical-selection.js +12 -1
  531. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  532. package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts.map +1 -1
  533. package/dist/src/planner/rules/join/rule-lateral-top1-asof.js +4 -0
  534. package/dist/src/planner/rules/join/rule-lateral-top1-asof.js.map +1 -1
  535. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  536. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +4 -0
  537. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  538. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  539. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +10 -0
  540. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  541. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.d.ts +286 -0
  542. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.d.ts.map +1 -0
  543. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.js +548 -0
  544. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.js.map +1 -0
  545. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts.map +1 -1
  546. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js +9 -1
  547. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js.map +1 -1
  548. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts.map +1 -1
  549. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +7 -0
  550. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  551. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts.map +1 -1
  552. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js +10 -1
  553. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js.map +1 -1
  554. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -1
  555. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +9 -0
  556. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
  557. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts.map +1 -1
  558. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +18 -0
  559. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js.map +1 -1
  560. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
  561. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +7 -0
  562. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
  563. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  564. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +9 -0
  565. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  566. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +13 -3
  567. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  568. package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts.map +1 -1
  569. package/dist/src/planner/rules/retrieve/rule-projection-pruning.js +14 -0
  570. package/dist/src/planner/rules/retrieve/rule-projection-pruning.js.map +1 -1
  571. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +1 -1
  572. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +4 -4
  573. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js.map +1 -1
  574. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  575. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +8 -0
  576. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  577. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  578. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +7 -0
  579. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  580. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  581. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +12 -0
  582. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  583. package/dist/src/planner/type-utils.d.ts +14 -0
  584. package/dist/src/planner/type-utils.d.ts.map +1 -1
  585. package/dist/src/planner/type-utils.js +66 -21
  586. package/dist/src/planner/type-utils.js.map +1 -1
  587. package/dist/src/planner/util/fd-utils.d.ts +177 -43
  588. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  589. package/dist/src/planner/util/fd-utils.js +396 -101
  590. package/dist/src/planner/util/fd-utils.js.map +1 -1
  591. package/dist/src/planner/util/ind-utils.d.ts +27 -1
  592. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  593. package/dist/src/planner/util/ind-utils.js +80 -6
  594. package/dist/src/planner/util/ind-utils.js.map +1 -1
  595. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  596. package/dist/src/planner/util/key-utils.js +81 -12
  597. package/dist/src/planner/util/key-utils.js.map +1 -1
  598. package/dist/src/planner/util/set-op-wrapper.d.ts +37 -0
  599. package/dist/src/planner/util/set-op-wrapper.d.ts.map +1 -0
  600. package/dist/src/planner/util/set-op-wrapper.js +82 -0
  601. package/dist/src/planner/util/set-op-wrapper.js.map +1 -0
  602. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  603. package/dist/src/planner/validation/plan-validator.js +1 -0
  604. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  605. package/dist/src/runtime/context-helpers.d.ts +13 -1
  606. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  607. package/dist/src/runtime/context-helpers.js +7 -1
  608. package/dist/src/runtime/context-helpers.js.map +1 -1
  609. package/dist/src/runtime/delta-executor.d.ts +30 -1
  610. package/dist/src/runtime/delta-executor.d.ts.map +1 -1
  611. package/dist/src/runtime/delta-executor.js +29 -4
  612. package/dist/src/runtime/delta-executor.js.map +1 -1
  613. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  614. package/dist/src/runtime/emit/add-constraint.js +38 -5
  615. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  616. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  617. package/dist/src/runtime/emit/aggregate.js +10 -8
  618. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  619. package/dist/src/runtime/emit/alter-table.d.ts +1 -1
  620. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  621. package/dist/src/runtime/emit/alter-table.js +664 -108
  622. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  623. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  624. package/dist/src/runtime/emit/analyze.js +2 -1
  625. package/dist/src/runtime/emit/analyze.js.map +1 -1
  626. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  627. package/dist/src/runtime/emit/asof-scan.js +18 -5
  628. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  629. package/dist/src/runtime/emit/asserted-keys.d.ts +13 -0
  630. package/dist/src/runtime/emit/asserted-keys.d.ts.map +1 -0
  631. package/dist/src/runtime/emit/asserted-keys.js +13 -0
  632. package/dist/src/runtime/emit/asserted-keys.js.map +1 -0
  633. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  634. package/dist/src/runtime/emit/between.js +24 -19
  635. package/dist/src/runtime/emit/between.js.map +1 -1
  636. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  637. package/dist/src/runtime/emit/binary.js +5 -9
  638. package/dist/src/runtime/emit/binary.js.map +1 -1
  639. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  640. package/dist/src/runtime/emit/block.js +11 -2
  641. package/dist/src/runtime/emit/block.js.map +1 -1
  642. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  643. package/dist/src/runtime/emit/bloom-join.js +8 -2
  644. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  645. package/dist/src/runtime/emit/constraint-check.js +15 -0
  646. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  647. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  648. package/dist/src/runtime/emit/create-table.js +8 -0
  649. package/dist/src/runtime/emit/create-table.js.map +1 -1
  650. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  651. package/dist/src/runtime/emit/create-view.js +16 -1
  652. package/dist/src/runtime/emit/create-view.js.map +1 -1
  653. package/dist/src/runtime/emit/dml-executor.d.ts +27 -0
  654. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  655. package/dist/src/runtime/emit/dml-executor.js +413 -193
  656. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  657. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  658. package/dist/src/runtime/emit/drop-table.js +10 -0
  659. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  660. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  661. package/dist/src/runtime/emit/drop-view.js +17 -0
  662. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  663. package/dist/src/runtime/emit/envelope-scan.d.ts +13 -0
  664. package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -0
  665. package/dist/src/runtime/emit/envelope-scan.js +22 -0
  666. package/dist/src/runtime/emit/envelope-scan.js.map +1 -0
  667. package/dist/src/runtime/emit/join.d.ts +10 -2
  668. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  669. package/dist/src/runtime/emit/join.js +128 -38
  670. package/dist/src/runtime/emit/join.js.map +1 -1
  671. package/dist/src/runtime/emit/lens-auxiliary-access.d.ts +16 -0
  672. package/dist/src/runtime/emit/lens-auxiliary-access.d.ts.map +1 -0
  673. package/dist/src/runtime/emit/lens-auxiliary-access.js +16 -0
  674. package/dist/src/runtime/emit/lens-auxiliary-access.js.map +1 -0
  675. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +640 -0
  676. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -0
  677. package/dist/src/runtime/emit/materialized-view-helpers.js +2576 -0
  678. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -0
  679. package/dist/src/runtime/emit/materialized-view.d.ts +31 -0
  680. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -0
  681. package/dist/src/runtime/emit/materialized-view.js +187 -0
  682. package/dist/src/runtime/emit/materialized-view.js.map +1 -0
  683. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  684. package/dist/src/runtime/emit/merge-join.js +15 -3
  685. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  686. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  687. package/dist/src/runtime/emit/project.js +10 -5
  688. package/dist/src/runtime/emit/project.js.map +1 -1
  689. package/dist/src/runtime/emit/schema-declarative.d.ts +1 -0
  690. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  691. package/dist/src/runtime/emit/schema-declarative.js +101 -5
  692. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  693. package/dist/src/runtime/emit/set-object-tags.d.ts +16 -0
  694. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -0
  695. package/dist/src/runtime/emit/set-object-tags.js +57 -0
  696. package/dist/src/runtime/emit/set-object-tags.js.map +1 -0
  697. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  698. package/dist/src/runtime/emit/set-operation.js +140 -24
  699. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  700. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  701. package/dist/src/runtime/emit/subquery.js +110 -5
  702. package/dist/src/runtime/emit/subquery.js.map +1 -1
  703. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  704. package/dist/src/runtime/emit/unary.js +34 -6
  705. package/dist/src/runtime/emit/unary.js.map +1 -1
  706. package/dist/src/runtime/emit/view-mutation.d.ts +70 -0
  707. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -0
  708. package/dist/src/runtime/emit/view-mutation.js +299 -0
  709. package/dist/src/runtime/emit/view-mutation.js.map +1 -0
  710. package/dist/src/runtime/emit/window.js +29 -5
  711. package/dist/src/runtime/emit/window.js.map +1 -1
  712. package/dist/src/runtime/foreign-key-actions.d.ts +66 -3
  713. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  714. package/dist/src/runtime/foreign-key-actions.js +580 -172
  715. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  716. package/dist/src/runtime/parallel-driver.d.ts +4 -1
  717. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  718. package/dist/src/runtime/parallel-driver.js +5 -1
  719. package/dist/src/runtime/parallel-driver.js.map +1 -1
  720. package/dist/src/runtime/register.d.ts.map +1 -1
  721. package/dist/src/runtime/register.js +17 -1
  722. package/dist/src/runtime/register.js.map +1 -1
  723. package/dist/src/runtime/types.d.ts +10 -0
  724. package/dist/src/runtime/types.d.ts.map +1 -1
  725. package/dist/src/runtime/types.js.map +1 -1
  726. package/dist/src/schema/basis-backfill.d.ts +63 -0
  727. package/dist/src/schema/basis-backfill.d.ts.map +1 -0
  728. package/dist/src/schema/basis-backfill.js +161 -0
  729. package/dist/src/schema/basis-backfill.js.map +1 -0
  730. package/dist/src/schema/catalog.d.ts +115 -1
  731. package/dist/src/schema/catalog.d.ts.map +1 -1
  732. package/dist/src/schema/catalog.js +249 -22
  733. package/dist/src/schema/catalog.js.map +1 -1
  734. package/dist/src/schema/change-events.d.ts +42 -1
  735. package/dist/src/schema/change-events.d.ts.map +1 -1
  736. package/dist/src/schema/change-events.js.map +1 -1
  737. package/dist/src/schema/column.d.ts +16 -0
  738. package/dist/src/schema/column.d.ts.map +1 -1
  739. package/dist/src/schema/column.js.map +1 -1
  740. package/dist/src/schema/constraint-builder.d.ts +182 -0
  741. package/dist/src/schema/constraint-builder.d.ts.map +1 -0
  742. package/dist/src/schema/constraint-builder.js +424 -0
  743. package/dist/src/schema/constraint-builder.js.map +1 -0
  744. package/dist/src/schema/ddl-generator.d.ts +86 -1
  745. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  746. package/dist/src/schema/ddl-generator.js +316 -20
  747. package/dist/src/schema/ddl-generator.js.map +1 -1
  748. package/dist/src/schema/declared-schema-manager.d.ts +51 -0
  749. package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
  750. package/dist/src/schema/declared-schema-manager.js +61 -0
  751. package/dist/src/schema/declared-schema-manager.js.map +1 -1
  752. package/dist/src/schema/derivation.d.ts +106 -0
  753. package/dist/src/schema/derivation.d.ts.map +1 -0
  754. package/dist/src/schema/derivation.js +25 -0
  755. package/dist/src/schema/derivation.js.map +1 -0
  756. package/dist/src/schema/function.d.ts +13 -0
  757. package/dist/src/schema/function.d.ts.map +1 -1
  758. package/dist/src/schema/function.js.map +1 -1
  759. package/dist/src/schema/lens-ack.d.ts +90 -0
  760. package/dist/src/schema/lens-ack.d.ts.map +1 -0
  761. package/dist/src/schema/lens-ack.js +361 -0
  762. package/dist/src/schema/lens-ack.js.map +1 -0
  763. package/dist/src/schema/lens-compiler.d.ts +62 -0
  764. package/dist/src/schema/lens-compiler.d.ts.map +1 -0
  765. package/dist/src/schema/lens-compiler.js +1594 -0
  766. package/dist/src/schema/lens-compiler.js.map +1 -0
  767. package/dist/src/schema/lens-fk-discovery.d.ts +175 -0
  768. package/dist/src/schema/lens-fk-discovery.d.ts.map +1 -0
  769. package/dist/src/schema/lens-fk-discovery.js +336 -0
  770. package/dist/src/schema/lens-fk-discovery.js.map +1 -0
  771. package/dist/src/schema/lens-prover.d.ts +336 -0
  772. package/dist/src/schema/lens-prover.d.ts.map +1 -0
  773. package/dist/src/schema/lens-prover.js +1988 -0
  774. package/dist/src/schema/lens-prover.js.map +1 -0
  775. package/dist/src/schema/lens.d.ts +254 -0
  776. package/dist/src/schema/lens.d.ts.map +1 -0
  777. package/dist/src/schema/lens.js +21 -0
  778. package/dist/src/schema/lens.js.map +1 -0
  779. package/dist/src/schema/manager.d.ts +676 -18
  780. package/dist/src/schema/manager.d.ts.map +1 -1
  781. package/dist/src/schema/manager.js +1573 -238
  782. package/dist/src/schema/manager.js.map +1 -1
  783. package/dist/src/schema/mapping-advertisement-tags.d.ts +39 -0
  784. package/dist/src/schema/mapping-advertisement-tags.d.ts.map +1 -0
  785. package/dist/src/schema/mapping-advertisement-tags.js +216 -0
  786. package/dist/src/schema/mapping-advertisement-tags.js.map +1 -0
  787. package/dist/src/schema/rename-rewriter.d.ts +45 -4
  788. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  789. package/dist/src/schema/rename-rewriter.js +412 -19
  790. package/dist/src/schema/rename-rewriter.js.map +1 -1
  791. package/dist/src/schema/reserved-tags-policy.d.ts +32 -0
  792. package/dist/src/schema/reserved-tags-policy.d.ts.map +1 -0
  793. package/dist/src/schema/reserved-tags-policy.js +34 -0
  794. package/dist/src/schema/reserved-tags-policy.js.map +1 -0
  795. package/dist/src/schema/reserved-tags.d.ts +170 -0
  796. package/dist/src/schema/reserved-tags.d.ts.map +1 -0
  797. package/dist/src/schema/reserved-tags.js +507 -0
  798. package/dist/src/schema/reserved-tags.js.map +1 -0
  799. package/dist/src/schema/schema-differ.d.ts +158 -2
  800. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  801. package/dist/src/schema/schema-differ.js +1460 -78
  802. package/dist/src/schema/schema-differ.js.map +1 -1
  803. package/dist/src/schema/schema-hasher.d.ts +8 -3
  804. package/dist/src/schema/schema-hasher.d.ts.map +1 -1
  805. package/dist/src/schema/schema-hasher.js +22 -2
  806. package/dist/src/schema/schema-hasher.js.map +1 -1
  807. package/dist/src/schema/schema.d.ts +25 -1
  808. package/dist/src/schema/schema.d.ts.map +1 -1
  809. package/dist/src/schema/schema.js +36 -2
  810. package/dist/src/schema/schema.js.map +1 -1
  811. package/dist/src/schema/table.d.ts +259 -10
  812. package/dist/src/schema/table.d.ts.map +1 -1
  813. package/dist/src/schema/table.js +309 -26
  814. package/dist/src/schema/table.js.map +1 -1
  815. package/dist/src/schema/unique-enforcement.d.ts +78 -0
  816. package/dist/src/schema/unique-enforcement.d.ts.map +1 -0
  817. package/dist/src/schema/unique-enforcement.js +93 -0
  818. package/dist/src/schema/unique-enforcement.js.map +1 -0
  819. package/dist/src/schema/view.d.ts +83 -2
  820. package/dist/src/schema/view.d.ts.map +1 -1
  821. package/dist/src/schema/view.js +67 -1
  822. package/dist/src/schema/view.js.map +1 -1
  823. package/dist/src/schema/window-function.d.ts +9 -1
  824. package/dist/src/schema/window-function.d.ts.map +1 -1
  825. package/dist/src/schema/window-function.js.map +1 -1
  826. package/dist/src/util/comparison.d.ts +24 -0
  827. package/dist/src/util/comparison.d.ts.map +1 -1
  828. package/dist/src/util/comparison.js +34 -0
  829. package/dist/src/util/comparison.js.map +1 -1
  830. package/dist/src/util/mutation-statement.d.ts.map +1 -1
  831. package/dist/src/util/mutation-statement.js +4 -1
  832. package/dist/src/util/mutation-statement.js.map +1 -1
  833. package/dist/src/util/serialization.d.ts +9 -0
  834. package/dist/src/util/serialization.d.ts.map +1 -1
  835. package/dist/src/util/serialization.js +26 -0
  836. package/dist/src/util/serialization.js.map +1 -1
  837. package/dist/src/vtab/backing-host.d.ts +286 -0
  838. package/dist/src/vtab/backing-host.d.ts.map +1 -0
  839. package/dist/src/vtab/backing-host.js +118 -0
  840. package/dist/src/vtab/backing-host.js.map +1 -0
  841. package/dist/src/vtab/best-access-plan.d.ts +21 -0
  842. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  843. package/dist/src/vtab/best-access-plan.js.map +1 -1
  844. package/dist/src/vtab/capabilities.d.ts +5 -5
  845. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  846. package/dist/src/vtab/mapping-advertisement.d.ts +163 -0
  847. package/dist/src/vtab/mapping-advertisement.d.ts.map +1 -0
  848. package/dist/src/vtab/mapping-advertisement.js +2 -0
  849. package/dist/src/vtab/mapping-advertisement.js.map +1 -0
  850. package/dist/src/vtab/memory/index.d.ts +64 -4
  851. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  852. package/dist/src/vtab/memory/index.js +119 -12
  853. package/dist/src/vtab/memory/index.js.map +1 -1
  854. package/dist/src/vtab/memory/layer/base.d.ts +38 -1
  855. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  856. package/dist/src/vtab/memory/layer/base.js +112 -24
  857. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  858. package/dist/src/vtab/memory/layer/manager.d.ts +291 -4
  859. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  860. package/dist/src/vtab/memory/layer/manager.js +1050 -91
  861. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  862. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  863. package/dist/src/vtab/memory/layer/plan-filter.js +35 -6
  864. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  865. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  866. package/dist/src/vtab/memory/layer/scan-layer.js +66 -14
  867. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  868. package/dist/src/vtab/memory/layer/scan-plan.d.ts +14 -0
  869. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  870. package/dist/src/vtab/memory/layer/scan-plan.js +27 -4
  871. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  872. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  873. package/dist/src/vtab/memory/layer/transaction.js +5 -1
  874. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  875. package/dist/src/vtab/memory/module.d.ts +17 -0
  876. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  877. package/dist/src/vtab/memory/module.js +82 -3
  878. package/dist/src/vtab/memory/module.js.map +1 -1
  879. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  880. package/dist/src/vtab/memory/table.js +15 -5
  881. package/dist/src/vtab/memory/table.js.map +1 -1
  882. package/dist/src/vtab/memory/types.d.ts +20 -2
  883. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  884. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  885. package/dist/src/vtab/memory/utils/predicate.js +46 -24
  886. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  887. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts +31 -0
  888. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -0
  889. package/dist/src/vtab/memory/utils/primary-key-encode.js +101 -0
  890. package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -0
  891. package/dist/src/vtab/memory/utils/primary-key.d.ts +8 -0
  892. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  893. package/dist/src/vtab/memory/utils/primary-key.js +12 -5
  894. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  895. package/dist/src/vtab/module.d.ts +203 -4
  896. package/dist/src/vtab/module.d.ts.map +1 -1
  897. package/dist/src/vtab/table.d.ts +9 -0
  898. package/dist/src/vtab/table.d.ts.map +1 -1
  899. package/dist/src/vtab/table.js.map +1 -1
  900. package/package.json +6 -5
@@ -0,0 +1,574 @@
1
+ /**
2
+ * The one scope-aware column-substitution primitive the view-mutation backward
3
+ * path shares (`docs/view-updateability.md` § Selection).
4
+ *
5
+ * Three callers used to each carry a near-parallel copy of "rewrite column
6
+ * references X→Y in an expression / query, scope-aware (shadowing, taint, deep
7
+ * subquery descent)":
8
+ * - `single-source.ts` — the view-column → base-term descent and the
9
+ * correlation-qualifier of a substituted base term (both DEEP / scope-aware),
10
+ * - `multi-source.ts` — view-column → alias-qualified base term,
11
+ * - `lens-enforcement.ts` — logical → basis column rewriting.
12
+ *
13
+ * They share a shadowing/taint model and differ only in the substitution map and
14
+ * the qualification rule. This module owns the structural tree-walker
15
+ * ({@link transformExpr} and the clones built on it), the FROM-source column-name
16
+ * resolution that drives the shadow set ({@link collectFromColumnNames}), and the
17
+ * scope-aware descent ({@link transformScopedExpr} / {@link transformScopedQuery})
18
+ * parameterized by a {@link ScopeContext} value object. Each caller supplies a
19
+ * `ScopeContext` (its substitution closure + taint policy + reject builders); the
20
+ * descent itself — shadow accumulation across nested scopes, the
21
+ * `unsupported-subquery-correlation` taint logic, sibling-leg scoping — is shared.
22
+ */
23
+ // --- structural expression walker -----------------------------------------
24
+ /**
25
+ * Structurally clone an expression, substituting column references via
26
+ * `substitute`. A substituted replacement is cloned but NOT re-substituted
27
+ * (the replacement is already in target terms).
28
+ *
29
+ * Subquery operands (`subquery` / `exists` / `in … (select …)`) are descended
30
+ * into via the optional `descend` transformer, so a column reference nested
31
+ * inside a correlated subquery of a user predicate / assigned value is rewritten
32
+ * to its lineage (scope-aware — see {@link transformScopedQuery}). With `descend`
33
+ * omitted the subquery operand is passed through structurally — byte-identical to
34
+ * a plain structural rewrite — which keeps every top-level-only caller (and
35
+ * {@link cloneExpr}'s no-substitution clone) unchanged.
36
+ */
37
+ export function transformExpr(expr, substitute, descend) {
38
+ switch (expr.type) {
39
+ case 'column': {
40
+ const replacement = substitute(expr);
41
+ if (replacement)
42
+ return cloneExpr(replacement);
43
+ return { ...expr };
44
+ }
45
+ case 'binary':
46
+ return { ...expr, left: transformExpr(expr.left, substitute, descend), right: transformExpr(expr.right, substitute, descend) };
47
+ case 'unary':
48
+ return { ...expr, expr: transformExpr(expr.expr, substitute, descend) };
49
+ case 'function':
50
+ return { ...expr, args: expr.args.map(a => transformExpr(a, substitute, descend)) };
51
+ case 'cast':
52
+ return { ...expr, expr: transformExpr(expr.expr, substitute, descend) };
53
+ case 'collate':
54
+ return { ...expr, expr: transformExpr(expr.expr, substitute, descend) };
55
+ case 'between':
56
+ return {
57
+ ...expr,
58
+ expr: transformExpr(expr.expr, substitute, descend),
59
+ lower: transformExpr(expr.lower, substitute, descend),
60
+ upper: transformExpr(expr.upper, substitute, descend),
61
+ };
62
+ case 'case':
63
+ return {
64
+ ...expr,
65
+ baseExpr: expr.baseExpr ? transformExpr(expr.baseExpr, substitute, descend) : undefined,
66
+ whenThenClauses: expr.whenThenClauses.map(w => ({
67
+ when: transformExpr(w.when, substitute, descend),
68
+ then: transformExpr(w.then, substitute, descend),
69
+ })),
70
+ elseExpr: expr.elseExpr ? transformExpr(expr.elseExpr, substitute, descend) : undefined,
71
+ };
72
+ case 'in':
73
+ return {
74
+ ...expr,
75
+ expr: transformExpr(expr.expr, substitute, descend),
76
+ values: expr.values ? expr.values.map(v => transformExpr(v, substitute, descend)) : undefined,
77
+ subquery: expr.subquery && descend ? descend(expr.subquery) : expr.subquery,
78
+ };
79
+ case 'subquery':
80
+ return { ...expr, query: descend ? descend(expr.query) : expr.query };
81
+ case 'exists':
82
+ return { ...expr, subquery: descend ? descend(expr.subquery) : expr.subquery };
83
+ case 'windowFunction':
84
+ // Window args / partitionBy / orderBy / frame bounds sit in the same scalar
85
+ // scope as sibling projections, so the substitution threads through them.
86
+ return {
87
+ ...expr,
88
+ function: { ...expr.function, args: expr.function.args.map(a => transformExpr(a, substitute, descend)) },
89
+ window: expr.window ? transformWindowDefinition(expr.window, substitute, descend) : undefined,
90
+ };
91
+ default:
92
+ // literal / identifier / parameter / functionSource —
93
+ // no nested scalar/relational operand to rewrite.
94
+ return { ...expr };
95
+ }
96
+ }
97
+ /** Rebuild an OVER clause, threading the substitution through partitionBy /
98
+ * orderBy / frame-bound value expressions. */
99
+ function transformWindowDefinition(window, substitute, descend) {
100
+ return {
101
+ ...window,
102
+ partitionBy: window.partitionBy?.map(p => transformExpr(p, substitute, descend)),
103
+ orderBy: window.orderBy?.map(ob => ({ ...ob, expr: transformExpr(ob.expr, substitute, descend) })),
104
+ frame: window.frame
105
+ ? {
106
+ ...window.frame,
107
+ start: transformFrameBound(window.frame.start, substitute, descend),
108
+ end: window.frame.end && transformFrameBound(window.frame.end, substitute, descend),
109
+ }
110
+ : undefined,
111
+ };
112
+ }
113
+ /** Rebuild a window frame bound; `preceding` / `following` carry a value expression. */
114
+ function transformFrameBound(bound, substitute, descend) {
115
+ return bound.type === 'preceding' || bound.type === 'following'
116
+ ? { ...bound, value: transformExpr(bound.value, substitute, descend) }
117
+ : { ...bound };
118
+ }
119
+ /** Deep structural clone of an expression, including any nested subqueries. */
120
+ export function cloneExpr(expr) {
121
+ return transformExpr(expr, () => undefined, cloneQueryExpr);
122
+ }
123
+ /**
124
+ * Substitute every `new.<name>`-qualified column reference in an authored
125
+ * inverse expression (docs/view-updateability.md § Authored inverses) — at any
126
+ * depth, including inside subquery operands (a `new.` ref correlates to the
127
+ * written view row wherever it appears; `new` is a reserved qualifier no FROM
128
+ * source legitimately shadows). The replacement is cloned by `transformExpr`,
129
+ * so `resolve` may return a shared expression.
130
+ */
131
+ export function substituteNewRefs(expr, resolve) {
132
+ const sub = (col) => col.table?.toLowerCase() === 'new' && !col.schema ? resolve(col.name) : undefined;
133
+ return transformExpr(expr, sub, q => mapQueryExprUniform(q, sub));
134
+ }
135
+ /** Deep structural clone of a relation-producing subquery (no substitution). */
136
+ export function cloneQueryExpr(query) {
137
+ return mapQueryExprUniform(query, () => undefined);
138
+ }
139
+ /**
140
+ * Apply a column substitution uniformly through a subquery's structure — NOT
141
+ * scope-aware. The substitution decides purely on the column's own qualifier
142
+ * (e.g. {@link cloneQueryExpr}'s no-op, or the multi-source SET-value qualifier
143
+ * strip), so the enclosing scope is irrelevant and the same `substitute` is
144
+ * applied at every nesting depth. The `with` clause is cloned without
145
+ * substitution — a CTE body cannot correlate to the enclosing query, so it
146
+ * needs no rewrite, only severed sharing (see {@link cloneWithClause}).
147
+ */
148
+ export function mapQueryExprUniform(query, substitute) {
149
+ const descend = (q) => mapQueryExprUniform(q, substitute);
150
+ const onExpr = (e) => transformExpr(e, substitute, descend);
151
+ if (query.type === 'select')
152
+ return rebuildSelect(query, onExpr, descend, descend);
153
+ if (query.type === 'values')
154
+ return { ...query, values: query.values.map(row => row.map(onExpr)) };
155
+ // INSERT/UPDATE/DELETE … RETURNING as a subquery — pure structural deep clone
156
+ // (no substitution threading; the view-mutation descent rejects DML subqueries).
157
+ return cloneDmlStmt(query);
158
+ }
159
+ /**
160
+ * Structurally rebuild a `SelectStmt`, applying `onExpr` to every scalar
161
+ * expression in the select's OWN scope (projections, `where`, `groupBy`,
162
+ * `having`, `orderBy`, `limit`, `offset`, and join `ON` conditions), `onNested`
163
+ * to a subquery nested in that scope (a FROM `SubquerySource`), and `onLeg` to a
164
+ * sibling compound / union leg (which correlates to the SAME outer scope as this
165
+ * select, not to this select's FROM). The `with` clause is cloned without
166
+ * substitution — a CTE body cannot correlate to the enclosing query, so it needs
167
+ * no rewrite, only severed sharing (see {@link cloneWithClause}).
168
+ */
169
+ function rebuildSelect(sel, onExpr, onNested, onLeg) {
170
+ return {
171
+ ...sel,
172
+ withClause: cloneWithClause(sel.withClause),
173
+ // A `with inverse` clause is write-through metadata, not a live scalar of the
174
+ // read query — pure-clone it (severs sharing for in-place rewriters) without
175
+ // threading the substitution (its refs are `new.`-qualified written-row reads).
176
+ columns: sel.columns.map(rc => rc.type === 'all'
177
+ ? { ...rc }
178
+ : { ...rc, expr: onExpr(rc.expr), inverse: cloneInverseClause(rc.inverse) }),
179
+ from: sel.from?.map(fc => rebuildFrom(fc, onExpr, onNested)),
180
+ where: sel.where ? onExpr(sel.where) : undefined,
181
+ groupBy: sel.groupBy ? sel.groupBy.map(onExpr) : undefined,
182
+ having: sel.having ? onExpr(sel.having) : undefined,
183
+ orderBy: sel.orderBy ? sel.orderBy.map(ob => ({ ...ob, expr: onExpr(ob.expr) })) : undefined,
184
+ limit: sel.limit ? onExpr(sel.limit) : undefined,
185
+ offset: sel.offset ? onExpr(sel.offset) : undefined,
186
+ // A `with defaults` clause is write-through metadata, not a live scalar of the
187
+ // read query — pure-clone it (severs sharing for the in-place rename
188
+ // rewriters that descend `select.defaults`) without threading the substitution,
189
+ // exactly like the sibling `with inverse` clause above.
190
+ defaults: cloneDefaultsClause(sel.defaults),
191
+ compound: sel.compound ? { ...sel.compound, select: onLeg(sel.compound.select) } : undefined,
192
+ union: sel.union ? onLeg(sel.union) : undefined,
193
+ };
194
+ }
195
+ /** Rebuild a FROM clause, threading `onExpr` into join conditions / TVF args and
196
+ * `onNested` into a subquery source. */
197
+ function rebuildFrom(fc, onExpr, onNested) {
198
+ switch (fc.type) {
199
+ case 'table':
200
+ // Clone the nested table identifier too: in-place rewriters over a cloned
201
+ // tree (the schema differ's rename reconcile) mutate `table.name`, and a
202
+ // shared identifier would leak that mutation back into the source AST.
203
+ return { ...fc, table: { ...fc.table } };
204
+ case 'join':
205
+ return {
206
+ ...fc,
207
+ left: rebuildFrom(fc.left, onExpr, onNested),
208
+ right: rebuildFrom(fc.right, onExpr, onNested),
209
+ condition: fc.condition ? onExpr(fc.condition) : undefined,
210
+ };
211
+ case 'functionSource':
212
+ return { ...fc, args: fc.args.map(onExpr) };
213
+ case 'subquerySource':
214
+ return { ...fc, subquery: onNested(fc.subquery) };
215
+ }
216
+ }
217
+ // --- structural deep clones (no substitution) ------------------------------
218
+ // In-place rewriters (the schema differ's rename reconcile, the constraint
219
+ // builder's qualifier strip) run over trees produced by `cloneExpr` /
220
+ // `cloneQueryExpr` and mutate nodes in place — so every subtree the walkers can
221
+ // reach must be rebuilt, never shared with the source AST.
222
+ /**
223
+ * Pure structural clone of a `with` clause. CTE bodies go through
224
+ * {@link cloneQueryExpr}, NOT the substitution descend — a CTE body cannot
225
+ * correlate to the enclosing query, so no rewrite applies; the clone only
226
+ * severs reference sharing.
227
+ */
228
+ function cloneWithClause(withClause) {
229
+ if (!withClause)
230
+ return undefined;
231
+ return {
232
+ ...withClause,
233
+ ctes: withClause.ctes.map(cte => ({
234
+ ...cte,
235
+ columns: cte.columns && [...cte.columns],
236
+ query: cloneQueryExpr(cte.query),
237
+ })),
238
+ options: withClause.options && { ...withClause.options },
239
+ };
240
+ }
241
+ /** Structural clone of a RETURNING / projection column list. */
242
+ function cloneResultColumns(columns) {
243
+ return columns?.map(rc => rc.type === 'all'
244
+ ? { ...rc }
245
+ : { ...rc, expr: cloneExpr(rc.expr), inverse: cloneInverseClause(rc.inverse) });
246
+ }
247
+ /** Structural clone of a result column's `with inverse` assignment list. */
248
+ function cloneInverseClause(inverse) {
249
+ return inverse?.map(a => ({ ...a, expr: cloneExpr(a.expr) }));
250
+ }
251
+ /** Structural clone of a select's `with defaults` assignment list (mirrors
252
+ * {@link cloneInverseClause}). */
253
+ function cloneDefaultsClause(defaults) {
254
+ return defaults?.map(d => ({ ...d, expr: cloneExpr(d.expr) }));
255
+ }
256
+ /** Structural clone of mutation-context assignments. */
257
+ function cloneContextValues(values) {
258
+ return values?.map(cv => ({ ...cv, value: cloneExpr(cv.value) }));
259
+ }
260
+ /** Structural clone of an ON CONFLICT clause (conflict target, assignments, WHERE). */
261
+ function cloneUpsertClause(clause) {
262
+ return {
263
+ ...clause,
264
+ conflictTarget: clause.conflictTarget && [...clause.conflictTarget],
265
+ assignments: clause.assignments?.map(a => ({ ...a, value: cloneExpr(a.value) })),
266
+ where: clause.where && cloneExpr(clause.where),
267
+ };
268
+ }
269
+ /**
270
+ * Pure structural deep clone of an INSERT/UPDATE/DELETE … RETURNING subquery.
271
+ * No substitution is threaded — the scope-aware view-mutation descent rejects
272
+ * DML subqueries before reaching here ({@link transformScopedQuery}).
273
+ */
274
+ function cloneDmlStmt(stmt) {
275
+ switch (stmt.type) {
276
+ case 'insert':
277
+ return {
278
+ ...stmt,
279
+ withClause: cloneWithClause(stmt.withClause),
280
+ table: { ...stmt.table },
281
+ columns: stmt.columns && [...stmt.columns],
282
+ source: cloneQueryExpr(stmt.source),
283
+ upsertClauses: stmt.upsertClauses?.map(cloneUpsertClause),
284
+ returning: cloneResultColumns(stmt.returning),
285
+ contextValues: cloneContextValues(stmt.contextValues),
286
+ schemaPath: stmt.schemaPath && [...stmt.schemaPath],
287
+ };
288
+ case 'update':
289
+ return {
290
+ ...stmt,
291
+ withClause: cloneWithClause(stmt.withClause),
292
+ table: { ...stmt.table },
293
+ assignments: stmt.assignments.map(a => ({ ...a, value: cloneExpr(a.value) })),
294
+ where: stmt.where && cloneExpr(stmt.where),
295
+ returning: cloneResultColumns(stmt.returning),
296
+ contextValues: cloneContextValues(stmt.contextValues),
297
+ schemaPath: stmt.schemaPath && [...stmt.schemaPath],
298
+ };
299
+ case 'delete':
300
+ return {
301
+ ...stmt,
302
+ withClause: cloneWithClause(stmt.withClause),
303
+ table: { ...stmt.table },
304
+ where: stmt.where && cloneExpr(stmt.where),
305
+ returning: cloneResultColumns(stmt.returning),
306
+ contextValues: cloneContextValues(stmt.contextValues),
307
+ schemaPath: stmt.schemaPath && [...stmt.schemaPath],
308
+ };
309
+ }
310
+ }
311
+ // --- FROM column-name resolution (shadow-set construction) ----------------
312
+ /**
313
+ * Resolve the lowercased set of column names a subquery's FROM sources introduce
314
+ * into scope, or `null` when any source's columns cannot be resolved statically
315
+ * (a TVF, a `select *` / unnamed-projection subquery source, or an unknown name
316
+ * such as a CTE reference). A `null` marks the scope (and everything nested in
317
+ * it) **tainted**: a descent can no longer prove an unqualified reference is
318
+ * *not* a local column, so the {@link ScopeContext} decides whether to reject or
319
+ * carry the taint forward.
320
+ */
321
+ export function collectFromColumnNames(ctx, from) {
322
+ const acc = new Set();
323
+ if (!from)
324
+ return acc;
325
+ for (const fc of from) {
326
+ const names = fromSourceColumnNames(ctx, fc);
327
+ if (names === null)
328
+ return null;
329
+ for (const n of names)
330
+ acc.add(n);
331
+ }
332
+ return acc;
333
+ }
334
+ /** Lowercased column names a single FROM source introduces, or `null` if unresolvable. */
335
+ function fromSourceColumnNames(ctx, fc) {
336
+ switch (fc.type) {
337
+ case 'table':
338
+ return tableSourceColumnNames(ctx, fc);
339
+ case 'join': {
340
+ const left = fromSourceColumnNames(ctx, fc.left);
341
+ if (left === null)
342
+ return null;
343
+ const right = fromSourceColumnNames(ctx, fc.right);
344
+ if (right === null)
345
+ return null;
346
+ for (const n of right)
347
+ left.add(n);
348
+ return left;
349
+ }
350
+ case 'subquerySource':
351
+ return fc.columns && fc.columns.length > 0
352
+ ? new Set(fc.columns.map(c => c.toLowerCase()))
353
+ : projectionOutputNames(fc.subquery);
354
+ case 'functionSource':
355
+ // A table-valued function's output columns are not statically known here.
356
+ return null;
357
+ }
358
+ }
359
+ /** Lowercased column names of a base table / view / MV named in a FROM, or `null`.
360
+ * A maintained table (materialized view) resolves through the table branch —
361
+ * its registered columns ARE the authoritative output names. */
362
+ function tableSourceColumnNames(ctx, src) {
363
+ const schemaName = src.table.schema;
364
+ const table = ctx.schemaManager.getTable(schemaName, src.table.name);
365
+ if (table)
366
+ return new Set(table.columns.map(c => c.name.toLowerCase()));
367
+ const view = ctx.schemaManager.getView(schemaName ?? null, src.table.name);
368
+ if (view) {
369
+ return view.columns && view.columns.length > 0
370
+ ? new Set(view.columns.map(c => c.toLowerCase()))
371
+ : projectionOutputNames(view.selectAst);
372
+ }
373
+ // A CTE / context-backed source (a sibling CTE, or an injected eager-capture relation
374
+ // keyed under the CTE name) — never schema-qualified, so only an unqualified name can
375
+ // match. Resolve its columns from the planning context's `cteNodes` so the source
376
+ // SHADOWS (a clean local source) rather than tainting the scope. This is what lets a
377
+ // CTE-name DML target's user-predicate self-read (`from t`) over its eager capture
378
+ // resolve `t`'s bare columns as local instead of rejecting them as
379
+ // unprovable-correlation (docs/view-updateability.md § Common Table Expressions). A
380
+ // schema object of the same name was already resolved above, so this only fires for a
381
+ // genuine context-backed name. `buildFrom` resolves such a name the same way (its own
382
+ // `cteNodes` lookup), so the static shadow set matches the plan-time binding.
383
+ if (!schemaName && ctx.cteNodes) {
384
+ const cteNode = ctx.cteNodes.get(src.table.name.toLowerCase());
385
+ if (cteNode)
386
+ return new Set(cteNode.getType().columns.map(c => c.name.toLowerCase()));
387
+ }
388
+ // Unknown name (a not-yet-resolvable source).
389
+ return null;
390
+ }
391
+ /**
392
+ * The lowercased output column names of a relation-producing subquery, or `null`
393
+ * when they cannot be determined statically (`select *`, an unnamed computed
394
+ * projection, a VALUES / DML body) — a conservative signal to taint the scope.
395
+ */
396
+ function projectionOutputNames(query) {
397
+ if (query.type !== 'select')
398
+ return null;
399
+ const names = new Set();
400
+ for (const rc of query.columns) {
401
+ if (rc.type === 'all')
402
+ return null;
403
+ const name = rc.alias ?? (rc.expr.type === 'column' ? rc.expr.name : undefined);
404
+ if (name === undefined)
405
+ return null;
406
+ names.add(name.toLowerCase());
407
+ }
408
+ return names;
409
+ }
410
+ const NO_SHADOW = new Set();
411
+ /**
412
+ * Scope-aware substitution over an expression, entered at the outermost scope
413
+ * (no shadowing, untainted). Used to rewrite a substituted *term* whose own
414
+ * correlation refs must be (re-)bound (the single-source base-term qualifier).
415
+ */
416
+ export function transformScopedExpr(ctx, scope, expr) {
417
+ const substitute = scope.makeSubstitute(NO_SHADOW, false, NO_ALIAS_SHADOW);
418
+ const descend = (q) => transformScopedQuery(ctx, scope, q, NO_SHADOW, false, NO_ALIAS_SHADOW);
419
+ return transformExpr(expr, substitute, descend);
420
+ }
421
+ /**
422
+ * Scope-aware transform of an inner `QueryExpr`. Rewrites column references
423
+ * correlated to the outer scope per the {@link ScopeContext}, while leaving
424
+ * subquery-local same-named columns untouched.
425
+ *
426
+ * `shadowed` is the set of column names introduced by ENCLOSING subquery scopes;
427
+ * `tainted` is set once an enclosing scope's columns proved unresolvable (so the
428
+ * `ScopeContext`'s substitution can reject an unqualified, ambiguous reference at
429
+ * this depth or below). A `select`'s own FROM column names join the shadow set
430
+ * for its clauses and any subquery nested in them; a sibling compound / union leg
431
+ * keeps the incoming `shadowed` / `tainted` (it correlates to the same outer
432
+ * scope, not to this select's FROM).
433
+ */
434
+ export function transformScopedQuery(ctx, scope, query, shadowed, tainted, aliasShadowed = NO_ALIAS_SHADOW) {
435
+ if (query.type === 'values') {
436
+ // No FROM — the value rows correlate to the enclosing scope unchanged.
437
+ const substitute = scope.makeSubstitute(shadowed, tainted, aliasShadowed);
438
+ const descend = (q) => transformScopedQuery(ctx, scope, q, shadowed, tainted, aliasShadowed);
439
+ const onExpr = (e) => transformExpr(e, substitute, descend);
440
+ return { ...query, values: query.values.map(row => row.map(onExpr)) };
441
+ }
442
+ if (query.type !== 'select') {
443
+ // An embedded INSERT/UPDATE/DELETE … RETURNING subquery — too rich to analyse
444
+ // for correlation; reject rather than risk a partial rewrite.
445
+ scope.rejectDmlSubquery();
446
+ }
447
+ const sel = query;
448
+ const local = collectFromColumnNames(ctx, sel.from);
449
+ let innerShadow;
450
+ let scopeTainted;
451
+ if (local === null) {
452
+ if (scope.unresolvableScope === 'reject')
453
+ scope.rejectUnresolvableScope();
454
+ // Taint: shadowing cannot be proven, so the enclosing shadow set is kept and
455
+ // the scope (and everything nested in it) is marked tainted.
456
+ innerShadow = shadowed;
457
+ scopeTainted = true;
458
+ }
459
+ else {
460
+ // References in THIS select's clauses see this select's FROM in addition to
461
+ // any enclosing scope, so its locals join the shadow set.
462
+ innerShadow = new Set([...shadowed, ...local]);
463
+ scopeTainted = tainted;
464
+ }
465
+ // FROM **aliases** of this select join the alias-shadow set for its clauses and any
466
+ // subquery nested in them — the alias-only analog of `innerShadow`. Always known (a
467
+ // FROM alias is statically resolvable even when its columns are not), so this never
468
+ // taints; a tainted scope still accumulates aliases.
469
+ const innerAliasShadow = new Set([...aliasShadowed, ...collectFromAliases(sel.from)]);
470
+ const substitute = scope.makeSubstitute(innerShadow, scopeTainted, innerAliasShadow);
471
+ // A subquery nested inside this select's clauses / FROM sees this select's FROM,
472
+ // so it inherits `innerShadow` / `scopeTainted` / `innerAliasShadow`.
473
+ const onNested = (q) => transformScopedQuery(ctx, scope, q, innerShadow, scopeTainted, innerAliasShadow);
474
+ // A compound / union leg is a SIBLING select correlating to the SAME outer scope
475
+ // as this one — it does NOT see this select's FROM, so it keeps the incoming
476
+ // `shadowed` / `tainted` / `aliasShadowed`.
477
+ const onLeg = (q) => transformScopedQuery(ctx, scope, q, shadowed, tainted, aliasShadowed);
478
+ const onExpr = (e) => transformExpr(e, substitute, onNested);
479
+ return rebuildSelect(sel, onExpr, onNested, onLeg);
480
+ }
481
+ // --- alias-shadow-aware substitution (cross-source SET-value strip) --------
482
+ /**
483
+ * The lowercased set of FROM aliases a subquery's FROM sources bind into scope.
484
+ * Unlike {@link collectFromColumnNames} this NEVER returns `null` and needs no
485
+ * `PlanningContext`: a FROM alias is always statically known from the FROM clause
486
+ * itself, even when the source's *columns* are unresolvable (a `select *` / TVF /
487
+ * CTE still binds its own alias), so alias shadowing needs no taint signal.
488
+ *
489
+ * table -> alias ?? table.name
490
+ * subquerySource -> alias (always present)
491
+ * functionSource -> alias ?? name.name
492
+ * join -> union(left, right)
493
+ */
494
+ export function collectFromAliases(from) {
495
+ const acc = new Set();
496
+ if (!from)
497
+ return acc;
498
+ for (const fc of from)
499
+ collectFromSourceAliases(fc, acc);
500
+ return acc;
501
+ }
502
+ /** Accumulate the lowercased alias(es) a single FROM source binds into `acc`. */
503
+ function collectFromSourceAliases(fc, acc) {
504
+ switch (fc.type) {
505
+ case 'table':
506
+ acc.add((fc.alias ?? fc.table.name).toLowerCase());
507
+ return;
508
+ case 'subquerySource':
509
+ acc.add(fc.alias.toLowerCase());
510
+ return;
511
+ case 'functionSource':
512
+ acc.add((fc.alias ?? fc.name.name).toLowerCase());
513
+ return;
514
+ case 'join':
515
+ collectFromSourceAliases(fc.left, acc);
516
+ collectFromSourceAliases(fc.right, acc);
517
+ return;
518
+ }
519
+ }
520
+ const NO_ALIAS_SHADOW = new Set();
521
+ /**
522
+ * Alias-shadow-aware structural substitution over an expression, entered at the
523
+ * outermost scope (no inner FROM aliases shadow yet). `substitute` receives each
524
+ * column AND the set of FROM aliases shadowing at the column's depth, so a
525
+ * qualifier shadowed by an inner value-subquery FROM alias can be left local
526
+ * (per innermost-scope SQL rules) instead of routed by the cross-source strip.
527
+ *
528
+ * Mirrors {@link transformScopedQuery}'s scope rules — a select's own FROM
529
+ * aliases join the shadow set for its clauses and any subquery nested in them; a
530
+ * compound / union leg keeps the incoming set (it correlates to the same outer
531
+ * scope); VALUES has no FROM — but threads ONLY an alias set: no column-name
532
+ * shadow set, no taint, no reject. An embedded INSERT/UPDATE/DELETE … RETURNING
533
+ * subquery is cloned through structurally (no substitution), exactly matching the
534
+ * cross-source strip's prior {@link mapQueryExprUniform} behaviour.
535
+ */
536
+ export function transformAliasScopedExpr(expr, substitute) {
537
+ const sub = (col) => substitute(col, NO_ALIAS_SHADOW);
538
+ const descend = (q) => transformAliasScopedQuery(q, substitute, NO_ALIAS_SHADOW);
539
+ return transformExpr(expr, sub, descend);
540
+ }
541
+ /**
542
+ * Alias-shadow-aware transform of an inner `QueryExpr`, threading the FROM-alias
543
+ * shadow set exactly as {@link transformScopedQuery} threads its column-name
544
+ * `shadowed` set: a `select`'s own FROM aliases join the set for its clauses and
545
+ * nested subqueries; a sibling compound / union leg keeps the incoming set; a
546
+ * VALUES body (no FROM) keeps it too; a DML … RETURNING subquery clones through.
547
+ */
548
+ export function transformAliasScopedQuery(query, substitute, aliasShadow = NO_ALIAS_SHADOW) {
549
+ if (query.type === 'values') {
550
+ // No FROM — the value rows correlate to the enclosing scope unchanged.
551
+ const sub = (col) => substitute(col, aliasShadow);
552
+ const descend = (q) => transformAliasScopedQuery(q, substitute, aliasShadow);
553
+ const onExpr = (e) => transformExpr(e, sub, descend);
554
+ return { ...query, values: query.values.map(row => row.map(onExpr)) };
555
+ }
556
+ if (query.type !== 'select') {
557
+ // An embedded INSERT/UPDATE/DELETE … RETURNING subquery — clone through
558
+ // structurally (no substitution, no reject), matching mapQueryExprUniform.
559
+ return cloneDmlStmt(query);
560
+ }
561
+ const sel = query;
562
+ // References in THIS select's clauses see this select's FROM aliases in addition
563
+ // to any enclosing scope, so its aliases join the shadow set.
564
+ const inner = new Set([...aliasShadow, ...collectFromAliases(sel.from)]);
565
+ const sub = (col) => substitute(col, inner);
566
+ // A subquery nested inside this select's clauses / FROM sees this select's FROM.
567
+ const onNested = (q) => transformAliasScopedQuery(q, substitute, inner);
568
+ // A compound / union leg is a SIBLING select correlating to the SAME outer scope
569
+ // as this one — it does NOT see this select's FROM, so it keeps the incoming set.
570
+ const onLeg = (q) => transformAliasScopedQuery(q, substitute, aliasShadow);
571
+ const onExpr = (e) => transformExpr(e, sub, onNested);
572
+ return rebuildSelect(sel, onExpr, onNested, onLeg);
573
+ }
574
+ //# sourceMappingURL=scope-transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scope-transform.js","sourceRoot":"","sources":["../../../../src/planner/mutation/scope-transform.ts"],"names":[],"mappings":"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"}