@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
@@ -2,21 +2,18 @@ import { buildAssertionViolationSql } from '../../schema/assertion.js';
2
2
  import { renameTableInAst, renameColumnInAst } from '../../schema/rename-rewriter.js';
3
3
  import { createLogger } from '../../common/logger.js';
4
4
  const log = createLogger('runtime:emit:assertion-rename');
5
- // NOTE: both passes walk only the renamed object's OWN schema — the same scope the
6
- // plain-view and materialized-view loops in `alter-table.ts` use. An assertion's
7
- // stored body resolves unqualified table names against the assertion's own schema
8
- // first (`Database._homeSchemaPath`), so an unqualified `t` inside an assertion
9
- // living in some other schema does not necessarily mean the renamed table, and
10
- // rewriting it would be a false positive. The converse gap — an assertion that names
11
- // the renamed table with an explicit `<other schema>.<table>` qualifier is NOT
12
- // rewritten — is real, and shared verbatim with views and materialized views; it is
13
- // tracked by `bug-rename-not-propagated-across-schemas`, which fixes all three object
14
- // kinds with one "explicitly-qualified references only" rewriter mode.
5
+ // NOTE: both passes are called once per schema in the catalog — the same scope the
6
+ // plain-view and materialized-view loops in `alter-table.ts` use — and the caller
7
+ // passes the target/resolver built for THAT schema's home path (over the statement's
8
+ // pre-mutation snapshot), so an unqualified `t` in a body matches only when it
9
+ // actually RESOLVES to the renamed table. An assertion in `temp` naming `main.t`
10
+ // therefore follows a rename of `main.t`, while one whose bare `t` means `temp.t`
11
+ // is left alone.
15
12
  /**
16
13
  * Rewrites every assertion in `schema` after a source TABLE RENAME — the assertion
17
- * mirror of the plain-view loop in `propagateTableRenameInSchema` (same same-schema
18
- * gate at the caller, same in-place `renameTableInAst` walk over a body that owns its
19
- * own FROM scopes).
14
+ * mirror of the plain-view loop in `propagateTableRenameInSchema` (called once per
15
+ * schema by the caller with that schema's resolver, same in-place `renameTableInAst`
16
+ * walk over a body that owns its own FROM scopes).
20
17
  *
21
18
  * On a changed body the derived `violationSql` is regenerated from the rewritten
22
19
  * expression (the commit-time evaluator re-parses that text, so it is the field that
@@ -25,15 +22,15 @@ const log = createLogger('runtime:emit:assertion-rename');
25
22
  * {@link Database.schemaManager} so `assertion_modified` fires — which is what
26
23
  * invalidates the optimizer's assertion-hoist cache.
27
24
  */
28
- export function propagateTableRenameToAssertions(db, schema, renamedSchemaName, oldName, newName) {
29
- const schemaLower = renamedSchemaName.toLowerCase();
30
- const oldBase = `${schemaLower}.${oldName.toLowerCase()}`;
31
- const newBase = `${schemaLower}.${newName.toLowerCase()}`;
25
+ export function propagateTableRenameToAssertions(db, schema, target) {
26
+ const schemaLower = target.schemaName.toLowerCase();
27
+ const oldBase = `${schemaLower}.${target.oldName.toLowerCase()}`;
28
+ const newBase = `${schemaLower}.${target.newName.toLowerCase()}`;
32
29
  for (const assertion of Array.from(schema.getAllAssertions())) {
33
30
  const check = assertion.checkExpression;
34
31
  if (!check)
35
32
  continue;
36
- if (!renameTableInAst(check, oldName, newName, renamedSchemaName))
33
+ if (!renameTableInAst(check, target))
37
34
  continue;
38
35
  reregisterRewrittenAssertion(db, schema, assertion, check, remapDependentTables(assertion.dependentTables, oldBase, newBase));
39
36
  }
@@ -52,12 +49,13 @@ export function propagateTableRenameToAssertions(db, schema, renamedSchemaName,
52
49
  *
53
50
  * `dependentTables` is keyed by base table, so a column rename leaves it untouched.
54
51
  */
55
- export function propagateColumnRenameToAssertions(db, schema, renamedSchemaName, tableName, oldCol, newCol, resolveColumnInSource) {
52
+ export function propagateColumnRenameToAssertions(db, schema, tableName, oldCol, newCol, resolve, targetKey, resolveColumnInSource) {
56
53
  for (const assertion of Array.from(schema.getAllAssertions())) {
57
54
  const check = assertion.checkExpression;
58
55
  if (!check)
59
56
  continue;
60
- if (!renameColumnInAst(check, tableName, oldCol, newCol, renamedSchemaName, resolveColumnInSource))
57
+ // Row-image mode 'none': an assertion body owns no `new.` / `old.` namespace.
58
+ if (!renameColumnInAst(check, tableName, oldCol, newCol, resolve, targetKey, 'none', resolveColumnInSource))
61
59
  continue;
62
60
  reregisterRewrittenAssertion(db, schema, assertion, check, assertion.dependentTables);
63
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"assertion-rename-helpers.js","sourceRoot":"","sources":["../../../../src/runtime/emit/assertion-rename-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertion-rename-helpers.js","sourceRoot":"","sources":["../../../../src/runtime/emit/assertion-rename-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { Instruction } from "../types.js";
2
2
  import type { BetweenNode } from "../../planner/nodes/scalar.js";
3
3
  import type { EmissionContext } from "../emission-context.js";
4
+ import { type ScalarOpSpec } from "./scalar-op.js";
5
+ export declare function buildBetweenSpec(plan: BetweenNode, ctx: EmissionContext): ScalarOpSpec;
4
6
  export declare function emitBetween(plan: BetweenNode, ctx: EmissionContext): Instruction;
5
7
  //# sourceMappingURL=between.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"between.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/between.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA0ChF"}
1
+ {"version":3,"file":"between.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/between.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,YAAY,CAsCtF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAEhF"}
@@ -1,8 +1,7 @@
1
- import { asRun } from "../types.js";
2
- import { emitPlanNode } from "../emitters.js";
3
1
  import { effectiveBetweenBoundCollation } from "../../planner/analysis/comparison-collation.js";
4
2
  import { formatOperandCollationNote, makeOperandComparator } from "./operand-comparator.js";
5
- export function emitBetween(plan, ctx) {
3
+ import { emitScalarOp } from "./scalar-op.js";
4
+ export function buildBetweenSpec(plan, ctx) {
6
5
  // BETWEEN desugars to `expr >= lower AND expr <= upper`; each comparison
7
6
  // resolves its collation independently through the shared provenance lattice
8
7
  // (explicit COLLATE > declared column collation > defaults — see
@@ -28,14 +27,14 @@ export function emitBetween(plan, ctx) {
28
27
  const betweenResult = (lowerResult >= 0 && upperResult <= 0);
29
28
  return plan.expression.not ? !betweenResult : betweenResult;
30
29
  }
31
- const valueExpr = emitPlanNode(plan.expr, ctx);
32
- const lowerExpr = emitPlanNode(plan.lower, ctx);
33
- const upperExpr = emitPlanNode(plan.upper, ctx);
34
30
  const notPrefix = plan.expression.not ? 'NOT ' : '';
35
31
  return {
36
- params: [valueExpr, lowerExpr, upperExpr],
37
- run: asRun(run),
32
+ operands: [plan.expr, plan.lower, plan.upper],
33
+ run,
38
34
  note: `${notPrefix}BETWEEN${formatOperandCollationNote([lowerCollationName, upperCollationName])}`
39
35
  };
40
36
  }
37
+ export function emitBetween(plan, ctx) {
38
+ return emitScalarOp(buildBetweenSpec(plan, ctx), ctx);
39
+ }
41
40
  //# sourceMappingURL=between.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"between.js","sourceRoot":"","sources":["../../../../src/runtime/emit/between.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAE5F,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,yEAAyE;IACzE,6EAA6E;IAC7E,iEAAiE;IACjE,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjF,0EAA0E;IAC1E,MAAM,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACpE,MAAM,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IACpD,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC9G,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE9G,0EAA0E;IAC1E,yCAAyC;IACzC,SAAS,GAAG,CAAC,GAAmB,EAAE,KAAe,EAAE,UAAoB,EAAE,UAAoB;QAC5F,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE9E,wFAAwF;QACxF,gDAAgD;QAChD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,OAAO;QACN,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;QACzC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,IAAI,EAAE,GAAG,SAAS,UAAU,0BAA0B,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,EAAE;KAClG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"between.js","sourceRoot":"","sources":["../../../../src/runtime/emit/between.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,GAAoB;IACvE,yEAAyE;IACzE,6EAA6E;IAC7E,iEAAiE;IACjE,4EAA4E;IAC5E,+DAA+D;IAC/D,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjF,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjF,0EAA0E;IAC1E,MAAM,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACpE,MAAM,kBAAkB,GAAG,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC;IACpD,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC9G,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE9G,0EAA0E;IAC1E,yCAAyC;IACzC,SAAS,GAAG,CAAC,GAAmB,EAAE,KAAe,EAAE,UAAoB,EAAE,UAAoB;QAC5F,IAAI,KAAK,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAE9E,wFAAwF;QACxF,gDAAgD;QAChD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpD,OAAO;QACN,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;QAC7C,GAAG;QACH,IAAI,EAAE,GAAG,SAAS,UAAU,0BAA0B,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,EAAE;KAClG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,OAAO,YAAY,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC"}
@@ -1,10 +1,32 @@
1
1
  import type { Instruction } from "../types.js";
2
2
  import type { BinaryOpNode } from "../../planner/nodes/scalar.js";
3
3
  import type { EmissionContext } from "../emission-context.js";
4
+ import { type ScalarOpSpec } from "./scalar-op.js";
5
+ /**
6
+ * Operator dispatch for a binary node — the single entry point both consumers share, so
7
+ * neither has to restate which operator routes to which body. `undefined` means the node
8
+ * has no {@link ScalarOpSpec}: today that is exactly the AND/OR short-circuit form, whose
9
+ * right operand is a deferred sub-program rather than a value (see
10
+ * {@link buildLogicalOpSpec}). A fusion consumer treats `undefined` as "do not fuse";
11
+ * {@link emitBinaryOp} falls back to {@link emitShortCircuitLogicalOp}.
12
+ *
13
+ * An unsupported operator throws here rather than returning `undefined` — that is an
14
+ * unimplemented operator, not a node that declines to fuse.
15
+ */
16
+ export declare function buildBinaryOpSpec(plan: BinaryOpNode, ctx: EmissionContext): ScalarOpSpec | undefined;
4
17
  export declare function emitBinaryOp(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
5
- export declare function emitNumericOp(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
6
- export declare function emitComparisonOp(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
7
- export declare function emitConcatOp(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
8
- export declare function emitLogicalOp(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
9
- export declare function emitLikeOp(plan: BinaryOpNode, ctx: EmissionContext): Instruction;
18
+ export declare function buildNumericOpSpec(plan: BinaryOpNode): ScalarOpSpec;
19
+ export declare function buildComparisonOpSpec(plan: BinaryOpNode, ctx: EmissionContext): ScalarOpSpec;
20
+ export declare function buildConcatOpSpec(plan: BinaryOpNode): ScalarOpSpec;
21
+ /**
22
+ * Eager two-operand combine. Used for XOR (both operands always required) and for
23
+ * AND/OR whose right operand is cheap (no subquery) — the zero-overhead path.
24
+ *
25
+ * `undefined` for the short-circuit form, whose right operand is a `SubProgram` param
26
+ * rather than a value and whose body returns `MaybePromise` — not a {@link ScalarOpSpec}
27
+ * body. Consumers fall back: the emitter below builds that Instruction itself, and a
28
+ * fusion consumer must decline to fuse.
29
+ */
30
+ export declare function buildLogicalOpSpec(plan: BinaryOpNode): ScalarOpSpec | undefined;
31
+ export declare function buildLikeOpSpec(plan: BinaryOpNode): ScalarOpSpec;
10
32
  //# sourceMappingURL=binary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAUlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAgClF;AA4CD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAqHnF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAmEtF;AA2CD,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAmBlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAsGnF;AAiBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA2ChF"}
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/binary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAYlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,YAAY,GAAG,SAAS,CAgCpG;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAGlF;AAwFD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAyHnE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,eAAe,GAAG,YAAY,CAqE5F;AA2CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAelE;AA2ED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,CAgB/E;AAyDD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CA0ChE"}