@quereus/quereus 4.8.0 → 4.10.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 (280) hide show
  1. package/dist/src/core/database.d.ts +6 -0
  2. package/dist/src/core/database.d.ts.map +1 -1
  3. package/dist/src/core/database.js +45 -5
  4. package/dist/src/core/database.js.map +1 -1
  5. package/dist/src/core/statement.d.ts.map +1 -1
  6. package/dist/src/core/statement.js +74 -15
  7. package/dist/src/core/statement.js.map +1 -1
  8. package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
  9. package/dist/src/func/builtins/aggregate.js +88 -35
  10. package/dist/src/func/builtins/aggregate.js.map +1 -1
  11. package/dist/src/func/builtins/conversion.d.ts +5 -0
  12. package/dist/src/func/builtins/conversion.d.ts.map +1 -1
  13. package/dist/src/func/builtins/conversion.js +16 -2
  14. package/dist/src/func/builtins/conversion.js.map +1 -1
  15. package/dist/src/func/builtins/explain.d.ts.map +1 -1
  16. package/dist/src/func/builtins/explain.js +9 -2
  17. package/dist/src/func/builtins/explain.js.map +1 -1
  18. package/dist/src/func/builtins/index.d.ts.map +1 -1
  19. package/dist/src/func/builtins/index.js +5 -2
  20. package/dist/src/func/builtins/index.js.map +1 -1
  21. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  22. package/dist/src/func/builtins/scalar.js +4 -2
  23. package/dist/src/func/builtins/scalar.js.map +1 -1
  24. package/dist/src/func/builtins/string.d.ts +2 -0
  25. package/dist/src/func/builtins/string.d.ts.map +1 -1
  26. package/dist/src/func/builtins/string.js +60 -4
  27. package/dist/src/func/builtins/string.js.map +1 -1
  28. package/dist/src/func/registration.d.ts +6 -0
  29. package/dist/src/func/registration.d.ts.map +1 -1
  30. package/dist/src/func/registration.js +1 -0
  31. package/dist/src/func/registration.js.map +1 -1
  32. package/dist/src/index.d.ts +7 -3
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/index.js +21 -2
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/src/planner/building/constraint-builder.js +1 -1
  37. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  38. package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
  39. package/dist/src/planner/nodes/scalar.js +13 -1
  40. package/dist/src/planner/nodes/scalar.js.map +1 -1
  41. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.d.ts.map +1 -1
  42. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js +121 -51
  43. package/dist/src/planner/rules/retrieve/rule-grow-retrieve.js.map +1 -1
  44. package/dist/src/planner/rules/shared/index-style-context.d.ts +14 -4
  45. package/dist/src/planner/rules/shared/index-style-context.d.ts.map +1 -1
  46. package/dist/src/planner/rules/shared/index-style-context.js +14 -4
  47. package/dist/src/planner/rules/shared/index-style-context.js.map +1 -1
  48. package/dist/src/runtime/emission-context.d.ts +14 -1
  49. package/dist/src/runtime/emission-context.d.ts.map +1 -1
  50. package/dist/src/runtime/emission-context.js +17 -5
  51. package/dist/src/runtime/emission-context.js.map +1 -1
  52. package/dist/src/runtime/emit/aggregate-setup.d.ts +44 -8
  53. package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -1
  54. package/dist/src/runtime/emit/aggregate-setup.js +79 -15
  55. package/dist/src/runtime/emit/aggregate-setup.js.map +1 -1
  56. package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
  57. package/dist/src/runtime/emit/aggregate.js +21 -106
  58. package/dist/src/runtime/emit/aggregate.js.map +1 -1
  59. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  60. package/dist/src/runtime/emit/alter-table.js +212 -155
  61. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  62. package/dist/src/runtime/emit/asof-scan.js +1 -1
  63. package/dist/src/runtime/emit/asof-scan.js.map +1 -1
  64. package/dist/src/runtime/emit/assertion-drop-guard.d.ts +26 -12
  65. package/dist/src/runtime/emit/assertion-drop-guard.d.ts.map +1 -1
  66. package/dist/src/runtime/emit/assertion-drop-guard.js +45 -26
  67. package/dist/src/runtime/emit/assertion-drop-guard.js.map +1 -1
  68. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts +6 -6
  69. package/dist/src/runtime/emit/assertion-rename-helpers.d.ts.map +1 -1
  70. package/dist/src/runtime/emit/assertion-rename-helpers.js +18 -20
  71. package/dist/src/runtime/emit/assertion-rename-helpers.js.map +1 -1
  72. package/dist/src/runtime/emit/between.d.ts +2 -0
  73. package/dist/src/runtime/emit/between.d.ts.map +1 -1
  74. package/dist/src/runtime/emit/between.js +7 -8
  75. package/dist/src/runtime/emit/between.js.map +1 -1
  76. package/dist/src/runtime/emit/binary.d.ts +27 -5
  77. package/dist/src/runtime/emit/binary.d.ts.map +1 -1
  78. package/dist/src/runtime/emit/binary.js +278 -187
  79. package/dist/src/runtime/emit/binary.js.map +1 -1
  80. package/dist/src/runtime/emit/case.d.ts +34 -0
  81. package/dist/src/runtime/emit/case.d.ts.map +1 -1
  82. package/dist/src/runtime/emit/case.js +18 -11
  83. package/dist/src/runtime/emit/case.js.map +1 -1
  84. package/dist/src/runtime/emit/cast.d.ts +2 -0
  85. package/dist/src/runtime/emit/cast.d.ts.map +1 -1
  86. package/dist/src/runtime/emit/cast.js +7 -5
  87. package/dist/src/runtime/emit/cast.js.map +1 -1
  88. package/dist/src/runtime/emit/column-reference.d.ts +3 -1
  89. package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
  90. package/dist/src/runtime/emit/column-reference.js +6 -2
  91. package/dist/src/runtime/emit/column-reference.js.map +1 -1
  92. package/dist/src/runtime/emit/column-rename-cascade.d.ts +84 -0
  93. package/dist/src/runtime/emit/column-rename-cascade.d.ts.map +1 -0
  94. package/dist/src/runtime/emit/column-rename-cascade.js +134 -0
  95. package/dist/src/runtime/emit/column-rename-cascade.js.map +1 -0
  96. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  97. package/dist/src/runtime/emit/dml-executor.js +21 -0
  98. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  99. package/dist/src/runtime/emit/drop-column-guards.d.ts +82 -53
  100. package/dist/src/runtime/emit/drop-column-guards.d.ts.map +1 -1
  101. package/dist/src/runtime/emit/drop-column-guards.js +155 -90
  102. package/dist/src/runtime/emit/drop-column-guards.js.map +1 -1
  103. package/dist/src/runtime/emit/drop-table.d.ts.map +1 -1
  104. package/dist/src/runtime/emit/drop-table.js +5 -0
  105. package/dist/src/runtime/emit/drop-table.js.map +1 -1
  106. package/dist/src/runtime/emit/drop-view.d.ts.map +1 -1
  107. package/dist/src/runtime/emit/drop-view.js +5 -0
  108. package/dist/src/runtime/emit/drop-view.js.map +1 -1
  109. package/dist/src/runtime/emit/expression-drop-guard.d.ts +57 -0
  110. package/dist/src/runtime/emit/expression-drop-guard.d.ts.map +1 -0
  111. package/dist/src/runtime/emit/expression-drop-guard.js +82 -0
  112. package/dist/src/runtime/emit/expression-drop-guard.js.map +1 -0
  113. package/dist/src/runtime/emit/filter.d.ts +1 -1
  114. package/dist/src/runtime/emit/filter.js +1 -1
  115. package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
  116. package/dist/src/runtime/emit/hash-aggregate.js +18 -88
  117. package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
  118. package/dist/src/runtime/emit/literal.d.ts +14 -1
  119. package/dist/src/runtime/emit/literal.d.ts.map +1 -1
  120. package/dist/src/runtime/emit/literal.js +33 -7
  121. package/dist/src/runtime/emit/literal.js.map +1 -1
  122. package/dist/src/runtime/emit/materialized-view-helpers.d.ts +33 -10
  123. package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
  124. package/dist/src/runtime/emit/materialized-view-helpers.js +158 -49
  125. package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
  126. package/dist/src/runtime/emit/materialized-view.d.ts.map +1 -1
  127. package/dist/src/runtime/emit/materialized-view.js +3 -0
  128. package/dist/src/runtime/emit/materialized-view.js.map +1 -1
  129. package/dist/src/runtime/emit/parameter.d.ts +3 -1
  130. package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
  131. package/dist/src/runtime/emit/parameter.js +7 -2
  132. package/dist/src/runtime/emit/parameter.js.map +1 -1
  133. package/dist/src/runtime/emit/scalar-function.d.ts +29 -1
  134. package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
  135. package/dist/src/runtime/emit/scalar-function.js +66 -16
  136. package/dist/src/runtime/emit/scalar-function.js.map +1 -1
  137. package/dist/src/runtime/emit/scalar-op.d.ts +63 -0
  138. package/dist/src/runtime/emit/scalar-op.d.ts.map +1 -0
  139. package/dist/src/runtime/emit/scalar-op.js +37 -0
  140. package/dist/src/runtime/emit/scalar-op.js.map +1 -0
  141. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  142. package/dist/src/runtime/emit/scan.js +19 -1
  143. package/dist/src/runtime/emit/scan.js.map +1 -1
  144. package/dist/src/runtime/emit/temporal-arithmetic.d.ts +18 -8
  145. package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
  146. package/dist/src/runtime/emit/temporal-arithmetic.js +29 -311
  147. package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
  148. package/dist/src/runtime/emit/unary.d.ts +2 -0
  149. package/dist/src/runtime/emit/unary.d.ts.map +1 -1
  150. package/dist/src/runtime/emit/unary.js +125 -53
  151. package/dist/src/runtime/emit/unary.js.map +1 -1
  152. package/dist/src/runtime/emitters.d.ts +22 -0
  153. package/dist/src/runtime/emitters.d.ts.map +1 -1
  154. package/dist/src/runtime/emitters.js +29 -0
  155. package/dist/src/runtime/emitters.js.map +1 -1
  156. package/dist/src/runtime/scalar-fusion.d.ts +47 -0
  157. package/dist/src/runtime/scalar-fusion.d.ts.map +1 -0
  158. package/dist/src/runtime/scalar-fusion.js +275 -0
  159. package/dist/src/runtime/scalar-fusion.js.map +1 -0
  160. package/dist/src/runtime/strict-flags.d.ts +9 -0
  161. package/dist/src/runtime/strict-flags.d.ts.map +1 -1
  162. package/dist/src/runtime/strict-flags.js +9 -0
  163. package/dist/src/runtime/strict-flags.js.map +1 -1
  164. package/dist/src/runtime/strict-fork.js +2 -2
  165. package/dist/src/runtime/strict-fork.js.map +1 -1
  166. package/dist/src/runtime/strict-representation.d.ts +78 -0
  167. package/dist/src/runtime/strict-representation.d.ts.map +1 -0
  168. package/dist/src/runtime/strict-representation.js +159 -0
  169. package/dist/src/runtime/strict-representation.js.map +1 -0
  170. package/dist/src/schema/assertion.d.ts +58 -0
  171. package/dist/src/schema/assertion.d.ts.map +1 -1
  172. package/dist/src/schema/assertion.js +78 -0
  173. package/dist/src/schema/assertion.js.map +1 -1
  174. package/dist/src/schema/catalog-persistability.d.ts +11 -3
  175. package/dist/src/schema/catalog-persistability.d.ts.map +1 -1
  176. package/dist/src/schema/catalog-persistability.js +48 -29
  177. package/dist/src/schema/catalog-persistability.js.map +1 -1
  178. package/dist/src/schema/catalog.d.ts +22 -0
  179. package/dist/src/schema/catalog.d.ts.map +1 -1
  180. package/dist/src/schema/catalog.js +4 -1
  181. package/dist/src/schema/catalog.js.map +1 -1
  182. package/dist/src/schema/column-republication.d.ts +126 -0
  183. package/dist/src/schema/column-republication.d.ts.map +1 -0
  184. package/dist/src/schema/column-republication.js +121 -0
  185. package/dist/src/schema/column-republication.js.map +1 -0
  186. package/dist/src/schema/column-source-resolver.d.ts +29 -6
  187. package/dist/src/schema/column-source-resolver.d.ts.map +1 -1
  188. package/dist/src/schema/column-source-resolver.js +78 -9
  189. package/dist/src/schema/column-source-resolver.js.map +1 -1
  190. package/dist/src/schema/expression-dependents.d.ts +160 -0
  191. package/dist/src/schema/expression-dependents.d.ts.map +1 -0
  192. package/dist/src/schema/expression-dependents.js +228 -0
  193. package/dist/src/schema/expression-dependents.js.map +1 -0
  194. package/dist/src/schema/function.d.ts +15 -0
  195. package/dist/src/schema/function.d.ts.map +1 -1
  196. package/dist/src/schema/function.js.map +1 -1
  197. package/dist/src/schema/object-dependency-closure.d.ts +127 -0
  198. package/dist/src/schema/object-dependency-closure.d.ts.map +1 -0
  199. package/dist/src/schema/object-dependency-closure.js +117 -0
  200. package/dist/src/schema/object-dependency-closure.js.map +1 -0
  201. package/dist/src/schema/object-ref-resolver.d.ts +83 -0
  202. package/dist/src/schema/object-ref-resolver.d.ts.map +1 -0
  203. package/dist/src/schema/object-ref-resolver.js +135 -0
  204. package/dist/src/schema/object-ref-resolver.js.map +1 -0
  205. package/dist/src/schema/rename/column-rename.d.ts +228 -0
  206. package/dist/src/schema/rename/column-rename.d.ts.map +1 -0
  207. package/dist/src/schema/rename/column-rename.js +1225 -0
  208. package/dist/src/schema/rename/column-rename.js.map +1 -0
  209. package/dist/src/schema/rename/self-qualifier-strip.d.ts +29 -0
  210. package/dist/src/schema/rename/self-qualifier-strip.d.ts.map +1 -0
  211. package/dist/src/schema/rename/self-qualifier-strip.js +267 -0
  212. package/dist/src/schema/rename/self-qualifier-strip.js.map +1 -0
  213. package/dist/src/schema/rename/shared.d.ts +108 -0
  214. package/dist/src/schema/rename/shared.d.ts.map +1 -0
  215. package/dist/src/schema/rename/shared.js +49 -0
  216. package/dist/src/schema/rename/shared.js.map +1 -0
  217. package/dist/src/schema/rename/table-rename.d.ts +263 -0
  218. package/dist/src/schema/rename/table-rename.d.ts.map +1 -0
  219. package/dist/src/schema/rename/table-rename.js +860 -0
  220. package/dist/src/schema/rename/table-rename.js.map +1 -0
  221. package/dist/src/schema/rename-rewriter.d.ts +18 -278
  222. package/dist/src/schema/rename-rewriter.d.ts.map +1 -1
  223. package/dist/src/schema/rename-rewriter.js +17 -1506
  224. package/dist/src/schema/rename-rewriter.js.map +1 -1
  225. package/dist/src/schema/schema-differ.d.ts.map +1 -1
  226. package/dist/src/schema/schema-differ.js +228 -21
  227. package/dist/src/schema/schema-differ.js.map +1 -1
  228. package/dist/src/types/builtin-types.d.ts.map +1 -1
  229. package/dist/src/types/builtin-types.js +29 -36
  230. package/dist/src/types/builtin-types.js.map +1 -1
  231. package/dist/src/types/cast-semantics.d.ts +7 -5
  232. package/dist/src/types/cast-semantics.d.ts.map +1 -1
  233. package/dist/src/types/cast-semantics.js +20 -9
  234. package/dist/src/types/cast-semantics.js.map +1 -1
  235. package/dist/src/types/index.d.ts +1 -1
  236. package/dist/src/types/index.d.ts.map +1 -1
  237. package/dist/src/types/index.js +1 -1
  238. package/dist/src/types/index.js.map +1 -1
  239. package/dist/src/types/registry.d.ts.map +1 -1
  240. package/dist/src/types/registry.js +2 -1
  241. package/dist/src/types/registry.js.map +1 -1
  242. package/dist/src/types/temporal-ops.d.ts +119 -0
  243. package/dist/src/types/temporal-ops.d.ts.map +1 -0
  244. package/dist/src/types/temporal-ops.js +348 -0
  245. package/dist/src/types/temporal-ops.js.map +1 -0
  246. package/dist/src/types/temporal-types.d.ts +11 -0
  247. package/dist/src/types/temporal-types.d.ts.map +1 -1
  248. package/dist/src/types/temporal-types.js +87 -0
  249. package/dist/src/types/temporal-types.js.map +1 -1
  250. package/dist/src/util/affinity.d.ts +2 -1
  251. package/dist/src/util/affinity.d.ts.map +1 -1
  252. package/dist/src/util/affinity.js +16 -5
  253. package/dist/src/util/affinity.js.map +1 -1
  254. package/dist/src/util/ast-spine-clone.d.ts +2 -2
  255. package/dist/src/util/ast-spine-clone.js +2 -2
  256. package/dist/src/util/coercion.d.ts +22 -7
  257. package/dist/src/util/coercion.d.ts.map +1 -1
  258. package/dist/src/util/coercion.js +28 -15
  259. package/dist/src/util/coercion.js.map +1 -1
  260. package/dist/src/util/comparison.d.ts +25 -0
  261. package/dist/src/util/comparison.d.ts.map +1 -1
  262. package/dist/src/util/comparison.js +25 -0
  263. package/dist/src/util/comparison.js.map +1 -1
  264. package/dist/src/util/key-tuple-codec.d.ts +12 -3
  265. package/dist/src/util/key-tuple-codec.d.ts.map +1 -1
  266. package/dist/src/util/key-tuple-codec.js.map +1 -1
  267. package/dist/src/util/numeric-canonical.d.ts +26 -0
  268. package/dist/src/util/numeric-canonical.d.ts.map +1 -0
  269. package/dist/src/util/numeric-canonical.js +66 -0
  270. package/dist/src/util/numeric-canonical.js.map +1 -0
  271. package/dist/src/util/value-text.d.ts +48 -0
  272. package/dist/src/util/value-text.d.ts.map +1 -0
  273. package/dist/src/util/value-text.js +35 -0
  274. package/dist/src/util/value-text.js.map +1 -0
  275. package/dist/src/vtab/memory/layer/manager.d.ts.map +1 -1
  276. package/dist/src/vtab/memory/layer/manager.js +14 -5
  277. package/dist/src/vtab/memory/layer/manager.js.map +1 -1
  278. package/dist/src/vtab/module.d.ts +25 -0
  279. package/dist/src/vtab/module.d.ts.map +1 -1
  280. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,39 @@
1
1
  import type { CaseExprNode } from '../../planner/nodes/scalar.js';
2
2
  import type { Instruction } from '../types.js';
3
+ import { type SqlValue } from '../../common/types.js';
3
4
  import type { EmissionContext } from '../emission-context.js';
5
+ /**
6
+ * Per-clause match test of a simple CASE, resolved once at emit time: collation +
7
+ * type routing per WHEN operand, and the rule that a NULL base matches nothing.
8
+ * Shared by the instruction emitter and the fusion compiler so a fused CASE and an
9
+ * instruction CASE can never disagree about which branch fires.
10
+ */
11
+ export interface CaseMatcher {
12
+ readonly collationNames: readonly string[];
13
+ readonly matches: (clauseIndex: number, baseValue: SqlValue, whenValue: SqlValue) => boolean;
14
+ }
15
+ /**
16
+ * Resolve how each WHEN clause of a simple CASE decides its match: `case base when v`
17
+ * decides exactly as `base = v` does. The collation comes from the shared provenance
18
+ * lattice (explicit COLLATE > declared column collation > defaults > BINARY), and the
19
+ * routing between the declared type's own compare / storage-class compare / runtime
20
+ * temporal check is the one shared with BETWEEN and `=` (see operand-comparator.ts).
21
+ * Without this, `case n when 'BOB'` compared raw bytes and disagreed with `n = 'BOB'`
22
+ * on a NOCASE column and on semantic-ordering types like TIMESPAN.
23
+ *
24
+ * Resolution is INDEPENDENT per clause (mirroring BETWEEN's two bounds, not IN's single
25
+ * merged collation), so two differently-collated WHEN operands are not a conflict with
26
+ * each other. A genuine conflict — explicit COLLATE on the base AND a different explicit
27
+ * COLLATE on a WHEN operand — throws, exactly as `=` throws for the same operand pair.
28
+ *
29
+ * A searched CASE (no `baseExpr`) yields an empty `collationNames` and a `matches` that
30
+ * is never called.
31
+ *
32
+ * NOTE: that throw happens at emit time, where `=` validates in `BinaryOpNode.generateType`.
33
+ * Both surface inside `db.prepare` today (even a fully-constant CASE is emitted so the
34
+ * folder can evaluate it). If a rule ever rewrites a `CaseExprNode` away without emitting
35
+ * it, move this resolution into `CaseExprNode.generateType` and read the cached result here.
36
+ */
37
+ export declare function buildCaseMatcher(plan: CaseExprNode, ctx: EmissionContext): CaseMatcher;
4
38
  export declare function emitCaseExpr(plan: CaseExprNode, ctx: EmissionContext): Instruction;
5
39
  //# sourceMappingURL=case.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAgD9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA2GlF"}
1
+ {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG/D,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK,OAAO,CAAC;CAC7F;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAoBtF;AAOD,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAoGlF"}
@@ -17,19 +17,30 @@ import { formatOperandCollationNote, makeOperandComparator } from './operand-com
17
17
  * each other. A genuine conflict — explicit COLLATE on the base AND a different explicit
18
18
  * COLLATE on a WHEN operand — throws, exactly as `=` throws for the same operand pair.
19
19
  *
20
+ * A searched CASE (no `baseExpr`) yields an empty `collationNames` and a `matches` that
21
+ * is never called.
22
+ *
20
23
  * NOTE: that throw happens at emit time, where `=` validates in `BinaryOpNode.generateType`.
21
24
  * Both surface inside `db.prepare` today (even a fully-constant CASE is emitted so the
22
25
  * folder can evaluate it). If a rule ever rewrites a `CaseExprNode` away without emitting
23
26
  * it, move this resolution into `CaseExprNode.generateType` and read the cached result here.
24
27
  */
25
- function resolveWhenComparison(plan, ctx) {
28
+ export function buildCaseMatcher(plan, ctx) {
26
29
  const base = plan.baseExpr;
27
30
  if (!base)
28
- return { collationNames: [], comparators: [] };
31
+ return { collationNames: [], matches: neverMatches };
29
32
  const baseLogical = base.getType().logicalType;
30
33
  const collationNames = plan.whenThenClauses.map(clause => effectiveComparisonCollation(base, clause.when, plan.expression));
31
34
  const comparators = plan.whenThenClauses.map((clause, i) => makeOperandComparator(baseLogical, clause.when.getType().logicalType, ctx.resolveCollation(collationNames[i])));
32
- return { collationNames, comparators };
35
+ // NULL base never matches any WHEN — falls through to ELSE/NULL. Each clause
36
+ // compares under its OWN pre-resolved comparator (collation + type routing).
37
+ const matches = (clauseIndex, baseValue, whenValue) => baseValue !== null && whenValue !== null &&
38
+ comparators[clauseIndex](baseValue, whenValue) === 0;
39
+ return { collationNames, matches };
40
+ }
41
+ /** Placeholder match test of a searched CASE, which compares nothing. */
42
+ function neverMatches() {
43
+ return false;
33
44
  }
34
45
  export function emitCaseExpr(plan, ctx) {
35
46
  // CASE must ALWAYS short-circuit: SQL evaluates WHEN clauses left-to-right,
@@ -52,7 +63,7 @@ export function emitCaseExpr(plan, ctx) {
52
63
  const clauseCount = plan.whenThenClauses.length;
53
64
  // A simple CASE compares its base against each WHEN under a per-clause
54
65
  // collation + type routing (searched CASE compares nothing here).
55
- const { collationNames: whenCollationNames, comparators: whenComparators } = resolveWhenComparison(plan, ctx);
66
+ const matcher = buildCaseMatcher(plan, ctx);
56
67
  // Searched CASE: CASE WHEN c1 THEN r1 ... ELSE e END
57
68
  // args layout: [when0, then0, when1, then1, ..., else?]
58
69
  function runSearchedCase(runtimeCtx, ...args) {
@@ -77,10 +88,6 @@ export function emitCaseExpr(plan, ctx) {
77
88
  function runSimpleCase(runtimeCtx, ...args) {
78
89
  const baseValue = args[0];
79
90
  const branch = (idx) => args[idx];
80
- // NULL base never matches any WHEN — falls through to ELSE/NULL. Each clause
81
- // compares under its OWN pre-resolved comparator (collation + type routing).
82
- const matches = (i, whenValue) => baseValue !== null && whenValue !== null &&
83
- whenComparators[i](baseValue, whenValue) === 0;
84
91
  const noMatch = () => plan.elseExpr ? branch(1 + clauseCount * 2)(runtimeCtx) : null;
85
92
  const step = (i) => {
86
93
  if (i >= clauseCount)
@@ -89,9 +96,9 @@ export function emitCaseExpr(plan, ctx) {
89
96
  const thenFn = branch(1 + i * 2 + 1);
90
97
  const w = whenFn(runtimeCtx);
91
98
  if (w instanceof Promise) {
92
- return w.then(wv => (matches(i, wv) ? thenFn(runtimeCtx) : step(i + 1)));
99
+ return w.then(wv => (matcher.matches(i, baseValue, wv) ? thenFn(runtimeCtx) : step(i + 1)));
93
100
  }
94
- return matches(i, w) ? thenFn(runtimeCtx) : step(i + 1);
101
+ return matcher.matches(i, baseValue, w) ? thenFn(runtimeCtx) : step(i + 1);
95
102
  };
96
103
  return step(0);
97
104
  }
@@ -114,7 +121,7 @@ export function emitCaseExpr(plan, ctx) {
114
121
  params: paramInstructions,
115
122
  run: plan.baseExpr ? asRun(runSimpleCase) : asRun(runSearchedCase),
116
123
  note: `case(short-circuit, ${clauseCount} when clauses${plan.elseExpr ? ', else' : ''})`
117
- + formatOperandCollationNote(whenCollationNames)
124
+ + formatOperandCollationNote(matcher.collationNames)
118
125
  };
119
126
  }
120
127
  //# sourceMappingURL=case.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"case.js","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"case.js","sourceRoot":"","sources":["../../../../src/runtime/emit/case.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { CastNode } from '../../planner/nodes/scalar.js';
2
2
  import type { Instruction } from '../types.js';
3
3
  import type { EmissionContext } from '../emission-context.js';
4
+ import { type ScalarOpSpec } from './scalar-op.js';
5
+ export declare function buildCastSpec(plan: CastNode): ScalarOpSpec;
4
6
  export declare function emitCast(plan: CastNode, ctx: EmissionContext): Instruction;
5
7
  //# sourceMappingURL=cast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAI/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAmB1E"}
1
+ {"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,CAmB1D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAE1E"}
@@ -1,7 +1,6 @@
1
- import { asRun } from '../types.js';
2
- import { emitPlanNode } from '../emitters.js';
3
1
  import { lenientCast } from '../../types/cast-semantics.js';
4
- export function emitCast(plan, ctx) {
2
+ import { emitScalarOp } from './scalar-op.js';
3
+ export function buildCastSpec(plan) {
5
4
  // The node's own resolved target type — never re-resolve the name here, or the
6
5
  // plan can advertise a type the emitter does not produce.
7
6
  const logicalType = plan.getType().logicalType;
@@ -11,9 +10,12 @@ export function emitCast(plan, ctx) {
11
10
  return lenientCast(operandValue, logicalType);
12
11
  }
13
12
  return {
14
- params: [emitPlanNode(plan.operand, ctx)],
15
- run: asRun(run),
13
+ operands: [plan.operand],
14
+ run,
16
15
  note: `cast(${plan.expression.targetType})`
17
16
  };
18
17
  }
18
+ export function emitCast(plan, ctx) {
19
+ return emitScalarOp(buildCastSpec(plan), ctx);
20
+ }
19
21
  //# sourceMappingURL=cast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAoB;IAC5D,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAE/C,SAAS,GAAG,CACX,WAA2B,EAC3B,YAAsB;QAEtB,qEAAqE;QACrE,wDAAwD;QACxD,OAAO,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,MAAM,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;KAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cast.js","sourceRoot":"","sources":["../../../../src/runtime/emit/cast.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,IAAc;IAC3C,+EAA+E;IAC/E,0DAA0D;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IAE/C,SAAS,GAAG,CACX,WAA2B,EAC3B,YAAsB;QAEtB,qEAAqE;QACrE,wDAAwD;QACxD,OAAO,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,GAAG;QACH,IAAI,EAAE,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG;KAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAoB;IAC5D,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import type { ColumnReferenceNode } from '../../planner/nodes/reference.js';
2
2
  import type { Instruction } from '../types.js';
3
3
  import type { EmissionContext } from '../emission-context.js';
4
- export declare function emitColumnReference(plan: ColumnReferenceNode, _ctx: EmissionContext): Instruction;
4
+ import { type ScalarOpSpec } from './scalar-op.js';
5
+ export declare function buildColumnReferenceSpec(plan: ColumnReferenceNode): ScalarOpSpec;
6
+ export declare function emitColumnReference(plan: ColumnReferenceNode, ctx: EmissionContext): Instruction;
5
7
  //# sourceMappingURL=column-reference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-reference.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAUjG"}
1
+ {"version":3,"file":"column-reference.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAUhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAEhG"}
@@ -1,12 +1,16 @@
1
1
  import { resolveAttribute } from '../context-helpers.js';
2
- export function emitColumnReference(plan, _ctx) {
2
+ import { emitScalarOp } from './scalar-op.js';
3
+ export function buildColumnReferenceSpec(plan) {
3
4
  function run(rctx) {
4
5
  return resolveAttribute(rctx, plan.attributeId, plan.expression.name);
5
6
  }
6
7
  return {
7
- params: [],
8
+ operands: [],
8
9
  run,
9
10
  note: `column(${plan.expression.name})`
10
11
  };
11
12
  }
13
+ export function emitColumnReference(plan, ctx) {
14
+ return emitScalarOp(buildColumnReferenceSpec(plan), ctx);
15
+ }
12
16
  //# sourceMappingURL=column-reference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-reference.js","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,mBAAmB,CAAC,IAAyB,EAAE,IAAqB;IACnF,SAAS,GAAG,CAAC,IAAoB;QAChC,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACN,MAAM,EAAE,EAAE;QACV,GAAG;QACH,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG;KACvC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"column-reference.js","sourceRoot":"","sources":["../../../../src/runtime/emit/column-reference.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,wBAAwB,CAAC,IAAyB;IACjE,SAAS,GAAG,CAAC,IAAoB;QAChC,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,EAAE;QACZ,GAAG;QACH,IAAI,EAAE,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG;KACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAyB,EAAE,GAAoB;IAClF,OAAO,YAAY,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,84 @@
1
+ import type { Database } from '../../core/database.js';
2
+ import { type ColumnRenameCascadeTarget } from '../../schema/column-republication.js';
3
+ import type { ObjectRefResolvers } from '../../schema/object-ref-resolver.js';
4
+ import type { ResolveColumnInSource } from '../../schema/rename-rewriter.js';
5
+ export type { ColumnRenameCascadeTarget };
6
+ /**
7
+ * Worklist driver for `ALTER TABLE … RENAME COLUMN` propagation. Rewriting a
8
+ * dependent view / materialized-view body can SHIFT THE NAME the object
9
+ * publishes (a bare passthrough projection of the renamed column — or a `*`
10
+ * covering the target — starts publishing the new name), and the objects
11
+ * reading IT then need the same column rename applied with the view as the
12
+ * target. This module owns that fixpoint:
13
+ *
14
+ * queue ← [ renamed table ]
15
+ * while queue: run the ordinary all-schema propagation for the head,
16
+ * then enqueue every view / MV whose published names that round shifted.
17
+ *
18
+ * Each round re-enters the SAME per-schema propagation
19
+ * (`propagateColumnRenameInSchema` / `propagateColumnRenameToMaterializedViews`
20
+ * — threaded in by `propagateColumnRename` in alter-table.ts as the `runRound`
21
+ * callback, to avoid an import cycle), so every dependent kind the first round
22
+ * covers — dependent tables' CHECK / DEFAULT / GENERATED expressions, views,
23
+ * materialized views, assertions — is covered at every depth.
24
+ *
25
+ * The per-round dependent scan ({@link scanShiftedPublishers}) lives in
26
+ * `schema/column-republication.ts`, shared with the DROP COLUMN guards'
27
+ * read-only fixpoint over the same lineage.
28
+ *
29
+ * Views cannot be recursive and a maintained table cannot derive from itself,
30
+ * so the visited set is insurance against a malformed catalog rather than an
31
+ * expected cycle — but without it the loop would be unbounded.
32
+ *
33
+ * NOTE: each round costs a full all-schema propagation plus a full scan of every
34
+ * schema's views and maintained tables, and the pre-flight additionally spine-clones
35
+ * every scanned body per round — so one `RENAME COLUMN` is O(chain depth × catalog
36
+ * size) AST walks. Depth is 1–3 for realistic catalogs and DDL is rare, so this is
37
+ * not worth optimizing now; if a deep republishing chain over a large catalog ever
38
+ * makes RENAME COLUMN slow, narrow each round to the objects that actually name the
39
+ * round's target (an object-dependency index) instead of re-sweeping the catalog.
40
+ */
41
+ /**
42
+ * The live cascade. Breadth-first from the renamed table: run `runRound` (the
43
+ * ordinary all-schema column-rename propagation) for the head, then scan for
44
+ * views / MVs whose published names that round shifted and enqueue them as the
45
+ * next targets. Each round's rewrites land in place before the scan runs, so
46
+ * the scan reads post-rewrite bodies — {@link import('../../schema/rename/column-rename.js').bodyExposesRenamedColumn}'s
47
+ * documented contract.
48
+ *
49
+ * `preStaleMvs` is the statement's pre-notify staleness snapshot: a pre-stale
50
+ * MV's backing columns are NOT renamed (its body may be rewritten, but only
51
+ * REFRESH may reshape the backing — see `applyMaterializedViewRewrite`), so
52
+ * its published names do not shift and its readers must NOT be rewritten.
53
+ *
54
+ * The caller runs `restoreUnaffectedMaterializedViews` once, AFTER the whole
55
+ * cascade — not per round.
56
+ */
57
+ export declare function runColumnRenameCascade(db: Database, seed: ColumnRenameCascadeTarget, oldCol: string, newCol: string, preStaleMvs: ReadonlySet<string>, resolvers: ObjectRefResolvers, resolveColumnInSource: ResolveColumnInSource, runRound: (target: ColumnRenameCascadeTarget) => Promise<void>): Promise<void>;
58
+ /**
59
+ * Read-only pre-flight for the cascade, run BEFORE the statement's first side
60
+ * effect: walks the same fixpoint the live cascade will walk — probing spine
61
+ * clones, mutating nothing — and refuses the statement when any round would
62
+ * leave a view / materialized view publishing TWO columns of the new name
63
+ * (it already publishes `newCol`, and the shifted passthrough would add a
64
+ * second). This mirrors how the base-table verb refuses a rename that
65
+ * collides with an existing column, and it must run pre-mutation: the live
66
+ * cascade rewrites bodies in place with no rollback, so a mid-cascade throw
67
+ * would strand a partial rename (the same reasoning the no-catch NOTE on
68
+ * `reregisterRewrittenAssertion` records).
69
+ *
70
+ * The collision test runs against the PRISTINE body: before the rename the
71
+ * target cannot publish `newCol`, so any `newCol` already published is
72
+ * necessarily a different column (a case-only respelling is the one rename for
73
+ * which that premise fails, and returns below before any scan). A `newCol`
74
+ * publication some EARLIER round created is likewise never a distinct column —
75
+ * it can only have come from an `oldCol` publication — which is why measuring
76
+ * the collision on the pristine body is right rather than merely convenient.
77
+ * The exposure test runs against a throwaway
78
+ * clone with the round's rewrite applied, matching the live driver's
79
+ * post-rewrite contract; the pre-mutation catalog gives the same answers the
80
+ * live rounds see because a round only rewrites references binding ITS OWN
81
+ * target, which no other round's exposure question consults.
82
+ */
83
+ export declare function assertColumnRenameCascadePublishable(db: Database, seed: ColumnRenameCascadeTarget, oldCol: string, newCol: string, resolvers: ObjectRefResolvers, resolveColumnInSource: ResolveColumnInSource): void;
84
+ //# sourceMappingURL=column-rename-cascade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-rename-cascade.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/column-rename-cascade.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAGN,KAAK,yBAAyB,EAC9B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC3C,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,yBAAyB,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,SAAS,EAAE,kBAAkB,EAC7B,qBAAqB,EAAE,qBAAqB,EAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,OAAO,CAAC,IAAI,CAAC,GAC5D,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,oCAAoC,CACnD,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,yBAAyB,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,kBAAkB,EAC7B,qBAAqB,EAAE,qBAAqB,GAC1C,IAAI,CAmCN"}
@@ -0,0 +1,134 @@
1
+ import { QuereusError } from '../../common/errors.js';
2
+ import { StatusCode } from '../../common/types.js';
3
+ import { scanShiftedPublishers, visitKeyOf, } from '../../schema/column-republication.js';
4
+ import { objectRefKey } from '../../schema/rename-rewriter.js';
5
+ /**
6
+ * Worklist driver for `ALTER TABLE … RENAME COLUMN` propagation. Rewriting a
7
+ * dependent view / materialized-view body can SHIFT THE NAME the object
8
+ * publishes (a bare passthrough projection of the renamed column — or a `*`
9
+ * covering the target — starts publishing the new name), and the objects
10
+ * reading IT then need the same column rename applied with the view as the
11
+ * target. This module owns that fixpoint:
12
+ *
13
+ * queue ← [ renamed table ]
14
+ * while queue: run the ordinary all-schema propagation for the head,
15
+ * then enqueue every view / MV whose published names that round shifted.
16
+ *
17
+ * Each round re-enters the SAME per-schema propagation
18
+ * (`propagateColumnRenameInSchema` / `propagateColumnRenameToMaterializedViews`
19
+ * — threaded in by `propagateColumnRename` in alter-table.ts as the `runRound`
20
+ * callback, to avoid an import cycle), so every dependent kind the first round
21
+ * covers — dependent tables' CHECK / DEFAULT / GENERATED expressions, views,
22
+ * materialized views, assertions — is covered at every depth.
23
+ *
24
+ * The per-round dependent scan ({@link scanShiftedPublishers}) lives in
25
+ * `schema/column-republication.ts`, shared with the DROP COLUMN guards'
26
+ * read-only fixpoint over the same lineage.
27
+ *
28
+ * Views cannot be recursive and a maintained table cannot derive from itself,
29
+ * so the visited set is insurance against a malformed catalog rather than an
30
+ * expected cycle — but without it the loop would be unbounded.
31
+ *
32
+ * NOTE: each round costs a full all-schema propagation plus a full scan of every
33
+ * schema's views and maintained tables, and the pre-flight additionally spine-clones
34
+ * every scanned body per round — so one `RENAME COLUMN` is O(chain depth × catalog
35
+ * size) AST walks. Depth is 1–3 for realistic catalogs and DDL is rare, so this is
36
+ * not worth optimizing now; if a deep republishing chain over a large catalog ever
37
+ * makes RENAME COLUMN slow, narrow each round to the objects that actually name the
38
+ * round's target (an object-dependency index) instead of re-sweeping the catalog.
39
+ */
40
+ /**
41
+ * The live cascade. Breadth-first from the renamed table: run `runRound` (the
42
+ * ordinary all-schema column-rename propagation) for the head, then scan for
43
+ * views / MVs whose published names that round shifted and enqueue them as the
44
+ * next targets. Each round's rewrites land in place before the scan runs, so
45
+ * the scan reads post-rewrite bodies — {@link import('../../schema/rename/column-rename.js').bodyExposesRenamedColumn}'s
46
+ * documented contract.
47
+ *
48
+ * `preStaleMvs` is the statement's pre-notify staleness snapshot: a pre-stale
49
+ * MV's backing columns are NOT renamed (its body may be rewritten, but only
50
+ * REFRESH may reshape the backing — see `applyMaterializedViewRewrite`), so
51
+ * its published names do not shift and its readers must NOT be rewritten.
52
+ *
53
+ * The caller runs `restoreUnaffectedMaterializedViews` once, AFTER the whole
54
+ * cascade — not per round.
55
+ */
56
+ export async function runColumnRenameCascade(db, seed, oldCol, newCol, preStaleMvs, resolvers, resolveColumnInSource, runRound) {
57
+ const oldColLower = oldCol.toLowerCase();
58
+ const visited = new Set();
59
+ const queue = [seed];
60
+ while (queue.length > 0) {
61
+ const target = queue.shift();
62
+ const key = visitKeyOf(target, oldColLower);
63
+ if (visited.has(key))
64
+ continue;
65
+ visited.add(key);
66
+ await runRound(target);
67
+ scanShiftedPublishers(db, target, oldCol, newCol, resolvers, resolveColumnInSource, {
68
+ probeOnClone: false,
69
+ isMvExcluded: mv => preStaleMvs.has(objectRefKey(mv.schemaName, mv.name)),
70
+ onShifted: dependent => queue.push(dependent),
71
+ });
72
+ }
73
+ }
74
+ /**
75
+ * Read-only pre-flight for the cascade, run BEFORE the statement's first side
76
+ * effect: walks the same fixpoint the live cascade will walk — probing spine
77
+ * clones, mutating nothing — and refuses the statement when any round would
78
+ * leave a view / materialized view publishing TWO columns of the new name
79
+ * (it already publishes `newCol`, and the shifted passthrough would add a
80
+ * second). This mirrors how the base-table verb refuses a rename that
81
+ * collides with an existing column, and it must run pre-mutation: the live
82
+ * cascade rewrites bodies in place with no rollback, so a mid-cascade throw
83
+ * would strand a partial rename (the same reasoning the no-catch NOTE on
84
+ * `reregisterRewrittenAssertion` records).
85
+ *
86
+ * The collision test runs against the PRISTINE body: before the rename the
87
+ * target cannot publish `newCol`, so any `newCol` already published is
88
+ * necessarily a different column (a case-only respelling is the one rename for
89
+ * which that premise fails, and returns below before any scan). A `newCol`
90
+ * publication some EARLIER round created is likewise never a distinct column —
91
+ * it can only have come from an `oldCol` publication — which is why measuring
92
+ * the collision on the pristine body is right rather than merely convenient.
93
+ * The exposure test runs against a throwaway
94
+ * clone with the round's rewrite applied, matching the live driver's
95
+ * post-rewrite contract; the pre-mutation catalog gives the same answers the
96
+ * live rounds see because a round only rewrites references binding ITS OWN
97
+ * target, which no other round's exposure question consults.
98
+ */
99
+ export function assertColumnRenameCascadePublishable(db, seed, oldCol, newCol, resolvers, resolveColumnInSource) {
100
+ const oldColLower = oldCol.toLowerCase();
101
+ // A case-only respelling ('x' → 'X') merges no two name classes: the `newCol` a
102
+ // dependent "already publishes" IS the renamed column itself, not a second one.
103
+ // Skipping keeps the pristine-body collision test's premise — that the target
104
+ // cannot publish `newCol` before the rename — true on every case it runs on.
105
+ if (oldColLower === newCol.toLowerCase())
106
+ return;
107
+ const visited = new Set([visitKeyOf(seed, oldColLower)]);
108
+ const queue = [seed];
109
+ while (queue.length > 0) {
110
+ const target = queue.shift();
111
+ scanShiftedPublishers(db, target, oldCol, newCol, resolvers, resolveColumnInSource, {
112
+ probeOnClone: true,
113
+ // Runs before the statement's first notify, so live staleness equals the
114
+ // snapshot the driver will take.
115
+ isMvExcluded: mv => mv.derivation.stale === true,
116
+ onCollision: (kind, schemaName, name) => {
117
+ const via = target.targetKey === seed.targetKey ? '' : ` (through '${target.tableName}')`;
118
+ throw new QuereusError(`cannot rename column '${seed.tableName}.${oldCol}' to '${newCol}': `
119
+ + `${kind} '${schemaName}.${name}' already publishes a column named '${newCol}' and `
120
+ + `also republishes the renamed column${via}, so following the rename would make it `
121
+ + `publish two '${newCol}' columns. Alias one of the two in the ${kind}'s body, `
122
+ + `or choose a different name.`, StatusCode.ERROR);
123
+ },
124
+ onShifted: dependent => {
125
+ const key = visitKeyOf(dependent, oldColLower);
126
+ if (visited.has(key))
127
+ return;
128
+ visited.add(key);
129
+ queue.push(dependent);
130
+ },
131
+ });
132
+ }
133
+ }
134
+ //# sourceMappingURL=column-rename-cascade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-rename-cascade.js","sourceRoot":"","sources":["../../../../src/runtime/emit/column-rename-cascade.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dml-executor.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/dml-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAA+C,MAAM,aAAa,CAAC;AAO5F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA+SzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAQ7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAqvCxF"}
1
+ {"version":3,"file":"dml-executor.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/dml-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAA+C,MAAM,aAAa,CAAC;AAO5F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAiTzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAQ7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAywCxF"}
@@ -12,6 +12,8 @@ import { sqlValueIdentical, compareSqlValuesFast, BINARY_COLLATION } from '../..
12
12
  import { uniqueEnforcementComparators } from '../../schema/unique-enforcement.js';
13
13
  import { validateAndParse } from '../../types/validation.js';
14
14
  import { withAsyncRowContext } from '../context-helpers.js';
15
+ import { REPR_STRICT } from '../strict-flags.js';
16
+ import { assertRowConforms } from '../strict-representation.js';
15
17
  import { executeForeignKeyActionsAndLens, assertTransitiveRestrictsForParentMutation, createParentRestrictBatch, accumulateParentRestrictKeys, flushParentRestrictBatch } from '../foreign-key-actions.js';
16
18
  import { getBatchableRestrictFks } from '../../planner/building/foreign-key-builder.js';
17
19
  import { composeCombinedDescriptor } from '../descriptor-helpers.js';
@@ -249,6 +251,19 @@ export function emitDmlExecutor(plan, ctx) {
249
251
  assertNotMaintainedTableTarget(tableSchema);
250
252
  // Pre-calculate primary key column indices from schema (needed for update/delete)
251
253
  const pkColumnIndicesInSchema = tableSchema.primaryKeyDefinition.map(pkColDef => pkColDef.index);
254
+ // QUEREUS_REPR_STRICT seam: the row about to be handed to `vtab.update`, checked
255
+ // against the declared column types AFTER the DML pipeline's coercion pass. This is
256
+ // the failure mode with the longest fuse — a non-canonical value that gets PERSISTED.
257
+ // Both arrays are built only when the flag is on, so a normal emit allocates nothing
258
+ // on the checker's behalf.
259
+ // The three row-bearing `vtab.update` sites below each call `assertRowConforms` under
260
+ // `if (REPR_STRICT)`, immediately before the write and deliberately OUTSIDE the
261
+ // conversion/constraint `catch` blocks, so a violation propagates as the internal error
262
+ // it is rather than being re-reported as a constraint failure. DELETE carries no row, so
263
+ // it has no check.
264
+ const reprColumnTypes = REPR_STRICT ? tableSchema.columns.map(col => col.logicalType) : undefined;
265
+ const reprColumnNames = REPR_STRICT ? tableSchema.columns.map(col => col.name) : undefined;
266
+ const reprWhere = REPR_STRICT ? `write to ${tableSchema.schemaName}.${tableSchema.name}` : '';
252
267
  // Per-PK-column comparators for the data-event contract's relocation test: an UPDATE
253
268
  // whose key values differ under the PRIMARY KEY's own comparator MOVES the row, and the
254
269
  // contract delivers that as delete-at-old-key + insert-at-new-key rather than one `update`
@@ -580,6 +595,8 @@ export function emitDmlExecutor(plan, ctx) {
580
595
  mutationStatement: vtab.wantStatements ?
581
596
  buildUpdateStatement(tableSchema, updatedRow, keyValues, contextRow) : undefined
582
597
  };
598
+ if (REPR_STRICT)
599
+ assertRowConforms(updatedRow, reprColumnTypes, reprWhere, reprColumnNames);
583
600
  const updateResult = await vtab.update(updateArgs);
584
601
  if (isConstraintViolation(updateResult)) {
585
602
  throw new ConstraintError(updateResult.message ?? `${updateResult.constraint} constraint failed during UPSERT update`, StatusCode.CONSTRAINT);
@@ -899,6 +916,8 @@ export function emitDmlExecutor(plan, ctx) {
899
916
  preCoerced: true,
900
917
  mutationStatement
901
918
  };
919
+ if (REPR_STRICT)
920
+ assertRowConforms(newRow, reprColumnTypes, reprWhere, reprColumnNames);
902
921
  const result = await vtab.update(args);
903
922
  if (isConstraintViolation(result)) {
904
923
  if (result.constraint === 'unique' && runtimeUpsertClauses && result.existingRow) {
@@ -1082,6 +1101,8 @@ export function emitDmlExecutor(plan, ctx) {
1082
1101
  preCoerced: true,
1083
1102
  mutationStatement
1084
1103
  };
1104
+ if (REPR_STRICT)
1105
+ assertRowConforms(newRow, reprColumnTypes, reprWhere, reprColumnNames);
1085
1106
  const result = await vtab.update(args);
1086
1107
  // Handle constraint violations — caller translates for FAIL/ROLLBACK.
1087
1108
  if (isConstraintViolation(result)) {