@quereus/quereus 3.2.1 → 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 (935) 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 -106
  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 +795 -120
  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 +277 -8
  98. package/dist/src/parser/parser.d.ts.map +1 -1
  99. package/dist/src/parser/parser.js +1393 -471
  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/binding-extractor.d.ts.map +1 -1
  115. package/dist/src/planner/analysis/binding-extractor.js +9 -6
  116. package/dist/src/planner/analysis/binding-extractor.js.map +1 -1
  117. package/dist/src/planner/analysis/change-scope.d.ts +34 -4
  118. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  119. package/dist/src/planner/analysis/change-scope.js +115 -7
  120. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  121. package/dist/src/planner/analysis/check-extraction.d.ts +36 -2
  122. package/dist/src/planner/analysis/check-extraction.d.ts.map +1 -1
  123. package/dist/src/planner/analysis/check-extraction.js +174 -46
  124. package/dist/src/planner/analysis/check-extraction.js.map +1 -1
  125. package/dist/src/planner/analysis/coarsened-key.d.ts +109 -0
  126. package/dist/src/planner/analysis/coarsened-key.d.ts.map +1 -0
  127. package/dist/src/planner/analysis/coarsened-key.js +228 -0
  128. package/dist/src/planner/analysis/coarsened-key.js.map +1 -0
  129. package/dist/src/planner/analysis/comparison-collation.d.ts +216 -0
  130. package/dist/src/planner/analysis/comparison-collation.d.ts.map +1 -0
  131. package/dist/src/planner/analysis/comparison-collation.js +341 -0
  132. package/dist/src/planner/analysis/comparison-collation.js.map +1 -0
  133. package/dist/src/planner/analysis/constraint-extractor.d.ts +13 -1
  134. package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
  135. package/dist/src/planner/analysis/constraint-extractor.js +220 -21
  136. package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
  137. package/dist/src/planner/analysis/coverage-prover.d.ts +321 -0
  138. package/dist/src/planner/analysis/coverage-prover.d.ts.map +1 -0
  139. package/dist/src/planner/analysis/coverage-prover.js +1038 -0
  140. package/dist/src/planner/analysis/coverage-prover.js.map +1 -0
  141. package/dist/src/planner/analysis/key-filter.d.ts +22 -0
  142. package/dist/src/planner/analysis/key-filter.d.ts.map +1 -0
  143. package/dist/src/planner/analysis/key-filter.js +105 -0
  144. package/dist/src/planner/analysis/key-filter.js.map +1 -0
  145. package/dist/src/planner/analysis/partial-unique-extraction.d.ts +36 -1
  146. package/dist/src/planner/analysis/partial-unique-extraction.d.ts.map +1 -1
  147. package/dist/src/planner/analysis/partial-unique-extraction.js +148 -22
  148. package/dist/src/planner/analysis/partial-unique-extraction.js.map +1 -1
  149. package/dist/src/planner/analysis/predicate-normalizer.d.ts.map +1 -1
  150. package/dist/src/planner/analysis/predicate-normalizer.js +30 -1
  151. package/dist/src/planner/analysis/predicate-normalizer.js.map +1 -1
  152. package/dist/src/planner/analysis/predicate-shape.d.ts +36 -1
  153. package/dist/src/planner/analysis/predicate-shape.d.ts.map +1 -1
  154. package/dist/src/planner/analysis/predicate-shape.js +51 -13
  155. package/dist/src/planner/analysis/predicate-shape.js.map +1 -1
  156. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts +314 -0
  157. package/dist/src/planner/analysis/query-rewrite-matcher.d.ts.map +1 -0
  158. package/dist/src/planner/analysis/query-rewrite-matcher.js +1081 -0
  159. package/dist/src/planner/analysis/query-rewrite-matcher.js.map +1 -0
  160. package/dist/src/planner/analysis/scalar-invertibility.d.ts +92 -0
  161. package/dist/src/planner/analysis/scalar-invertibility.d.ts.map +1 -0
  162. package/dist/src/planner/analysis/scalar-invertibility.js +129 -0
  163. package/dist/src/planner/analysis/scalar-invertibility.js.map +1 -0
  164. package/dist/src/planner/analysis/update-lineage.d.ts +196 -0
  165. package/dist/src/planner/analysis/update-lineage.d.ts.map +1 -0
  166. package/dist/src/planner/analysis/update-lineage.js +322 -0
  167. package/dist/src/planner/analysis/update-lineage.js.map +1 -0
  168. package/dist/src/planner/analysis/view-complement.d.ts +42 -0
  169. package/dist/src/planner/analysis/view-complement.d.ts.map +1 -0
  170. package/dist/src/planner/analysis/view-complement.js +54 -0
  171. package/dist/src/planner/analysis/view-complement.js.map +1 -0
  172. package/dist/src/planner/building/alter-table.d.ts +1 -1
  173. package/dist/src/planner/building/alter-table.d.ts.map +1 -1
  174. package/dist/src/planner/building/alter-table.js +211 -2
  175. package/dist/src/planner/building/alter-table.js.map +1 -1
  176. package/dist/src/planner/building/block.d.ts.map +1 -1
  177. package/dist/src/planner/building/block.js +18 -1
  178. package/dist/src/planner/building/block.js.map +1 -1
  179. package/dist/src/planner/building/constraint-builder.d.ts +33 -5
  180. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  181. package/dist/src/planner/building/constraint-builder.js +63 -28
  182. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  183. package/dist/src/planner/building/create-view.d.ts +9 -0
  184. package/dist/src/planner/building/create-view.d.ts.map +1 -1
  185. package/dist/src/planner/building/create-view.js +41 -12
  186. package/dist/src/planner/building/create-view.js.map +1 -1
  187. package/dist/src/planner/building/ddl.d.ts.map +1 -1
  188. package/dist/src/planner/building/ddl.js +94 -0
  189. package/dist/src/planner/building/ddl.js.map +1 -1
  190. package/dist/src/planner/building/declare-schema.d.ts +1 -0
  191. package/dist/src/planner/building/declare-schema.d.ts.map +1 -1
  192. package/dist/src/planner/building/declare-schema.js +4 -1
  193. package/dist/src/planner/building/declare-schema.js.map +1 -1
  194. package/dist/src/planner/building/default-scope.d.ts +26 -0
  195. package/dist/src/planner/building/default-scope.d.ts.map +1 -0
  196. package/dist/src/planner/building/default-scope.js +41 -0
  197. package/dist/src/planner/building/default-scope.js.map +1 -0
  198. package/dist/src/planner/building/delete.d.ts +19 -1
  199. package/dist/src/planner/building/delete.d.ts.map +1 -1
  200. package/dist/src/planner/building/delete.js +116 -34
  201. package/dist/src/planner/building/delete.js.map +1 -1
  202. package/dist/src/planner/building/dml-target.d.ts +118 -0
  203. package/dist/src/planner/building/dml-target.d.ts.map +1 -0
  204. package/dist/src/planner/building/dml-target.js +282 -0
  205. package/dist/src/planner/building/dml-target.js.map +1 -0
  206. package/dist/src/planner/building/drop-index.d.ts.map +1 -1
  207. package/dist/src/planner/building/drop-index.js +4 -1
  208. package/dist/src/planner/building/drop-index.js.map +1 -1
  209. package/dist/src/planner/building/drop-view.d.ts.map +1 -1
  210. package/dist/src/planner/building/drop-view.js +4 -2
  211. package/dist/src/planner/building/drop-view.js.map +1 -1
  212. package/dist/src/planner/building/expression.d.ts.map +1 -1
  213. package/dist/src/planner/building/expression.js +60 -21
  214. package/dist/src/planner/building/expression.js.map +1 -1
  215. package/dist/src/planner/building/foreign-key-builder.d.ts +30 -0
  216. package/dist/src/planner/building/foreign-key-builder.d.ts.map +1 -1
  217. package/dist/src/planner/building/foreign-key-builder.js +160 -129
  218. package/dist/src/planner/building/foreign-key-builder.js.map +1 -1
  219. package/dist/src/planner/building/insert.d.ts +45 -2
  220. package/dist/src/planner/building/insert.d.ts.map +1 -1
  221. package/dist/src/planner/building/insert.js +257 -88
  222. package/dist/src/planner/building/insert.js.map +1 -1
  223. package/dist/src/planner/building/lens-auxiliary-access.d.ts +22 -0
  224. package/dist/src/planner/building/lens-auxiliary-access.d.ts.map +1 -0
  225. package/dist/src/planner/building/lens-auxiliary-access.js +132 -0
  226. package/dist/src/planner/building/lens-auxiliary-access.js.map +1 -0
  227. package/dist/src/planner/building/materialized-view.d.ts +16 -0
  228. package/dist/src/planner/building/materialized-view.d.ts.map +1 -0
  229. package/dist/src/planner/building/materialized-view.js +57 -0
  230. package/dist/src/planner/building/materialized-view.js.map +1 -0
  231. package/dist/src/planner/building/returning-star.d.ts +32 -0
  232. package/dist/src/planner/building/returning-star.d.ts.map +1 -0
  233. package/dist/src/planner/building/returning-star.js +45 -0
  234. package/dist/src/planner/building/returning-star.js.map +1 -0
  235. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  236. package/dist/src/planner/building/select-aggregates.js +51 -13
  237. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  238. package/dist/src/planner/building/select-compound.d.ts.map +1 -1
  239. package/dist/src/planner/building/select-compound.js +84 -11
  240. package/dist/src/planner/building/select-compound.js.map +1 -1
  241. package/dist/src/planner/building/select-context.d.ts +10 -2
  242. package/dist/src/planner/building/select-context.d.ts.map +1 -1
  243. package/dist/src/planner/building/select-context.js +7 -1
  244. package/dist/src/planner/building/select-context.js.map +1 -1
  245. package/dist/src/planner/building/select-modifiers.js +6 -0
  246. package/dist/src/planner/building/select-modifiers.js.map +1 -1
  247. package/dist/src/planner/building/select-ordinal.d.ts +18 -0
  248. package/dist/src/planner/building/select-ordinal.d.ts.map +1 -1
  249. package/dist/src/planner/building/select-ordinal.js +30 -0
  250. package/dist/src/planner/building/select-ordinal.js.map +1 -1
  251. package/dist/src/planner/building/select-projections.d.ts +8 -2
  252. package/dist/src/planner/building/select-projections.d.ts.map +1 -1
  253. package/dist/src/planner/building/select-projections.js +26 -4
  254. package/dist/src/planner/building/select-projections.js.map +1 -1
  255. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  256. package/dist/src/planner/building/select-window.js +8 -5
  257. package/dist/src/planner/building/select-window.js.map +1 -1
  258. package/dist/src/planner/building/select.d.ts.map +1 -1
  259. package/dist/src/planner/building/select.js +164 -59
  260. package/dist/src/planner/building/select.js.map +1 -1
  261. package/dist/src/planner/building/set-object-tags.d.ts +7 -0
  262. package/dist/src/planner/building/set-object-tags.d.ts.map +1 -0
  263. package/dist/src/planner/building/set-object-tags.js +38 -0
  264. package/dist/src/planner/building/set-object-tags.js.map +1 -0
  265. package/dist/src/planner/building/tag-diagnostics.d.ts +27 -0
  266. package/dist/src/planner/building/tag-diagnostics.d.ts.map +1 -0
  267. package/dist/src/planner/building/tag-diagnostics.js +37 -0
  268. package/dist/src/planner/building/tag-diagnostics.js.map +1 -0
  269. package/dist/src/planner/building/update.d.ts +18 -1
  270. package/dist/src/planner/building/update.d.ts.map +1 -1
  271. package/dist/src/planner/building/update.js +134 -58
  272. package/dist/src/planner/building/update.js.map +1 -1
  273. package/dist/src/planner/building/view-mutation-builder.d.ts +15 -0
  274. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -0
  275. package/dist/src/planner/building/view-mutation-builder.js +1158 -0
  276. package/dist/src/planner/building/view-mutation-builder.js.map +1 -0
  277. package/dist/src/planner/building/with.d.ts +11 -0
  278. package/dist/src/planner/building/with.d.ts.map +1 -1
  279. package/dist/src/planner/building/with.js +48 -10
  280. package/dist/src/planner/building/with.js.map +1 -1
  281. package/dist/src/planner/cost/index.d.ts +83 -0
  282. package/dist/src/planner/cost/index.d.ts.map +1 -1
  283. package/dist/src/planner/cost/index.js +114 -0
  284. package/dist/src/planner/cost/index.js.map +1 -1
  285. package/dist/src/planner/framework/characteristics.d.ts +38 -4
  286. package/dist/src/planner/framework/characteristics.d.ts.map +1 -1
  287. package/dist/src/planner/framework/characteristics.js +50 -6
  288. package/dist/src/planner/framework/characteristics.js.map +1 -1
  289. package/dist/src/planner/framework/pass.d.ts.map +1 -1
  290. package/dist/src/planner/framework/pass.js +2 -1
  291. package/dist/src/planner/framework/pass.js.map +1 -1
  292. package/dist/src/planner/framework/physical-utils.d.ts.map +1 -1
  293. package/dist/src/planner/framework/physical-utils.js +7 -1
  294. package/dist/src/planner/framework/physical-utils.js.map +1 -1
  295. package/dist/src/planner/framework/registry.d.ts +39 -1
  296. package/dist/src/planner/framework/registry.d.ts.map +1 -1
  297. package/dist/src/planner/framework/registry.js +18 -2
  298. package/dist/src/planner/framework/registry.js.map +1 -1
  299. package/dist/src/planner/mutation/backward-body.d.ts +131 -0
  300. package/dist/src/planner/mutation/backward-body.d.ts.map +1 -0
  301. package/dist/src/planner/mutation/backward-body.js +135 -0
  302. package/dist/src/planner/mutation/backward-body.js.map +1 -0
  303. package/dist/src/planner/mutation/cte-flatten.d.ts +17 -0
  304. package/dist/src/planner/mutation/cte-flatten.d.ts.map +1 -0
  305. package/dist/src/planner/mutation/cte-flatten.js +364 -0
  306. package/dist/src/planner/mutation/cte-flatten.js.map +1 -0
  307. package/dist/src/planner/mutation/decomposition.d.ts +273 -0
  308. package/dist/src/planner/mutation/decomposition.d.ts.map +1 -0
  309. package/dist/src/planner/mutation/decomposition.js +1719 -0
  310. package/dist/src/planner/mutation/decomposition.js.map +1 -0
  311. package/dist/src/planner/mutation/lens-enforcement.d.ts +165 -0
  312. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -0
  313. package/dist/src/planner/mutation/lens-enforcement.js +745 -0
  314. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -0
  315. package/dist/src/planner/mutation/multi-source.d.ts +568 -0
  316. package/dist/src/planner/mutation/multi-source.d.ts.map +1 -0
  317. package/dist/src/planner/mutation/multi-source.js +2915 -0
  318. package/dist/src/planner/mutation/multi-source.js.map +1 -0
  319. package/dist/src/planner/mutation/mutation-diagnostic.d.ts +37 -0
  320. package/dist/src/planner/mutation/mutation-diagnostic.d.ts.map +1 -0
  321. package/dist/src/planner/mutation/mutation-diagnostic.js +24 -0
  322. package/dist/src/planner/mutation/mutation-diagnostic.js.map +1 -0
  323. package/dist/src/planner/mutation/mutation-tags.d.ts +33 -0
  324. package/dist/src/planner/mutation/mutation-tags.d.ts.map +1 -0
  325. package/dist/src/planner/mutation/mutation-tags.js +31 -0
  326. package/dist/src/planner/mutation/mutation-tags.js.map +1 -0
  327. package/dist/src/planner/mutation/propagate.d.ts +97 -0
  328. package/dist/src/planner/mutation/propagate.d.ts.map +1 -0
  329. package/dist/src/planner/mutation/propagate.js +220 -0
  330. package/dist/src/planner/mutation/propagate.js.map +1 -0
  331. package/dist/src/planner/mutation/scope-transform.d.ts +181 -0
  332. package/dist/src/planner/mutation/scope-transform.d.ts.map +1 -0
  333. package/dist/src/planner/mutation/scope-transform.js +574 -0
  334. package/dist/src/planner/mutation/scope-transform.js.map +1 -0
  335. package/dist/src/planner/mutation/set-op.d.ts +242 -0
  336. package/dist/src/planner/mutation/set-op.d.ts.map +1 -0
  337. package/dist/src/planner/mutation/set-op.js +1687 -0
  338. package/dist/src/planner/mutation/set-op.js.map +1 -0
  339. package/dist/src/planner/mutation/single-source.d.ts +261 -0
  340. package/dist/src/planner/mutation/single-source.d.ts.map +1 -0
  341. package/dist/src/planner/mutation/single-source.js +1096 -0
  342. package/dist/src/planner/mutation/single-source.js.map +1 -0
  343. package/dist/src/planner/nodes/aggregate-node.d.ts +6 -4
  344. package/dist/src/planner/nodes/aggregate-node.d.ts.map +1 -1
  345. package/dist/src/planner/nodes/aggregate-node.js +11 -9
  346. package/dist/src/planner/nodes/aggregate-node.js.map +1 -1
  347. package/dist/src/planner/nodes/alias-node.d.ts.map +1 -1
  348. package/dist/src/planner/nodes/alias-node.js +5 -1
  349. package/dist/src/planner/nodes/alias-node.js.map +1 -1
  350. package/dist/src/planner/nodes/alter-table-node.d.ts +124 -1
  351. package/dist/src/planner/nodes/alter-table-node.d.ts.map +1 -1
  352. package/dist/src/planner/nodes/alter-table-node.js +27 -0
  353. package/dist/src/planner/nodes/alter-table-node.js.map +1 -1
  354. package/dist/src/planner/nodes/analyze-node.d.ts +2 -1
  355. package/dist/src/planner/nodes/analyze-node.d.ts.map +1 -1
  356. package/dist/src/planner/nodes/analyze-node.js +21 -1
  357. package/dist/src/planner/nodes/analyze-node.js.map +1 -1
  358. package/dist/src/planner/nodes/asserted-keys-node.d.ts +43 -0
  359. package/dist/src/planner/nodes/asserted-keys-node.d.ts.map +1 -0
  360. package/dist/src/planner/nodes/asserted-keys-node.js +99 -0
  361. package/dist/src/planner/nodes/asserted-keys-node.js.map +1 -0
  362. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -1
  363. package/dist/src/planner/nodes/async-gather-node.js +33 -8
  364. package/dist/src/planner/nodes/async-gather-node.js.map +1 -1
  365. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  366. package/dist/src/planner/nodes/bloom-join-node.js +2 -1
  367. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  368. package/dist/src/planner/nodes/create-view-node.d.ts +7 -2
  369. package/dist/src/planner/nodes/create-view-node.d.ts.map +1 -1
  370. package/dist/src/planner/nodes/create-view-node.js +4 -1
  371. package/dist/src/planner/nodes/create-view-node.js.map +1 -1
  372. package/dist/src/planner/nodes/declarative-schema.d.ts +13 -1
  373. package/dist/src/planner/nodes/declarative-schema.d.ts.map +1 -1
  374. package/dist/src/planner/nodes/declarative-schema.js +32 -0
  375. package/dist/src/planner/nodes/declarative-schema.js.map +1 -1
  376. package/dist/src/planner/nodes/distinct-node.d.ts.map +1 -1
  377. package/dist/src/planner/nodes/distinct-node.js +2 -0
  378. package/dist/src/planner/nodes/distinct-node.js.map +1 -1
  379. package/dist/src/planner/nodes/dml-executor-node.d.ts +29 -1
  380. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  381. package/dist/src/planner/nodes/dml-executor-node.js +27 -3
  382. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  383. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -1
  384. package/dist/src/planner/nodes/eager-prefetch-node.js +2 -0
  385. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -1
  386. package/dist/src/planner/nodes/envelope-scan-node.d.ts +42 -0
  387. package/dist/src/planner/nodes/envelope-scan-node.d.ts.map +1 -0
  388. package/dist/src/planner/nodes/envelope-scan-node.js +62 -0
  389. package/dist/src/planner/nodes/envelope-scan-node.js.map +1 -0
  390. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -1
  391. package/dist/src/planner/nodes/fanout-lookup-join-node.js +11 -1
  392. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -1
  393. package/dist/src/planner/nodes/filter.d.ts.map +1 -1
  394. package/dist/src/planner/nodes/filter.js +63 -13
  395. package/dist/src/planner/nodes/filter.js.map +1 -1
  396. package/dist/src/planner/nodes/hash-aggregate.d.ts.map +1 -1
  397. package/dist/src/planner/nodes/hash-aggregate.js +6 -16
  398. package/dist/src/planner/nodes/hash-aggregate.js.map +1 -1
  399. package/dist/src/planner/nodes/join-node.d.ts +41 -1
  400. package/dist/src/planner/nodes/join-node.d.ts.map +1 -1
  401. package/dist/src/planner/nodes/join-node.js +78 -8
  402. package/dist/src/planner/nodes/join-node.js.map +1 -1
  403. package/dist/src/planner/nodes/join-utils.d.ts +33 -6
  404. package/dist/src/planner/nodes/join-utils.d.ts.map +1 -1
  405. package/dist/src/planner/nodes/join-utils.js +131 -10
  406. package/dist/src/planner/nodes/join-utils.js.map +1 -1
  407. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts +104 -0
  408. package/dist/src/planner/nodes/lens-auxiliary-access-node.d.ts.map +1 -0
  409. package/dist/src/planner/nodes/lens-auxiliary-access-node.js +91 -0
  410. package/dist/src/planner/nodes/lens-auxiliary-access-node.js.map +1 -0
  411. package/dist/src/planner/nodes/limit-offset.d.ts +12 -0
  412. package/dist/src/planner/nodes/limit-offset.d.ts.map +1 -1
  413. package/dist/src/planner/nodes/limit-offset.js +52 -3
  414. package/dist/src/planner/nodes/limit-offset.js.map +1 -1
  415. package/dist/src/planner/nodes/materialized-view-nodes.d.ts +69 -0
  416. package/dist/src/planner/nodes/materialized-view-nodes.d.ts.map +1 -0
  417. package/dist/src/planner/nodes/materialized-view-nodes.js +111 -0
  418. package/dist/src/planner/nodes/materialized-view-nodes.js.map +1 -0
  419. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  420. package/dist/src/planner/nodes/merge-join-node.js +2 -1
  421. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  422. package/dist/src/planner/nodes/ordinal-slice-node.d.ts.map +1 -1
  423. package/dist/src/planner/nodes/ordinal-slice-node.js +2 -0
  424. package/dist/src/planner/nodes/ordinal-slice-node.js.map +1 -1
  425. package/dist/src/planner/nodes/plan-node-type.d.ts +9 -0
  426. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  427. package/dist/src/planner/nodes/plan-node-type.js +9 -0
  428. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  429. package/dist/src/planner/nodes/plan-node.d.ts +265 -5
  430. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  431. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  432. package/dist/src/planner/nodes/pragma.d.ts +2 -1
  433. package/dist/src/planner/nodes/pragma.d.ts.map +1 -1
  434. package/dist/src/planner/nodes/pragma.js +12 -0
  435. package/dist/src/planner/nodes/pragma.js.map +1 -1
  436. package/dist/src/planner/nodes/project-node.d.ts +14 -1
  437. package/dist/src/planner/nodes/project-node.d.ts.map +1 -1
  438. package/dist/src/planner/nodes/project-node.js +103 -16
  439. package/dist/src/planner/nodes/project-node.js.map +1 -1
  440. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  441. package/dist/src/planner/nodes/reference.js +63 -30
  442. package/dist/src/planner/nodes/reference.js.map +1 -1
  443. package/dist/src/planner/nodes/retrieve-node.d.ts.map +1 -1
  444. package/dist/src/planner/nodes/retrieve-node.js +7 -0
  445. package/dist/src/planner/nodes/retrieve-node.js.map +1 -1
  446. package/dist/src/planner/nodes/returning-node.d.ts.map +1 -1
  447. package/dist/src/planner/nodes/returning-node.js +10 -3
  448. package/dist/src/planner/nodes/returning-node.js.map +1 -1
  449. package/dist/src/planner/nodes/scalar.d.ts +20 -0
  450. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  451. package/dist/src/planner/nodes/scalar.js +71 -14
  452. package/dist/src/planner/nodes/scalar.js.map +1 -1
  453. package/dist/src/planner/nodes/set-object-tags-node.d.ts +39 -0
  454. package/dist/src/planner/nodes/set-object-tags-node.d.ts.map +1 -0
  455. package/dist/src/planner/nodes/set-object-tags-node.js +41 -0
  456. package/dist/src/planner/nodes/set-object-tags-node.js.map +1 -0
  457. package/dist/src/planner/nodes/set-operation-node.d.ts +123 -1
  458. package/dist/src/planner/nodes/set-operation-node.d.ts.map +1 -1
  459. package/dist/src/planner/nodes/set-operation-node.js +302 -18
  460. package/dist/src/planner/nodes/set-operation-node.js.map +1 -1
  461. package/dist/src/planner/nodes/single-row.d.ts.map +1 -1
  462. package/dist/src/planner/nodes/single-row.js +3 -0
  463. package/dist/src/planner/nodes/single-row.js.map +1 -1
  464. package/dist/src/planner/nodes/sort.d.ts.map +1 -1
  465. package/dist/src/planner/nodes/sort.js +8 -7
  466. package/dist/src/planner/nodes/sort.js.map +1 -1
  467. package/dist/src/planner/nodes/stream-aggregate.d.ts.map +1 -1
  468. package/dist/src/planner/nodes/stream-aggregate.js +8 -23
  469. package/dist/src/planner/nodes/stream-aggregate.js.map +1 -1
  470. package/dist/src/planner/nodes/subquery.d.ts +2 -0
  471. package/dist/src/planner/nodes/subquery.d.ts.map +1 -1
  472. package/dist/src/planner/nodes/subquery.js +18 -2
  473. package/dist/src/planner/nodes/subquery.js.map +1 -1
  474. package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
  475. package/dist/src/planner/nodes/table-access-nodes.js +23 -3
  476. package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
  477. package/dist/src/planner/nodes/table-function-call.js +6 -0
  478. package/dist/src/planner/nodes/table-function-call.js.map +1 -1
  479. package/dist/src/planner/nodes/values-node.d.ts +3 -1
  480. package/dist/src/planner/nodes/values-node.d.ts.map +1 -1
  481. package/dist/src/planner/nodes/values-node.js +26 -0
  482. package/dist/src/planner/nodes/values-node.js.map +1 -1
  483. package/dist/src/planner/nodes/view-mutation-node.d.ts +259 -0
  484. package/dist/src/planner/nodes/view-mutation-node.d.ts.map +1 -0
  485. package/dist/src/planner/nodes/view-mutation-node.js +273 -0
  486. package/dist/src/planner/nodes/view-mutation-node.js.map +1 -0
  487. package/dist/src/planner/nodes/window-function.d.ts +17 -1
  488. package/dist/src/planner/nodes/window-function.d.ts.map +1 -1
  489. package/dist/src/planner/nodes/window-function.js +15 -1
  490. package/dist/src/planner/nodes/window-function.js.map +1 -1
  491. package/dist/src/planner/nodes/window-node.js +3 -3
  492. package/dist/src/planner/nodes/window-node.js.map +1 -1
  493. package/dist/src/planner/optimizer.d.ts.map +1 -1
  494. package/dist/src/planner/optimizer.js +372 -39
  495. package/dist/src/planner/optimizer.js.map +1 -1
  496. package/dist/src/planner/planning-context.d.ts +1 -1
  497. package/dist/src/planner/planning-context.d.ts.map +1 -1
  498. package/dist/src/planner/rules/access/lens-access-form-matcher.d.ts +70 -0
  499. package/dist/src/planner/rules/access/lens-access-form-matcher.d.ts.map +1 -0
  500. package/dist/src/planner/rules/access/lens-access-form-matcher.js +156 -0
  501. package/dist/src/planner/rules/access/lens-access-form-matcher.js.map +1 -0
  502. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.d.ts +31 -0
  503. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.d.ts.map +1 -0
  504. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.js +176 -0
  505. package/dist/src/planner/rules/access/rule-lens-auxiliary-access.js.map +1 -0
  506. package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
  507. package/dist/src/planner/rules/access/rule-select-access-path.js +435 -37
  508. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  509. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.d.ts.map +1 -1
  510. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js +8 -27
  511. package/dist/src/planner/rules/aggregate/rule-aggregate-streaming.js.map +1 -1
  512. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts +9 -3
  513. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.d.ts.map +1 -1
  514. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js +56 -5
  515. package/dist/src/planner/rules/aggregate/rule-groupby-fd-simplification.js.map +1 -1
  516. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts +39 -0
  517. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.d.ts.map +1 -0
  518. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js +616 -0
  519. package/dist/src/planner/rules/cache/rule-materialized-view-rewrite.js.map +1 -0
  520. package/dist/src/planner/rules/cache/rule-scalar-cse.d.ts.map +1 -1
  521. package/dist/src/planner/rules/cache/rule-scalar-cse.js +8 -1
  522. package/dist/src/planner/rules/cache/rule-scalar-cse.js.map +1 -1
  523. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts +8 -7
  524. package/dist/src/planner/rules/distinct/rule-distinct-elimination.d.ts.map +1 -1
  525. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js +14 -21
  526. package/dist/src/planner/rules/distinct/rule-distinct-elimination.js.map +1 -1
  527. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts +36 -0
  528. package/dist/src/planner/rules/join/equi-pair-extractor.d.ts.map +1 -1
  529. package/dist/src/planner/rules/join/equi-pair-extractor.js +42 -5
  530. package/dist/src/planner/rules/join/equi-pair-extractor.js.map +1 -1
  531. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts.map +1 -1
  532. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +10 -0
  533. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js.map +1 -1
  534. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +25 -9
  535. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -1
  536. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts +130 -0
  537. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.d.ts.map +1 -0
  538. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js +206 -0
  539. package/dist/src/planner/rules/join/rule-inner-join-existence-recovery.js.map +1 -0
  540. package/dist/src/planner/rules/join/rule-join-elimination.d.ts +67 -14
  541. package/dist/src/planner/rules/join/rule-join-elimination.d.ts.map +1 -1
  542. package/dist/src/planner/rules/join/rule-join-elimination.js +81 -25
  543. package/dist/src/planner/rules/join/rule-join-elimination.js.map +1 -1
  544. package/dist/src/planner/rules/join/rule-join-existence-pruning.d.ts +84 -0
  545. package/dist/src/planner/rules/join/rule-join-existence-pruning.d.ts.map +1 -0
  546. package/dist/src/planner/rules/join/rule-join-existence-pruning.js +138 -0
  547. package/dist/src/planner/rules/join/rule-join-existence-pruning.js.map +1 -0
  548. package/dist/src/planner/rules/join/rule-join-greedy-commute.d.ts.map +1 -1
  549. package/dist/src/planner/rules/join/rule-join-greedy-commute.js +19 -1
  550. package/dist/src/planner/rules/join/rule-join-greedy-commute.js.map +1 -1
  551. package/dist/src/planner/rules/join/rule-join-physical-selection.d.ts.map +1 -1
  552. package/dist/src/planner/rules/join/rule-join-physical-selection.js +14 -2
  553. package/dist/src/planner/rules/join/rule-join-physical-selection.js.map +1 -1
  554. package/dist/src/planner/rules/join/rule-lateral-top1-asof.d.ts.map +1 -1
  555. package/dist/src/planner/rules/join/rule-lateral-top1-asof.js +5 -2
  556. package/dist/src/planner/rules/join/rule-lateral-top1-asof.js.map +1 -1
  557. package/dist/src/planner/rules/join/rule-monotonic-merge-join.d.ts.map +1 -1
  558. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js +4 -0
  559. package/dist/src/planner/rules/join/rule-monotonic-merge-join.js.map +1 -1
  560. package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
  561. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +10 -0
  562. package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
  563. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.d.ts +286 -0
  564. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.d.ts.map +1 -0
  565. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.js +548 -0
  566. package/dist/src/planner/rules/join/rule-semijoin-existence-recovery.js.map +1 -0
  567. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts.map +1 -1
  568. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js +9 -1
  569. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js.map +1 -1
  570. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts.map +1 -1
  571. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +7 -0
  572. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -1
  573. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts.map +1 -1
  574. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js +10 -1
  575. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js.map +1 -1
  576. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.d.ts.map +1 -1
  577. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js +10 -1
  578. package/dist/src/planner/rules/predicate/rule-aggregate-predicate-pushdown.js.map +1 -1
  579. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.d.ts.map +1 -1
  580. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js +18 -0
  581. package/dist/src/planner/rules/predicate/rule-empty-relation-folding.js.map +1 -1
  582. package/dist/src/planner/rules/predicate/rule-filter-contradiction.d.ts.map +1 -1
  583. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js +7 -0
  584. package/dist/src/planner/rules/predicate/rule-filter-contradiction.js.map +1 -1
  585. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.d.ts.map +1 -1
  586. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js +9 -0
  587. package/dist/src/planner/rules/predicate/rule-predicate-inference-equivalence.js.map +1 -1
  588. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js +13 -3
  589. package/dist/src/planner/rules/predicate/rule-predicate-pushdown.js.map +1 -1
  590. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +2 -2
  591. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  592. package/dist/src/planner/rules/retrieve/rule-projection-pruning.d.ts.map +1 -1
  593. package/dist/src/planner/rules/retrieve/rule-projection-pruning.js +14 -0
  594. package/dist/src/planner/rules/retrieve/rule-projection-pruning.js.map +1 -1
  595. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts +16 -0
  596. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.d.ts.map +1 -1
  597. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js +47 -4
  598. package/dist/src/planner/rules/sort/rule-orderby-fd-pruning.js.map +1 -1
  599. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.d.ts.map +1 -1
  600. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js +8 -0
  601. package/dist/src/planner/rules/subquery/rule-anti-join-fk-empty.js.map +1 -1
  602. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.d.ts.map +1 -1
  603. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js +7 -0
  604. package/dist/src/planner/rules/subquery/rule-semi-join-fk-trivial.js.map +1 -1
  605. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.d.ts.map +1 -1
  606. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js +12 -0
  607. package/dist/src/planner/rules/subquery/rule-subquery-decorrelation.js.map +1 -1
  608. package/dist/src/planner/rules/window/rule-monotonic-window.js +1 -1
  609. package/dist/src/planner/rules/window/rule-monotonic-window.js.map +1 -1
  610. package/dist/src/planner/type-utils.d.ts +14 -0
  611. package/dist/src/planner/type-utils.d.ts.map +1 -1
  612. package/dist/src/planner/type-utils.js +66 -21
  613. package/dist/src/planner/type-utils.js.map +1 -1
  614. package/dist/src/planner/util/fd-utils.d.ts +228 -36
  615. package/dist/src/planner/util/fd-utils.d.ts.map +1 -1
  616. package/dist/src/planner/util/fd-utils.js +501 -84
  617. package/dist/src/planner/util/fd-utils.js.map +1 -1
  618. package/dist/src/planner/util/ind-utils.d.ts +27 -1
  619. package/dist/src/planner/util/ind-utils.d.ts.map +1 -1
  620. package/dist/src/planner/util/ind-utils.js +80 -6
  621. package/dist/src/planner/util/ind-utils.js.map +1 -1
  622. package/dist/src/planner/util/key-utils.d.ts +26 -3
  623. package/dist/src/planner/util/key-utils.d.ts.map +1 -1
  624. package/dist/src/planner/util/key-utils.js +182 -33
  625. package/dist/src/planner/util/key-utils.js.map +1 -1
  626. package/dist/src/planner/util/set-op-wrapper.d.ts +37 -0
  627. package/dist/src/planner/util/set-op-wrapper.d.ts.map +1 -0
  628. package/dist/src/planner/util/set-op-wrapper.js +82 -0
  629. package/dist/src/planner/util/set-op-wrapper.js.map +1 -0
  630. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  631. package/dist/src/planner/validation/plan-validator.js +1 -0
  632. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  633. package/dist/src/runtime/context-helpers.d.ts +13 -1
  634. package/dist/src/runtime/context-helpers.d.ts.map +1 -1
  635. package/dist/src/runtime/context-helpers.js +7 -1
  636. package/dist/src/runtime/context-helpers.js.map +1 -1
  637. package/dist/src/runtime/delta-executor.d.ts +30 -1
  638. package/dist/src/runtime/delta-executor.d.ts.map +1 -1
  639. package/dist/src/runtime/delta-executor.js +38 -4
  640. package/dist/src/runtime/delta-executor.js.map +1 -1
  641. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  642. package/dist/src/runtime/emit/add-constraint.js +38 -5
  643. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  644. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  645. package/dist/src/runtime/emit/aggregate.js +10 -8
  646. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  647. package/dist/src/runtime/emit/alter-table.d.ts +1 -1
  648. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  649. package/dist/src/runtime/emit/alter-table.js +664 -108
  650. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  651. package/dist/src/runtime/emit/analyze.d.ts.map +1 -1
  652. package/dist/src/runtime/emit/analyze.js +2 -1
  653. package/dist/src/runtime/emit/analyze.js.map +1 -1
  654. package/dist/src/runtime/emit/asof-scan.d.ts.map +1 -1
  655. package/dist/src/runtime/emit/asof-scan.js +24 -9
  656. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  657. package/dist/src/runtime/emit/asserted-keys.d.ts +13 -0
  658. package/dist/src/runtime/emit/asserted-keys.d.ts.map +1 -0
  659. package/dist/src/runtime/emit/asserted-keys.js +13 -0
  660. package/dist/src/runtime/emit/asserted-keys.js.map +1 -0
  661. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  662. package/dist/src/runtime/emit/between.js +24 -19
  663. package/dist/src/runtime/emit/between.js.map +1 -1
  664. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  665. package/dist/src/runtime/emit/binary.js +24 -36
  666. package/dist/src/runtime/emit/binary.js.map +1 -1
  667. package/dist/src/runtime/emit/block.d.ts.map +1 -1
  668. package/dist/src/runtime/emit/block.js +11 -2
  669. package/dist/src/runtime/emit/block.js.map +1 -1
  670. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  671. package/dist/src/runtime/emit/bloom-join.js +12 -4
  672. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  673. package/dist/src/runtime/emit/constraint-check.d.ts.map +1 -1
  674. package/dist/src/runtime/emit/constraint-check.js +50 -1
  675. package/dist/src/runtime/emit/constraint-check.js.map +1 -1
  676. package/dist/src/runtime/emit/create-table.d.ts.map +1 -1
  677. package/dist/src/runtime/emit/create-table.js +8 -0
  678. package/dist/src/runtime/emit/create-table.js.map +1 -1
  679. package/dist/src/runtime/emit/create-view.d.ts.map +1 -1
  680. package/dist/src/runtime/emit/create-view.js +16 -1
  681. package/dist/src/runtime/emit/create-view.js.map +1 -1
  682. package/dist/src/runtime/emit/delete.d.ts.map +1 -1
  683. package/dist/src/runtime/emit/delete.js +15 -5
  684. package/dist/src/runtime/emit/delete.js.map +1 -1
  685. package/dist/src/runtime/emit/dml-executor.d.ts +27 -0
  686. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  687. package/dist/src/runtime/emit/dml-executor.js +413 -193
  688. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  689. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  690. package/dist/src/runtime/emit/drop-table.js +10 -0
  691. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  692. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  693. package/dist/src/runtime/emit/drop-view.js +17 -0
  694. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  695. package/dist/src/runtime/emit/envelope-scan.d.ts +13 -0
  696. package/dist/src/runtime/emit/envelope-scan.d.ts.map +1 -0
  697. package/dist/src/runtime/emit/envelope-scan.js +22 -0
  698. package/dist/src/runtime/emit/envelope-scan.js.map +1 -0
  699. package/dist/src/runtime/emit/join.d.ts +10 -2
  700. package/dist/src/runtime/emit/join.d.ts.map +1 -1
  701. package/dist/src/runtime/emit/join.js +128 -38
  702. package/dist/src/runtime/emit/join.js.map +1 -1
  703. package/dist/src/runtime/emit/lens-auxiliary-access.d.ts +16 -0
  704. package/dist/src/runtime/emit/lens-auxiliary-access.d.ts.map +1 -0
  705. package/dist/src/runtime/emit/lens-auxiliary-access.js +16 -0
  706. package/dist/src/runtime/emit/lens-auxiliary-access.js.map +1 -0
  707. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +640 -0
  708. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -0
  709. package/dist/src/runtime/emit/materialized-view-helpers.js +2576 -0
  710. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -0
  711. package/dist/src/runtime/emit/materialized-view.d.ts +31 -0
  712. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -0
  713. package/dist/src/runtime/emit/materialized-view.js +187 -0
  714. package/dist/src/runtime/emit/materialized-view.js.map +1 -0
  715. package/dist/src/runtime/emit/merge-join.d.ts.map +1 -1
  716. package/dist/src/runtime/emit/merge-join.js +19 -5
  717. package/dist/src/runtime/emit/merge-join.js.map +1 -1
  718. package/dist/src/runtime/emit/project.d.ts.map +1 -1
  719. package/dist/src/runtime/emit/project.js +10 -5
  720. package/dist/src/runtime/emit/project.js.map +1 -1
  721. package/dist/src/runtime/emit/schema-declarative.d.ts +1 -0
  722. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  723. package/dist/src/runtime/emit/schema-declarative.js +101 -5
  724. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  725. package/dist/src/runtime/emit/set-object-tags.d.ts +16 -0
  726. package/dist/src/runtime/emit/set-object-tags.d.ts.map +1 -0
  727. package/dist/src/runtime/emit/set-object-tags.js +57 -0
  728. package/dist/src/runtime/emit/set-object-tags.js.map +1 -0
  729. package/dist/src/runtime/emit/set-operation.d.ts.map +1 -1
  730. package/dist/src/runtime/emit/set-operation.js +140 -24
  731. package/dist/src/runtime/emit/set-operation.js.map +1 -1
  732. package/dist/src/runtime/emit/subquery.d.ts.map +1 -1
  733. package/dist/src/runtime/emit/subquery.js +110 -5
  734. package/dist/src/runtime/emit/subquery.js.map +1 -1
  735. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  736. package/dist/src/runtime/emit/unary.js +34 -6
  737. package/dist/src/runtime/emit/unary.js.map +1 -1
  738. package/dist/src/runtime/emit/view-mutation.d.ts +70 -0
  739. package/dist/src/runtime/emit/view-mutation.d.ts.map +1 -0
  740. package/dist/src/runtime/emit/view-mutation.js +299 -0
  741. package/dist/src/runtime/emit/view-mutation.js.map +1 -0
  742. package/dist/src/runtime/emit/window.js +29 -5
  743. package/dist/src/runtime/emit/window.js.map +1 -1
  744. package/dist/src/runtime/foreign-key-actions.d.ts +66 -3
  745. package/dist/src/runtime/foreign-key-actions.d.ts.map +1 -1
  746. package/dist/src/runtime/foreign-key-actions.js +580 -172
  747. package/dist/src/runtime/foreign-key-actions.js.map +1 -1
  748. package/dist/src/runtime/parallel-driver.d.ts +4 -1
  749. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  750. package/dist/src/runtime/parallel-driver.js +5 -1
  751. package/dist/src/runtime/parallel-driver.js.map +1 -1
  752. package/dist/src/runtime/register.d.ts.map +1 -1
  753. package/dist/src/runtime/register.js +17 -1
  754. package/dist/src/runtime/register.js.map +1 -1
  755. package/dist/src/runtime/types.d.ts +10 -0
  756. package/dist/src/runtime/types.d.ts.map +1 -1
  757. package/dist/src/runtime/types.js.map +1 -1
  758. package/dist/src/schema/basis-backfill.d.ts +63 -0
  759. package/dist/src/schema/basis-backfill.d.ts.map +1 -0
  760. package/dist/src/schema/basis-backfill.js +161 -0
  761. package/dist/src/schema/basis-backfill.js.map +1 -0
  762. package/dist/src/schema/catalog.d.ts +115 -1
  763. package/dist/src/schema/catalog.d.ts.map +1 -1
  764. package/dist/src/schema/catalog.js +249 -22
  765. package/dist/src/schema/catalog.js.map +1 -1
  766. package/dist/src/schema/change-events.d.ts +42 -1
  767. package/dist/src/schema/change-events.d.ts.map +1 -1
  768. package/dist/src/schema/change-events.js.map +1 -1
  769. package/dist/src/schema/column.d.ts +16 -0
  770. package/dist/src/schema/column.d.ts.map +1 -1
  771. package/dist/src/schema/column.js.map +1 -1
  772. package/dist/src/schema/constraint-builder.d.ts +182 -0
  773. package/dist/src/schema/constraint-builder.d.ts.map +1 -0
  774. package/dist/src/schema/constraint-builder.js +424 -0
  775. package/dist/src/schema/constraint-builder.js.map +1 -0
  776. package/dist/src/schema/ddl-generator.d.ts +86 -1
  777. package/dist/src/schema/ddl-generator.d.ts.map +1 -1
  778. package/dist/src/schema/ddl-generator.js +316 -20
  779. package/dist/src/schema/ddl-generator.js.map +1 -1
  780. package/dist/src/schema/declared-schema-manager.d.ts +51 -0
  781. package/dist/src/schema/declared-schema-manager.d.ts.map +1 -1
  782. package/dist/src/schema/declared-schema-manager.js +61 -0
  783. package/dist/src/schema/declared-schema-manager.js.map +1 -1
  784. package/dist/src/schema/derivation.d.ts +106 -0
  785. package/dist/src/schema/derivation.d.ts.map +1 -0
  786. package/dist/src/schema/derivation.js +25 -0
  787. package/dist/src/schema/derivation.js.map +1 -0
  788. package/dist/src/schema/function.d.ts +13 -0
  789. package/dist/src/schema/function.d.ts.map +1 -1
  790. package/dist/src/schema/function.js.map +1 -1
  791. package/dist/src/schema/lens-ack.d.ts +90 -0
  792. package/dist/src/schema/lens-ack.d.ts.map +1 -0
  793. package/dist/src/schema/lens-ack.js +361 -0
  794. package/dist/src/schema/lens-ack.js.map +1 -0
  795. package/dist/src/schema/lens-compiler.d.ts +62 -0
  796. package/dist/src/schema/lens-compiler.d.ts.map +1 -0
  797. package/dist/src/schema/lens-compiler.js +1594 -0
  798. package/dist/src/schema/lens-compiler.js.map +1 -0
  799. package/dist/src/schema/lens-fk-discovery.d.ts +175 -0
  800. package/dist/src/schema/lens-fk-discovery.d.ts.map +1 -0
  801. package/dist/src/schema/lens-fk-discovery.js +336 -0
  802. package/dist/src/schema/lens-fk-discovery.js.map +1 -0
  803. package/dist/src/schema/lens-prover.d.ts +336 -0
  804. package/dist/src/schema/lens-prover.d.ts.map +1 -0
  805. package/dist/src/schema/lens-prover.js +1988 -0
  806. package/dist/src/schema/lens-prover.js.map +1 -0
  807. package/dist/src/schema/lens.d.ts +254 -0
  808. package/dist/src/schema/lens.d.ts.map +1 -0
  809. package/dist/src/schema/lens.js +21 -0
  810. package/dist/src/schema/lens.js.map +1 -0
  811. package/dist/src/schema/manager.d.ts +676 -18
  812. package/dist/src/schema/manager.d.ts.map +1 -1
  813. package/dist/src/schema/manager.js +1573 -238
  814. package/dist/src/schema/manager.js.map +1 -1
  815. package/dist/src/schema/mapping-advertisement-tags.d.ts +39 -0
  816. package/dist/src/schema/mapping-advertisement-tags.d.ts.map +1 -0
  817. package/dist/src/schema/mapping-advertisement-tags.js +216 -0
  818. package/dist/src/schema/mapping-advertisement-tags.js.map +1 -0
  819. package/dist/src/schema/rename-rewriter.d.ts +45 -4
  820. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  821. package/dist/src/schema/rename-rewriter.js +412 -19
  822. package/dist/src/schema/rename-rewriter.js.map +1 -1
  823. package/dist/src/schema/reserved-tags-policy.d.ts +32 -0
  824. package/dist/src/schema/reserved-tags-policy.d.ts.map +1 -0
  825. package/dist/src/schema/reserved-tags-policy.js +34 -0
  826. package/dist/src/schema/reserved-tags-policy.js.map +1 -0
  827. package/dist/src/schema/reserved-tags.d.ts +170 -0
  828. package/dist/src/schema/reserved-tags.d.ts.map +1 -0
  829. package/dist/src/schema/reserved-tags.js +507 -0
  830. package/dist/src/schema/reserved-tags.js.map +1 -0
  831. package/dist/src/schema/schema-differ.d.ts +158 -2
  832. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  833. package/dist/src/schema/schema-differ.js +1460 -78
  834. package/dist/src/schema/schema-differ.js.map +1 -1
  835. package/dist/src/schema/schema-hasher.d.ts +8 -3
  836. package/dist/src/schema/schema-hasher.d.ts.map +1 -1
  837. package/dist/src/schema/schema-hasher.js +22 -2
  838. package/dist/src/schema/schema-hasher.js.map +1 -1
  839. package/dist/src/schema/schema.d.ts +25 -1
  840. package/dist/src/schema/schema.d.ts.map +1 -1
  841. package/dist/src/schema/schema.js +36 -2
  842. package/dist/src/schema/schema.js.map +1 -1
  843. package/dist/src/schema/table.d.ts +259 -10
  844. package/dist/src/schema/table.d.ts.map +1 -1
  845. package/dist/src/schema/table.js +309 -26
  846. package/dist/src/schema/table.js.map +1 -1
  847. package/dist/src/schema/unique-enforcement.d.ts +78 -0
  848. package/dist/src/schema/unique-enforcement.d.ts.map +1 -0
  849. package/dist/src/schema/unique-enforcement.js +93 -0
  850. package/dist/src/schema/unique-enforcement.js.map +1 -0
  851. package/dist/src/schema/view.d.ts +83 -2
  852. package/dist/src/schema/view.d.ts.map +1 -1
  853. package/dist/src/schema/view.js +67 -1
  854. package/dist/src/schema/view.js.map +1 -1
  855. package/dist/src/schema/window-function.d.ts +9 -1
  856. package/dist/src/schema/window-function.d.ts.map +1 -1
  857. package/dist/src/schema/window-function.js.map +1 -1
  858. package/dist/src/types/temporal-types.d.ts.map +1 -1
  859. package/dist/src/types/temporal-types.js +71 -36
  860. package/dist/src/types/temporal-types.js.map +1 -1
  861. package/dist/src/util/comparison.d.ts +24 -0
  862. package/dist/src/util/comparison.d.ts.map +1 -1
  863. package/dist/src/util/comparison.js +34 -0
  864. package/dist/src/util/comparison.js.map +1 -1
  865. package/dist/src/util/mutation-statement.d.ts.map +1 -1
  866. package/dist/src/util/mutation-statement.js +4 -1
  867. package/dist/src/util/mutation-statement.js.map +1 -1
  868. package/dist/src/util/serialization.d.ts +9 -0
  869. package/dist/src/util/serialization.d.ts.map +1 -1
  870. package/dist/src/util/serialization.js +26 -0
  871. package/dist/src/util/serialization.js.map +1 -1
  872. package/dist/src/vtab/backing-host.d.ts +286 -0
  873. package/dist/src/vtab/backing-host.d.ts.map +1 -0
  874. package/dist/src/vtab/backing-host.js +118 -0
  875. package/dist/src/vtab/backing-host.js.map +1 -0
  876. package/dist/src/vtab/best-access-plan.d.ts +21 -0
  877. package/dist/src/vtab/best-access-plan.d.ts.map +1 -1
  878. package/dist/src/vtab/best-access-plan.js.map +1 -1
  879. package/dist/src/vtab/capabilities.d.ts +5 -5
  880. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  881. package/dist/src/vtab/mapping-advertisement.d.ts +163 -0
  882. package/dist/src/vtab/mapping-advertisement.d.ts.map +1 -0
  883. package/dist/src/vtab/mapping-advertisement.js +2 -0
  884. package/dist/src/vtab/mapping-advertisement.js.map +1 -0
  885. package/dist/src/vtab/memory/index.d.ts +64 -4
  886. package/dist/src/vtab/memory/index.d.ts.map +1 -1
  887. package/dist/src/vtab/memory/index.js +119 -12
  888. package/dist/src/vtab/memory/index.js.map +1 -1
  889. package/dist/src/vtab/memory/layer/base.d.ts +38 -1
  890. package/dist/src/vtab/memory/layer/base.d.ts.map +1 -1
  891. package/dist/src/vtab/memory/layer/base.js +112 -24
  892. package/dist/src/vtab/memory/layer/base.js.map +1 -1
  893. package/dist/src/vtab/memory/layer/manager.d.ts +291 -4
  894. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  895. package/dist/src/vtab/memory/layer/manager.js +1050 -91
  896. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  897. package/dist/src/vtab/memory/layer/plan-filter.d.ts.map +1 -1
  898. package/dist/src/vtab/memory/layer/plan-filter.js +35 -6
  899. package/dist/src/vtab/memory/layer/plan-filter.js.map +1 -1
  900. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  901. package/dist/src/vtab/memory/layer/scan-layer.js +66 -14
  902. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  903. package/dist/src/vtab/memory/layer/scan-plan.d.ts +14 -0
  904. package/dist/src/vtab/memory/layer/scan-plan.d.ts.map +1 -1
  905. package/dist/src/vtab/memory/layer/scan-plan.js +27 -4
  906. package/dist/src/vtab/memory/layer/scan-plan.js.map +1 -1
  907. package/dist/src/vtab/memory/layer/transaction.d.ts.map +1 -1
  908. package/dist/src/vtab/memory/layer/transaction.js +5 -1
  909. package/dist/src/vtab/memory/layer/transaction.js.map +1 -1
  910. package/dist/src/vtab/memory/module.d.ts +17 -0
  911. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  912. package/dist/src/vtab/memory/module.js +82 -3
  913. package/dist/src/vtab/memory/module.js.map +1 -1
  914. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  915. package/dist/src/vtab/memory/table.js +15 -5
  916. package/dist/src/vtab/memory/table.js.map +1 -1
  917. package/dist/src/vtab/memory/types.d.ts +20 -2
  918. package/dist/src/vtab/memory/types.d.ts.map +1 -1
  919. package/dist/src/vtab/memory/utils/predicate.d.ts.map +1 -1
  920. package/dist/src/vtab/memory/utils/predicate.js +46 -24
  921. package/dist/src/vtab/memory/utils/predicate.js.map +1 -1
  922. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts +31 -0
  923. package/dist/src/vtab/memory/utils/primary-key-encode.d.ts.map +1 -0
  924. package/dist/src/vtab/memory/utils/primary-key-encode.js +101 -0
  925. package/dist/src/vtab/memory/utils/primary-key-encode.js.map +1 -0
  926. package/dist/src/vtab/memory/utils/primary-key.d.ts +8 -0
  927. package/dist/src/vtab/memory/utils/primary-key.d.ts.map +1 -1
  928. package/dist/src/vtab/memory/utils/primary-key.js +12 -5
  929. package/dist/src/vtab/memory/utils/primary-key.js.map +1 -1
  930. package/dist/src/vtab/module.d.ts +203 -4
  931. package/dist/src/vtab/module.d.ts.map +1 -1
  932. package/dist/src/vtab/table.d.ts +9 -0
  933. package/dist/src/vtab/table.d.ts.map +1 -1
  934. package/dist/src/vtab/table.js.map +1 -1
  935. package/package.json +6 -5
@@ -3,11 +3,26 @@ import { AlterTableNode } from '../nodes/alter-table-node.js';
3
3
  import { buildTableReference } from './table.js';
4
4
  import { QuereusError } from '../../common/errors.js';
5
5
  import { StatusCode } from '../../common/types.js';
6
+ import { PlanNode } from '../nodes/plan-node.js';
7
+ import { buildExpression } from './expression.js';
8
+ import { buildRowDefaultScope } from './default-scope.js';
9
+ import { validateDeterministicDefault } from '../validation/determinism-validator.js';
10
+ import { tryFoldLiteral } from '../../parser/utils.js';
11
+ import { inferType } from '../../types/registry.js';
12
+ import { columnSchemaToScalarType } from '../type-utils.js';
13
+ import { expressionToString } from '../../emit/ast-stringify.js';
14
+ import { validateReservedTags } from '../../schema/reserved-tags.js';
15
+ import { columnTagDiagnostics, raiseStmtTagDiagnostics } from './tag-diagnostics.js';
16
+ import { planViewBody } from './create-view.js';
6
17
  export function buildAlterTableStmt(ctx, stmt) {
7
18
  const tableRetrieve = buildTableReference({ type: 'table', table: stmt.table }, ctx);
8
19
  const tableReference = tableRetrieve.tableRef; // Extract the actual TableReferenceNode
9
20
  switch (stmt.action.type) {
10
21
  case 'addConstraint': {
22
+ // Reject a typo'd / mis-sited reserved `quereus.*` tag on the constraint at
23
+ // plan-build, mirroring CREATE TABLE's named-constraint leg and SET TAGS — a
24
+ // bad tag can't be silently stored when introduced via ALTER ... ADD CONSTRAINT.
25
+ raiseStmtTagDiagnostics(validateReservedTags(stmt.action.constraint.tags, 'physical-constraint'), stmt);
11
26
  // Convert RowOp[] (e.g., ['insert','update']) to bitmask understood by runtime.
12
27
  const operations = stmt.action.constraint.operations ?? ['insert', 'update'];
13
28
  const constraintWithBitmask = {
@@ -27,16 +42,55 @@ export function buildAlterTableStmt(ctx, stmt) {
27
42
  oldName: stmt.action.oldName,
28
43
  newName: stmt.action.newName,
29
44
  });
30
- case 'addColumn':
45
+ case 'addColumn': {
46
+ const column = stmt.action.column;
47
+ // Reject a typo'd / mis-sited reserved `quereus.*` tag on the new column or any
48
+ // of its inline named constraints at plan-build, before any heavier backfill /
49
+ // check compilation — shares CREATE TABLE's per-column accumulation
50
+ // (`columnTagDiagnostics`) so the two authoring surfaces can't drift.
51
+ raiseStmtTagDiagnostics(columnTagDiagnostics(column), stmt);
52
+ // Validate the DEFAULT through the shared DDL validator (bind params / bare
53
+ // columns / non-determinism rejected; `new.<column>` accepted with its build
54
+ // deferred). This runs before building the backfill so a bare-column default
55
+ // is rejected here rather than silently resolving against the existing columns
56
+ // the backfill scope exposes.
57
+ const defaultConstraint = column.constraints?.find(c => c.type === 'default');
58
+ if (defaultConstraint?.expr) {
59
+ const hasMutationContext = !!tableReference.tableSchema.mutationContext
60
+ && tableReference.tableSchema.mutationContext.length > 0;
61
+ ctx.schemaManager.validateAddColumnDefault(defaultConstraint.expr, column.name, tableReference.tableSchema.name, hasMutationContext);
62
+ }
63
+ const backfill = buildAddColumnBackfill(ctx, tableReference, column);
64
+ // For the per-row (evaluator) default path, enforce any CHECK on the new column
65
+ // against each backfilled row by compiling the predicates here and evaluating them
66
+ // inside the per-row backfill hook (mirrors the NOT NULL per-row path) — a violating
67
+ // row aborts the ALTER before any tree/batch swap. The literal-default path is left to
68
+ // the post-backfill scan (`validateBackfillAgainstChecks`), so checks are only
69
+ // compiled when a backfill is present.
70
+ const checks = backfill ? buildAddColumnChecks(ctx, tableReference, column) : undefined;
31
71
  return new AlterTableNode(ctx.scope, tableReference, {
32
72
  type: 'addColumn',
33
- column: stmt.action.column,
73
+ column,
74
+ backfill,
75
+ checks,
34
76
  });
77
+ }
35
78
  case 'dropColumn':
36
79
  return new AlterTableNode(ctx.scope, tableReference, {
37
80
  type: 'dropColumn',
38
81
  name: stmt.action.name,
39
82
  });
83
+ case 'dropConstraint':
84
+ return new AlterTableNode(ctx.scope, tableReference, {
85
+ type: 'dropConstraint',
86
+ name: stmt.action.name,
87
+ });
88
+ case 'renameConstraint':
89
+ return new AlterTableNode(ctx.scope, tableReference, {
90
+ type: 'renameConstraint',
91
+ oldName: stmt.action.oldName,
92
+ newName: stmt.action.newName,
93
+ });
40
94
  case 'alterPrimaryKey':
41
95
  return new AlterTableNode(ctx.scope, tableReference, {
42
96
  type: 'alterPrimaryKey',
@@ -49,11 +103,166 @@ export function buildAlterTableStmt(ctx, stmt) {
49
103
  setNotNull: stmt.action.setNotNull,
50
104
  setDataType: stmt.action.setDataType,
51
105
  setDefault: stmt.action.setDefault,
106
+ setCollation: stmt.action.setCollation,
52
107
  });
108
+ case 'setTags': {
109
+ // Validate any reserved `quereus.*` tags at the matching site so a typo
110
+ // (e.g. `quereus.expose_implicit_indx`) fails loudly here rather than being
111
+ // stored. The CREATE / declarative paths route tags through the same registry.
112
+ const target = stmt.action.target;
113
+ const site = target.kind === 'column' ? 'physical-column'
114
+ : target.kind === 'constraint' ? 'physical-constraint'
115
+ : 'physical-table';
116
+ // Routed through the shared helper (rather than the policy call inline) so every
117
+ // plan-build tag surface raises through one site and a sited error here now
118
+ // carries the statement's source location too.
119
+ raiseStmtTagDiagnostics(validateReservedTags(stmt.action.tags, site), stmt);
120
+ return new AlterTableNode(ctx.scope, tableReference, {
121
+ type: 'setTags',
122
+ target,
123
+ mode: stmt.action.mode,
124
+ tags: stmt.action.tags,
125
+ });
126
+ }
127
+ case 'dropTags': {
128
+ // DROP TAGS removes tags by key, so there is NO reserved-tag value
129
+ // validation here (dropping a reserved key is legitimate — it removes an
130
+ // override). Resolve the same target plumbing as setTags and let the
131
+ // SchemaManager raise NOTFOUND atomically when a listed key is absent.
132
+ return new AlterTableNode(ctx.scope, tableReference, {
133
+ type: 'dropTags',
134
+ target: stmt.action.target,
135
+ keys: stmt.action.keys,
136
+ });
137
+ }
138
+ case 'setMaintained': {
139
+ // SET MAINTAINED AS <body> — attach / re-attach a derivation. Reuse the
140
+ // CREATE VIEW body gate so a DML body or non-relational body is rejected
141
+ // here with the same sited diagnostics as CREATE MATERIALIZED VIEW. The
142
+ // full shape check (arity/names/types/collations/PK) and the reconcile
143
+ // run in the emitter against the LIVE catalog state — deliberately not
144
+ // here: the build-time schema may be a cached statement's snapshot, and
145
+ // a shape mismatch over the implicit form is no longer an error but a
146
+ // reshape-on-attach (attachMaintainedDerivation), so a build-time arity
147
+ // gate would block legitimate reshapes.
148
+ const tableSchema = tableReference.tableSchema;
149
+ planViewBody(ctx, tableSchema.name, stmt.action.select);
150
+ // Mirror the create-form gate: a generated column would silently diverge
151
+ // from its expression once the body supplies every column's value.
152
+ const generated = tableSchema.columns.find(c => c.generated);
153
+ if (generated) {
154
+ throw new QuereusError(`cannot attach derivation to '${tableSchema.name}': column '${generated.name}' is generated — a maintained table's columns are all derived by the body`, StatusCode.ERROR, undefined, stmt.table.loc?.start.line, stmt.table.loc?.start.column);
155
+ }
156
+ // The module is the table's identity (no `using` clause on attach); it
157
+ // must be able to host a maintained backing.
158
+ if (!tableSchema.vtabModule?.getBackingHost) {
159
+ throw new QuereusError(`cannot attach derivation to '${tableSchema.name}': module '${tableSchema.vtabModuleName}' cannot host a maintained table (it does not implement the backing-host capability)`, StatusCode.UNSUPPORTED, undefined, stmt.table.loc?.start.line, stmt.table.loc?.start.column);
160
+ }
161
+ return new AlterTableNode(ctx.scope, tableReference, {
162
+ // Any `with defaults (…)` rides inside stmt.action.select.
163
+ type: 'setMaintained',
164
+ columns: stmt.action.columns,
165
+ select: stmt.action.select,
166
+ });
167
+ }
168
+ case 'dropMaintained':
169
+ // Maintained-ness is checked in the emitter against the LIVE table (the
170
+ // build-time schema may be a cached statement's snapshot).
171
+ return new AlterTableNode(ctx.scope, tableReference, { type: 'dropMaintained' });
53
172
  default:
54
173
  throw new QuereusError(
55
174
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
175
  `Unknown ALTER TABLE action: ${stmt.action.type}`, StatusCode.INTERNAL);
57
176
  }
58
177
  }
178
+ /**
179
+ * Compile the per-row backfill of an ADD COLUMN whose DEFAULT does not fold to a
180
+ * literal (e.g. `new.<col>`). Mirrors the single-source INSERT row-expansion and the
181
+ * view-write key default: the default is built against the table's *existing* columns
182
+ * as the "supplied" row, so `new.<col>` resolves to the existing row's sibling during
183
+ * backfill. Returns `undefined` for a missing or literal-folding default (the module
184
+ * bulk-writes those), so the common case allocates nothing.
185
+ */
186
+ function buildAddColumnBackfill(ctx, tableReference, columnDef) {
187
+ const defaultExpr = columnDef.constraints?.find(c => c.type === 'default')?.expr;
188
+ if (!defaultExpr)
189
+ return undefined;
190
+ // Literal / NULL defaults fold and are bulk-written by the module — no per-row node.
191
+ if (tryFoldLiteral(defaultExpr) !== undefined)
192
+ return undefined;
193
+ const tableSchema = tableReference.tableSchema;
194
+ // Fresh attributes for the existing columns, referenced only by this default's
195
+ // `new.<col>` column refs and resolved at runtime via the row slot the emitter
196
+ // installs over each existing row. Minting fresh (rather than reusing the table
197
+ // reference's attributes) keeps the node self-contained so the optimizer can't
198
+ // dangle it.
199
+ const rowAttrs = tableSchema.columns.map(column => ({
200
+ id: PlanNode.nextAttrId(),
201
+ name: column.name,
202
+ type: columnSchemaToScalarType(column),
203
+ sourceRelation: 'add-column-backfill',
204
+ }));
205
+ const rowScope = buildRowDefaultScope(ctx.scope, tableSchema.columns, rowAttrs);
206
+ const node = buildExpression({ ...ctx, scope: rowScope }, defaultExpr);
207
+ if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
208
+ validateDeterministicDefault(node, columnDef.name, tableSchema.name);
209
+ }
210
+ const rowDescriptor = [];
211
+ rowAttrs.forEach((attr, index) => { rowDescriptor[attr.id] = index; });
212
+ return { node, rowDescriptor };
213
+ }
214
+ /**
215
+ * Compile the column-level CHECK predicates of an ADD COLUMN whose DEFAULT does not fold
216
+ * to a literal, so they can be enforced per backfilled row inside the backfill hook. Each
217
+ * predicate is built against a row scope covering the table's *existing* columns plus the
218
+ * *new* column, so a CHECK referencing the new column (bare `<col>` or `new.<col>`) and any
219
+ * existing sibling resolves. The new column sits at position `existingColumns.length` in the
220
+ * row descriptor; the emitter sets that slot to `[...existingRow, backfilledValue]` per row.
221
+ * Returns `undefined` when the column carries no CHECK (the common case allocates nothing).
222
+ */
223
+ function buildAddColumnChecks(ctx, tableReference, columnDef) {
224
+ const checkConstraints = (columnDef.constraints ?? []).filter(c => c.type === 'check' && c.expr);
225
+ if (checkConstraints.length === 0)
226
+ return undefined;
227
+ const tableSchema = tableReference.tableSchema;
228
+ // Fresh attributes for the existing columns followed by the new column. The new column's
229
+ // logical type / nullability come from the column def (same inference the schema builder
230
+ // uses); refs in the CHECK resolve through the row slot the emitter installs per row.
231
+ const existingAttrs = tableSchema.columns.map(column => ({
232
+ id: PlanNode.nextAttrId(),
233
+ name: column.name,
234
+ type: columnSchemaToScalarType(column),
235
+ sourceRelation: 'add-column-check',
236
+ }));
237
+ const newColNotNull = (columnDef.constraints ?? []).some(c => c.type === 'notNull');
238
+ // Carry the new column's declared collation so a CHECK comparison over it (e.g.
239
+ // `c = 'ABC'` on a `collate nocase` column) resolves the same collation at backfill
240
+ // time as it would at write time.
241
+ const newColCollation = columnDef.constraints?.find(c => c.type === 'collate')?.collation;
242
+ const newColAttr = {
243
+ id: PlanNode.nextAttrId(),
244
+ name: columnDef.name,
245
+ type: {
246
+ typeClass: 'scalar',
247
+ logicalType: inferType(columnDef.dataType),
248
+ nullable: !newColNotNull,
249
+ isReadOnly: false,
250
+ collationName: newColCollation,
251
+ // From an explicit COLLATE constraint on the new column — 'declared' by definition.
252
+ collationSource: newColCollation !== undefined ? 'declared' : undefined,
253
+ },
254
+ sourceRelation: 'add-column-check',
255
+ };
256
+ const rowAttrs = [...existingAttrs, newColAttr];
257
+ const targetColumns = [...tableSchema.columns, { name: columnDef.name }];
258
+ const rowScope = buildRowDefaultScope(ctx.scope, targetColumns, rowAttrs);
259
+ const predicates = checkConstraints.map(con => ({
260
+ node: buildExpression({ ...ctx, scope: rowScope }, con.expr),
261
+ name: con.name,
262
+ exprText: expressionToString(con.expr),
263
+ }));
264
+ const rowDescriptor = [];
265
+ rowAttrs.forEach((attr, index) => { rowDescriptor[attr.id] = index; });
266
+ return { predicates, rowDescriptor };
267
+ }
59
268
  //# sourceMappingURL=alter-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.js","sourceRoot":"","sources":["../../../../src/planner/building/alter-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,UAAU,mBAAmB,CACjC,GAAoB,EACpB,IAAwB;IAExB,MAAM,aAAa,GAAG,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;IACrF,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,wCAAwC;IAEvF,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,gFAAgF;YAChF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC;YAE5E,MAAM,qBAAqB,GAAG;gBAC5B,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;gBACzB,UAAU;aACX,CAAC;YAEF,OAAO,IAAI,iBAAiB,CAC1B,GAAG,CAAC,KAAK,EACT,cAAc,EACd,qBAAqB,CACtB,CAAC;QACN,CAAC;QAEC,KAAK,aAAa;YAChB,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnD,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC7B,CAAC,CAAC;QAEL,KAAK,cAAc;YACjB,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnD,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC7B,CAAC,CAAC;QAEL,KAAK,WAAW;YACd,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnD,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;aAC3B,CAAC,CAAC;QAEL,KAAK,YAAY;YACf,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnD,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;aACvB,CAAC,CAAC;QAEL,KAAK,iBAAiB;YACpB,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnD,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC7B,CAAC,CAAC;QAEL,KAAK,aAAa;YAChB,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnD,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;gBACpC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;aACnC,CAAC,CAAC;QAEL;YACE,MAAM,IAAI,YAAY;YACpB,8DAA8D;YAC9D,+BAAgC,IAAI,CAAC,MAAc,CAAC,IAAI,EAAE,EAC1D,UAAU,CAAC,QAAQ,CACpB,CAAC;IACN,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"alter-table.js","sourceRoot":"","sources":["../../../../src/planner/building/alter-table.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAqB9D,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,SAAS,CAgFvF"}
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2B9D,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,SAAS,CA8FvF"}
@@ -5,6 +5,7 @@ import { buildCreateIndexStmt } from './ddl.js';
5
5
  import { buildDropTableStmt } from './drop-table.js';
6
6
  import { buildCreateViewStmt } from './create-view.js';
7
7
  import { buildDropViewStmt } from './drop-view.js';
8
+ import { buildCreateMaterializedViewStmt, buildRefreshMaterializedViewStmt, buildDropMaterializedViewStmt, } from './materialized-view.js';
8
9
  import { buildCreateAssertionStmt } from './create-assertion.js';
9
10
  import { buildDropAssertionStmt } from './drop-assertion.js';
10
11
  import { buildDropIndexStmt } from './drop-index.js';
@@ -12,13 +13,14 @@ import { buildInsertStmt } from './insert.js';
12
13
  import { buildUpdateStmt } from './update.js';
13
14
  import { buildDeleteStmt } from './delete.js';
14
15
  import { buildAlterTableStmt } from './alter-table.js';
16
+ import { buildAlterViewStmt, buildAlterMaterializedViewStmt, buildAlterIndexStmt } from './set-object-tags.js';
15
17
  import { buildBeginStmt, buildCommitStmt, buildRollbackStmt, buildSavepointStmt, buildReleaseStmt } from './transaction.js';
16
18
  import { buildPragmaStmt } from './pragma.js';
17
19
  import { buildAnalyzeStmt } from './analyze.js';
18
20
  import { buildValuesStmt } from './select.js';
19
21
  import { quereusError } from '../../common/errors.js';
20
22
  import { StatusCode } from '../../common/types.js';
21
- import { buildDeclareSchemaStmt, buildDiffSchemaStmt, buildApplySchemaStmt, buildExplainSchemaStmt } from './declare-schema.js';
23
+ import { buildDeclareSchemaStmt, buildDeclareLensStmt, buildDiffSchemaStmt, buildApplySchemaStmt, buildExplainSchemaStmt } from './declare-schema.js';
22
24
  export function buildBlock(ctx, statements) {
23
25
  const plannedStatements = statements.map((stmt) => {
24
26
  switch (stmt.type) {
@@ -31,6 +33,10 @@ export function buildBlock(ctx, statements) {
31
33
  return buildCreateIndexStmt(ctx, stmt);
32
34
  case 'createView':
33
35
  return buildCreateViewStmt(ctx, stmt);
36
+ case 'createMaterializedView':
37
+ return buildCreateMaterializedViewStmt(ctx, stmt);
38
+ case 'refreshMaterializedView':
39
+ return buildRefreshMaterializedViewStmt(ctx, stmt);
34
40
  case 'createAssertion':
35
41
  return buildCreateAssertionStmt(ctx, stmt);
36
42
  case 'drop': {
@@ -41,6 +47,9 @@ export function buildBlock(ctx, statements) {
41
47
  else if (dropStmt.objectType === 'view') {
42
48
  return buildDropViewStmt(ctx, dropStmt);
43
49
  }
50
+ else if (dropStmt.objectType === 'materializedView') {
51
+ return buildDropMaterializedViewStmt(ctx, dropStmt);
52
+ }
44
53
  else if (dropStmt.objectType === 'assertion') {
45
54
  return buildDropAssertionStmt(ctx, dropStmt);
46
55
  }
@@ -74,10 +83,18 @@ export function buildBlock(ctx, statements) {
74
83
  return buildAnalyzeStmt(ctx, stmt);
75
84
  case 'alterTable':
76
85
  return buildAlterTableStmt(ctx, stmt);
86
+ case 'alterView':
87
+ return buildAlterViewStmt(ctx, stmt);
88
+ case 'alterMaterializedView':
89
+ return buildAlterMaterializedViewStmt(ctx, stmt);
90
+ case 'alterIndex':
91
+ return buildAlterIndexStmt(ctx, stmt);
77
92
  case 'values':
78
93
  return buildValuesStmt(ctx, stmt);
79
94
  case 'declareSchema':
80
95
  return buildDeclareSchemaStmt(ctx, stmt);
96
+ case 'declareLens':
97
+ return buildDeclareLensStmt(ctx, stmt);
81
98
  case 'diffSchema':
82
99
  return buildDiffSchemaStmt(ctx, stmt);
83
100
  case 'applySchema':
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../src/planner/building/block.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../src/planner/building/block.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
1
  import type { PlanningContext } from '../planning-context.js';
2
- import type { TableSchema } from '../../schema/table.js';
2
+ import type { TableSchema, RowConstraintSchema } from '../../schema/table.js';
3
3
  import { RowOpFlag } from '../../schema/table.js';
4
4
  import type { Attribute, RowDescriptor } from '../nodes/plan-node.js';
5
5
  import type { ConstraintCheck, NotNullDefaultPlan } from '../nodes/constraint-check-node.js';
6
+ import type { Scope } from '../scopes/scope.js';
6
7
  /**
7
8
  * Builds constraint check expressions at plan time.
8
9
  * This allows the optimizer to see and optimize constraint expressions.
9
10
  */
10
- export declare function buildConstraintChecks(ctx: PlanningContext, tableSchema: TableSchema, operation: RowOpFlag, oldAttributes: Attribute[], newAttributes: Attribute[], _flatRowDescriptor: RowDescriptor, contextAttributes?: Attribute[]): ConstraintCheck[];
11
+ export declare function buildConstraintChecks(ctx: PlanningContext, tableSchema: TableSchema, operation: RowOpFlag, oldAttributes: Attribute[], newAttributes: Attribute[], _flatRowDescriptor: RowDescriptor, contextAttributes?: Attribute[],
12
+ /**
13
+ * Extra CHECK constraints to enforce alongside the table's own — already
14
+ * resolved in this table's column space. The lens layer threads its logical
15
+ * `enforced-row-local` checks (rewritten from logical→basis terms) through here
16
+ * so they fire on a write through the lens (see `planner/mutation/lens-enforcement.ts`).
17
+ */
18
+ additionalConstraints?: ReadonlyArray<RowConstraintSchema>): ConstraintCheck[];
11
19
  /**
12
20
  * Pre-builds DEFAULT-value evaluators for every NOT NULL column that has a
13
21
  * DEFAULT clause. The returned plans are consumed by the constraint-check
@@ -15,8 +23,28 @@ export declare function buildConstraintChecks(ctx: PlanningContext, tableSchema:
15
23
  * (per SQLite OR REPLACE semantics on NOT NULL).
16
24
  *
17
25
  * Defaults are evaluated against the same scope used for CHECK constraints:
18
- * unqualified column names resolve to NEW attributes (which is fine — defaults
19
- * may not reference columns, but we share the scope for consistency).
26
+ * every column resolves as `new.<col>` (and unqualified, unless shadowed by a
27
+ * mutation-context variable), so a NOT NULL default may read a sibling via
28
+ * `new.<column>` just like the row-expansion path. Note the timing difference:
29
+ * this substitution fires when REPLACE swaps in a default for an explicit NULL,
30
+ * by which point the row is fully materialised — so `new.<col>` here sees the
31
+ * final row value of *any* column, whereas the row-expansion path exposes only
32
+ * the columns the INSERT actually supplied (omitted siblings are unresolved
33
+ * there to avoid a default-evaluation-order race).
34
+ *
35
+ * Error attribution for a NOT NULL violation is NOT decided here: it happens at
36
+ * check time in `checkNotNullConstraints` by column index (the first NOT-NULL
37
+ * column with a NULL effective value), so don't look for it in this builder.
38
+ */
39
+ export declare function buildNotNullDefaults(ctx: PlanningContext, tableSchema: TableSchema, newAttributes: Attribute[], contextAttributes?: Attribute[],
40
+ /**
41
+ * Parent scope for `new.<col>` resolution, threaded by a synthetic decomposition /
42
+ * multi-source member insert (see {@link buildInsertStmt}'s `defaultRowContextScope`).
43
+ * It exposes the **produced logical row's** supplied columns as `new.<col>`, so a NOT
44
+ * NULL column's default can correlate on a sibling logical column the member's own base
45
+ * table does not carry (e.g. an anchor key-column default
46
+ * `default (select … where parent.key = new.<fk>)`). The member's own NEW columns are
47
+ * registered below and shadow it. `undefined` (⇒ `ctx.scope`) for an ordinary insert.
20
48
  */
21
- export declare function buildNotNullDefaults(ctx: PlanningContext, tableSchema: TableSchema, newAttributes: Attribute[], contextAttributes?: Attribute[]): NotNullDefaultPlan[];
49
+ defaultRowContextScope?: Scope): NotNullDefaultPlan[];
22
50
  //# sourceMappingURL=constraint-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constraint-builder.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/constraint-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAmB7F;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,kBAAkB,EAAE,aAAa,EACjC,iBAAiB,GAAE,SAAS,EAAO,GAClC,eAAe,EAAE,CAyInB;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,SAAS,EAAO,GAClC,kBAAkB,EAAE,CA0DtB"}
1
+ {"version":3,"file":"constraint-builder.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/constraint-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE7F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAqBhD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,SAAS,EAAE,EAC1B,aAAa,EAAE,SAAS,EAAE,EAC1B,kBAAkB,EAAE,aAAa,EACjC,iBAAiB,GAAE,SAAS,EAAO;AACnC;;;;;GAKG;AACH,qBAAqB,GAAE,aAAa,CAAC,mBAAmB,CAAM,GAC7D,eAAe,EAAE,CAsJnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,EACpB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,SAAS,EAAE,EAC1B,iBAAiB,GAAE,SAAS,EAAO;AACnC;;;;;;;;GAQG;AACH,sBAAsB,CAAC,EAAE,KAAK,GAC7B,kBAAkB,EAAE,CAqDtB"}
@@ -5,6 +5,9 @@ import { PlanNodeType } from '../nodes/plan-node-type.js';
5
5
  import { ColumnReferenceNode } from '../nodes/reference.js';
6
6
  import { TableReferenceNode } from '../nodes/reference.js';
7
7
  import { validateDeterministicConstraint } from '../validation/determinism-validator.js';
8
+ import { columnSchemaToScalarType } from '../type-utils.js';
9
+ import { stripSelfQualifierInCheckExpression } from '../../schema/rename-rewriter.js';
10
+ import { cloneExpr } from '../mutation/scope-transform.js';
8
11
  /**
9
12
  * Determines if a constraint should be checked for the given operation
10
13
  */
@@ -16,7 +19,14 @@ function shouldCheckConstraint(constraint, operation) {
16
19
  * Builds constraint check expressions at plan time.
17
20
  * This allows the optimizer to see and optimize constraint expressions.
18
21
  */
19
- export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes, newAttributes, _flatRowDescriptor, contextAttributes = []) {
22
+ export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes, newAttributes, _flatRowDescriptor, contextAttributes = [],
23
+ /**
24
+ * Extra CHECK constraints to enforce alongside the table's own — already
25
+ * resolved in this table's column space. The lens layer threads its logical
26
+ * `enforced-row-local` checks (rewritten from logical→basis terms) through here
27
+ * so they fire on a write through the lens (see `planner/mutation/lens-enforcement.ts`).
28
+ */
29
+ additionalConstraints = []) {
20
30
  // Build attribute ID mappings for column registration
21
31
  const newAttrIdByCol = {};
22
32
  const oldAttrIdByCol = {};
@@ -32,9 +42,10 @@ export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes
32
42
  oldAttrIdByCol[column.name.toLowerCase()] = attr.id;
33
43
  }
34
44
  });
35
- // Filter constraints by operation
36
- const applicableConstraints = tableSchema.checkConstraints
45
+ // Filter constraints by operation (the table's own plus any threaded extras)
46
+ const applicableConstraints = [...tableSchema.checkConstraints, ...additionalConstraints]
37
47
  .filter(constraint => shouldCheckConstraint(constraint, operation));
48
+ const resolveColumnInSource = (schemaName, tableName, columnName) => ctx.schemaManager.getSchema(schemaName)?.getTable(tableName)?.columnIndexMap.has(columnName.toLowerCase()) ?? false;
38
49
  // Build expression nodes for each constraint
39
50
  return applicableConstraints.map(constraint => {
40
51
  // Create scope with OLD/NEW column access for constraint evaluation
@@ -55,12 +66,10 @@ export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes
55
66
  // Register NEW.col and unqualified col (defaults to NEW for INSERT/UPDATE, OLD for DELETE)
56
67
  const newAttrId = newAttrIdByCol[colNameLower];
57
68
  if (newAttrId !== undefined) {
58
- const newColumnType = {
59
- typeClass: 'scalar',
60
- logicalType: tableColumn.logicalType,
61
- nullable: !tableColumn.notNull,
62
- isReadOnly: false
63
- };
69
+ // Write-time CHECK comparisons must resolve the column's declared
70
+ // collation, matching read-path queries, ALTER backfill validation,
71
+ // and assertion enforcement (all compile plain SQL over the schema).
72
+ const newColumnType = columnSchemaToScalarType(tableColumn);
64
73
  // NEW.column
65
74
  constraintScope.registerSymbol(`new.${colNameLower}`, (exp, s) => new ColumnReferenceNode(s, exp, newColumnType, newAttrId, tableColIndex));
66
75
  // For INSERT/UPDATE, unqualified column defaults to NEW
@@ -71,12 +80,8 @@ export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes
71
80
  // Register OLD.col
72
81
  const oldAttrId = oldAttrIdByCol[colNameLower];
73
82
  if (oldAttrId !== undefined) {
74
- const oldColumnType = {
75
- typeClass: 'scalar',
76
- logicalType: tableColumn.logicalType,
77
- nullable: true, // OLD values can be NULL (especially for INSERT)
78
- isReadOnly: false
79
- };
83
+ // OLD values can be NULL (especially for INSERT)
84
+ const oldColumnType = columnSchemaToScalarType(tableColumn, { nullable: true });
80
85
  // OLD.column
81
86
  constraintScope.registerSymbol(`old.${colNameLower}`, (exp, s) => new ColumnReferenceNode(s, exp, oldColumnType, oldAttrId, tableColIndex));
82
87
  // For DELETE, unqualified column defaults to OLD
@@ -98,10 +103,25 @@ export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes
98
103
  // This ensures unqualified table references in subqueries resolve to the same schema
99
104
  const constraintSchemaPath = [tableSchema.schemaName];
100
105
  const constraintCtx = { ...ctx, scope: constraintScope, schemaPath: constraintSchemaPath };
101
- const expression = buildExpression(constraintCtx, constraint.expr);
102
- // Validate that the constraint expression is deterministic
106
+ // Fold table-qualified self-references (`check (t.qty > 0)`) to the bare
107
+ // column form the row-context scope registers. Done as an AST rewrite on a
108
+ // clone (never the stored constraint) rather than by seeding `<table>.<col>`
109
+ // scope keys: this scope is an ancestor of every subquery planned inside
110
+ // the CHECK, and qualified keys would shadow inner relations through join
111
+ // peers' parent-chain fallback.
112
+ let constraintExpr = constraint.expr;
113
+ const stripped = cloneExpr(constraint.expr);
114
+ if (stripSelfQualifierInCheckExpression(stripped, tableSchema.name, tableSchema.schemaName, resolveColumnInSource)) {
115
+ constraintExpr = stripped;
116
+ }
117
+ const expression = buildExpression(constraintCtx, constraintExpr);
118
+ // Validate that the constraint expression is deterministic — skip when
119
+ // `nondeterministic_schema` is on; per-row resolution + replay-at-module
120
+ // boundary keeps the capture safe even with non-det inside CHECKs.
103
121
  const constraintName = constraint.name ?? `_check_${tableSchema.name}`;
104
- validateDeterministicConstraint(expression, constraintName, tableSchema.name);
122
+ if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
123
+ validateDeterministicConstraint(expression, constraintName, tableSchema.name);
124
+ }
105
125
  // Heuristic: auto-defer if the expression contains a subquery
106
126
  // or references committed.* state (which necessarily implies a subquery, but
107
127
  // this defensive check ensures committed-ref constraints are always deferred
@@ -131,10 +151,30 @@ export function buildConstraintChecks(ctx, tableSchema, operation, oldAttributes
131
151
  * (per SQLite OR REPLACE semantics on NOT NULL).
132
152
  *
133
153
  * Defaults are evaluated against the same scope used for CHECK constraints:
134
- * unqualified column names resolve to NEW attributes (which is fine — defaults
135
- * may not reference columns, but we share the scope for consistency).
154
+ * every column resolves as `new.<col>` (and unqualified, unless shadowed by a
155
+ * mutation-context variable), so a NOT NULL default may read a sibling via
156
+ * `new.<column>` just like the row-expansion path. Note the timing difference:
157
+ * this substitution fires when REPLACE swaps in a default for an explicit NULL,
158
+ * by which point the row is fully materialised — so `new.<col>` here sees the
159
+ * final row value of *any* column, whereas the row-expansion path exposes only
160
+ * the columns the INSERT actually supplied (omitted siblings are unresolved
161
+ * there to avoid a default-evaluation-order race).
162
+ *
163
+ * Error attribution for a NOT NULL violation is NOT decided here: it happens at
164
+ * check time in `checkNotNullConstraints` by column index (the first NOT-NULL
165
+ * column with a NULL effective value), so don't look for it in this builder.
166
+ */
167
+ export function buildNotNullDefaults(ctx, tableSchema, newAttributes, contextAttributes = [],
168
+ /**
169
+ * Parent scope for `new.<col>` resolution, threaded by a synthetic decomposition /
170
+ * multi-source member insert (see {@link buildInsertStmt}'s `defaultRowContextScope`).
171
+ * It exposes the **produced logical row's** supplied columns as `new.<col>`, so a NOT
172
+ * NULL column's default can correlate on a sibling logical column the member's own base
173
+ * table does not carry (e.g. an anchor key-column default
174
+ * `default (select … where parent.key = new.<fk>)`). The member's own NEW columns are
175
+ * registered below and shadow it. `undefined` (⇒ `ctx.scope`) for an ordinary insert.
136
176
  */
137
- export function buildNotNullDefaults(ctx, tableSchema, newAttributes, contextAttributes = []) {
177
+ defaultRowContextScope) {
138
178
  const result = [];
139
179
  for (let columnIndex = 0; columnIndex < tableSchema.columns.length; columnIndex++) {
140
180
  const column = tableSchema.columns[columnIndex];
@@ -143,7 +183,7 @@ export function buildNotNullDefaults(ctx, tableSchema, newAttributes, contextAtt
143
183
  const defaultExpr = column.defaultValue;
144
184
  if (!defaultExpr || typeof defaultExpr !== 'object' || !('type' in defaultExpr))
145
185
  continue;
146
- const scope = new RegisteredScope(ctx.scope);
186
+ const scope = new RegisteredScope(defaultRowContextScope ?? ctx.scope);
147
187
  const reservedKeys = new Set();
148
188
  // Mutation context variables first so they shadow column names if conflicts exist
149
189
  // (matches createRowExpansionProjection's resolution order).
@@ -164,12 +204,7 @@ export function buildNotNullDefaults(ctx, tableSchema, newAttributes, contextAtt
164
204
  const attr = newAttributes[idx];
165
205
  if (!attr)
166
206
  return;
167
- const colType = {
168
- typeClass: 'scalar',
169
- logicalType: col.logicalType,
170
- nullable: !col.notNull,
171
- isReadOnly: false,
172
- };
207
+ const colType = columnSchemaToScalarType(col);
173
208
  const colKey = col.name.toLowerCase();
174
209
  if (!reservedKeys.has(colKey)) {
175
210
  scope.registerSymbol(colKey, (exp, s) => new ColumnReferenceNode(s, exp, colType, attr.id, idx));