@quereus/quereus 3.1.1 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/src/core/database-assertions.js +3 -3
  2. package/dist/src/core/database-assertions.js.map +1 -1
  3. package/dist/src/core/database.d.ts +17 -3
  4. package/dist/src/core/database.d.ts.map +1 -1
  5. package/dist/src/core/database.js +79 -6
  6. package/dist/src/core/database.js.map +1 -1
  7. package/dist/src/core/statement.js +3 -3
  8. package/dist/src/core/statement.js.map +1 -1
  9. package/dist/src/emit/ast-stringify.d.ts +0 -1
  10. package/dist/src/emit/ast-stringify.d.ts.map +1 -1
  11. package/dist/src/emit/ast-stringify.js +187 -78
  12. package/dist/src/emit/ast-stringify.js.map +1 -1
  13. package/dist/src/index.d.ts +2 -1
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/parser/ast.d.ts +0 -4
  18. package/dist/src/parser/ast.d.ts.map +1 -1
  19. package/dist/src/parser/parser.d.ts +9 -1
  20. package/dist/src/parser/parser.d.ts.map +1 -1
  21. package/dist/src/parser/parser.js +33 -20
  22. package/dist/src/parser/parser.js.map +1 -1
  23. package/dist/src/parser/visitor.js +1 -1
  24. package/dist/src/parser/visitor.js.map +1 -1
  25. package/dist/src/planner/analysis/attribute-provenance.d.ts +45 -0
  26. package/dist/src/planner/analysis/attribute-provenance.d.ts.map +1 -0
  27. package/dist/src/planner/analysis/attribute-provenance.js +81 -0
  28. package/dist/src/planner/analysis/attribute-provenance.js.map +1 -0
  29. package/dist/src/planner/analysis/const-evaluator.js +5 -5
  30. package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
  31. package/dist/src/planner/building/select-window.d.ts.map +1 -1
  32. package/dist/src/planner/building/select-window.js +54 -21
  33. package/dist/src/planner/building/select-window.js.map +1 -1
  34. package/dist/src/planner/cache/correlation-detector.d.ts +7 -0
  35. package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
  36. package/dist/src/planner/cache/correlation-detector.js +34 -2
  37. package/dist/src/planner/cache/correlation-detector.js.map +1 -1
  38. package/dist/src/planner/nodes/async-gather-node.d.ts +169 -0
  39. package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -0
  40. package/dist/src/planner/nodes/async-gather-node.js +488 -0
  41. package/dist/src/planner/nodes/async-gather-node.js.map +1 -0
  42. package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
  43. package/dist/src/planner/nodes/bloom-join-node.js +8 -7
  44. package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
  45. package/dist/src/planner/nodes/eager-prefetch-node.d.ts +47 -0
  46. package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -0
  47. package/dist/src/planner/nodes/eager-prefetch-node.js +96 -0
  48. package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -0
  49. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +150 -0
  50. package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -0
  51. package/dist/src/planner/nodes/fanout-lookup-join-node.js +265 -0
  52. package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -0
  53. package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
  54. package/dist/src/planner/nodes/merge-join-node.js +8 -7
  55. package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
  56. package/dist/src/planner/nodes/plan-node-type.d.ts +3 -0
  57. package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
  58. package/dist/src/planner/nodes/plan-node-type.js +3 -0
  59. package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
  60. package/dist/src/planner/nodes/plan-node.d.ts +36 -0
  61. package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
  62. package/dist/src/planner/nodes/plan-node.js +26 -0
  63. package/dist/src/planner/nodes/plan-node.js.map +1 -1
  64. package/dist/src/planner/nodes/reference.d.ts.map +1 -1
  65. package/dist/src/planner/nodes/reference.js +36 -1
  66. package/dist/src/planner/nodes/reference.js.map +1 -1
  67. package/dist/src/planner/optimizer-tuning.d.ts +107 -0
  68. package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
  69. package/dist/src/planner/optimizer-tuning.js +43 -0
  70. package/dist/src/planner/optimizer-tuning.js.map +1 -1
  71. package/dist/src/planner/optimizer.d.ts.map +1 -1
  72. package/dist/src/planner/optimizer.js +91 -0
  73. package/dist/src/planner/optimizer.js.map +1 -1
  74. package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
  75. package/dist/src/planner/rules/access/rule-monotonic-range-access.js +1 -6
  76. package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
  77. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +74 -0
  78. package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts.map +1 -0
  79. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +139 -0
  80. package/dist/src/planner/rules/join/rule-fanout-batched-outer.js.map +1 -0
  81. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +58 -0
  82. package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -0
  83. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +592 -0
  84. package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -0
  85. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts +43 -0
  86. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts.map +1 -0
  87. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js +115 -0
  88. package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js.map +1 -0
  89. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts +102 -0
  90. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts.map +1 -0
  91. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +545 -0
  92. package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -0
  93. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts +45 -0
  94. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts.map +1 -0
  95. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js +78 -0
  96. package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js.map +1 -0
  97. package/dist/src/planner/scopes/param.d.ts.map +1 -1
  98. package/dist/src/planner/scopes/param.js +13 -11
  99. package/dist/src/planner/scopes/param.js.map +1 -1
  100. package/dist/src/planner/type-utils.js +1 -1
  101. package/dist/src/planner/type-utils.js.map +1 -1
  102. package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
  103. package/dist/src/planner/validation/plan-validator.js +17 -19
  104. package/dist/src/planner/validation/plan-validator.js.map +1 -1
  105. package/dist/src/runtime/async-semaphore.d.ts +36 -0
  106. package/dist/src/runtime/async-semaphore.d.ts.map +1 -0
  107. package/dist/src/runtime/async-semaphore.js +72 -0
  108. package/dist/src/runtime/async-semaphore.js.map +1 -0
  109. package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
  110. package/dist/src/runtime/deferred-constraint-queue.js +4 -3
  111. package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
  112. package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
  113. package/dist/src/runtime/emit/add-constraint.js +51 -37
  114. package/dist/src/runtime/emit/add-constraint.js.map +1 -1
  115. package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
  116. package/dist/src/runtime/emit/alter-table.js +0 -2
  117. package/dist/src/runtime/emit/alter-table.js.map +1 -1
  118. package/dist/src/runtime/emit/async-gather.d.ts +77 -0
  119. package/dist/src/runtime/emit/async-gather.d.ts.map +1 -0
  120. package/dist/src/runtime/emit/async-gather.js +234 -0
  121. package/dist/src/runtime/emit/async-gather.js.map +1 -0
  122. package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
  123. package/dist/src/runtime/emit/bloom-join.js +38 -17
  124. package/dist/src/runtime/emit/bloom-join.js.map +1 -1
  125. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  126. package/dist/src/runtime/emit/dml-executor.js +12 -52
  127. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  128. package/dist/src/runtime/emit/eager-prefetch.d.ts +77 -0
  129. package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -0
  130. package/dist/src/runtime/emit/eager-prefetch.js +223 -0
  131. package/dist/src/runtime/emit/eager-prefetch.js.map +1 -0
  132. package/dist/src/runtime/emit/fanout-lookup-join.d.ts +130 -0
  133. package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -0
  134. package/dist/src/runtime/emit/fanout-lookup-join.js +521 -0
  135. package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -0
  136. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  137. package/dist/src/runtime/emit/schema-declarative.js +28 -2
  138. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  139. package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
  140. package/dist/src/runtime/emit/transaction.js +4 -22
  141. package/dist/src/runtime/emit/transaction.js.map +1 -1
  142. package/dist/src/runtime/parallel-driver.d.ts +68 -0
  143. package/dist/src/runtime/parallel-driver.d.ts.map +1 -0
  144. package/dist/src/runtime/parallel-driver.js +233 -0
  145. package/dist/src/runtime/parallel-driver.js.map +1 -0
  146. package/dist/src/runtime/register.d.ts.map +1 -1
  147. package/dist/src/runtime/register.js +9 -0
  148. package/dist/src/runtime/register.js.map +1 -1
  149. package/dist/src/runtime/strict-fork.d.ts +36 -0
  150. package/dist/src/runtime/strict-fork.d.ts.map +1 -0
  151. package/dist/src/runtime/strict-fork.js +125 -0
  152. package/dist/src/runtime/strict-fork.js.map +1 -0
  153. package/dist/src/schema/manager.d.ts.map +1 -1
  154. package/dist/src/schema/manager.js +0 -4
  155. package/dist/src/schema/manager.js.map +1 -1
  156. package/dist/src/util/comparison.d.ts.map +1 -1
  157. package/dist/src/util/comparison.js +11 -1
  158. package/dist/src/util/comparison.js.map +1 -1
  159. package/dist/src/vtab/capabilities.d.ts +26 -0
  160. package/dist/src/vtab/capabilities.d.ts.map +1 -1
  161. package/dist/src/vtab/concurrency.d.ts +29 -0
  162. package/dist/src/vtab/concurrency.d.ts.map +1 -0
  163. package/dist/src/vtab/concurrency.js +47 -0
  164. package/dist/src/vtab/concurrency.js.map +1 -0
  165. package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
  166. package/dist/src/vtab/memory/layer/scan-layer.js +67 -29
  167. package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
  168. package/dist/src/vtab/memory/module.d.ts +21 -0
  169. package/dist/src/vtab/memory/module.d.ts.map +1 -1
  170. package/dist/src/vtab/memory/module.js +23 -0
  171. package/dist/src/vtab/memory/module.js.map +1 -1
  172. package/dist/src/vtab/memory/table.d.ts.map +1 -1
  173. package/dist/src/vtab/memory/table.js +2 -0
  174. package/dist/src/vtab/memory/table.js.map +1 -1
  175. package/dist/src/vtab/module.d.ts +51 -1
  176. package/dist/src/vtab/module.d.ts.map +1 -1
  177. package/package.json +4 -3
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Rule: Eager Prefetch Probe
3
+ *
4
+ * Wraps the probe (`left`) input of a physical hash join in an
5
+ * `EagerPrefetchNode` when the build (`right`) side advertises high first-row
6
+ * latency, so the buffered pump can pipeline its probe-side reads with the
7
+ * parent emit's per-row work.
8
+ *
9
+ * Target shape: `BloomJoinNode` (physical, `PlanNodeType.HashJoin`). Per the
10
+ * node contract, **`left` is the probe (streamed) side** and `right` is the
11
+ * build (materialized) side — opposite of the textbook convention. The wrap
12
+ * target is therefore `left`.
13
+ *
14
+ * Cost gate: anchored on `node.right.physical.expectedLatencyMs`, the same
15
+ * field consumed by `rule-fanout-lookup-join` and `rule-async-gather-union-all`.
16
+ * That field is 0 on every in-process / memory-vtab leaf and non-zero only
17
+ * when a remote vtab plugin declares `expectedLatencyMs` at a leaf. As a
18
+ * consequence the rule is **inert by design on memory-vtab plans**, preserving
19
+ * the local-only golden-plan invariant the parallel rules already lock. We gate
20
+ * on the build side specifically: if `left` were the slow one the consumer
21
+ * above the join takes the latency hit regardless, so prefetching it doesn't
22
+ * change first-row time meaningfully.
23
+ *
24
+ * Skip predicates (the probe is already pump-driven or pre-materialized):
25
+ * - `left` is an `EagerPrefetchNode` — already wrapped (idempotence).
26
+ * - `left` is a `Cache` — pre-materialized; a prefetch over a cache buys
27
+ * nothing and confuses plan output.
28
+ * - `left` is an `AsyncGather` — already drives its branches concurrently;
29
+ * inserting a prefetch buffer just adds latency-of-first-row.
30
+ *
31
+ * Concurrency gate: as of the eager-start change, the prefetch pump begins on
32
+ * `run()` (scheduler arg-assembly), so the probe (`left`) subtree iterates
33
+ * **concurrently** with the build's for-await over `right`. If either side sits
34
+ * over a non-reentrant (`'serial'`) cursor, concurrent iteration corrupts state.
35
+ * We therefore only wrap when **both** `node.left` and `node.right` advertise
36
+ * `physical.concurrencySafe === true` (mirroring `rule-async-gather-union-all`'s
37
+ * strict `=== true` check — wrap only when *proven* safe; `undefined` blocks).
38
+ *
39
+ * Idempotence: after the rewrite `left` is an `EagerPrefetchNode`, so a second
40
+ * firing hits the first skip predicate and no-ops.
41
+ */
42
+ import { createLogger } from '../../../common/logger.js';
43
+ import { PlanNodeType } from '../../nodes/plan-node-type.js';
44
+ import { BloomJoinNode } from '../../nodes/bloom-join-node.js';
45
+ import { EagerPrefetchNode } from '../../nodes/eager-prefetch-node.js';
46
+ const log = createLogger('optimizer:rule:eager-prefetch-probe');
47
+ export function ruleEagerPrefetchProbe(node, context) {
48
+ if (!(node instanceof BloomJoinNode))
49
+ return null;
50
+ const probe = node.left;
51
+ // Skip predicates: probe is already pump-driven or pre-materialized.
52
+ if (probe.nodeType === PlanNodeType.EagerPrefetch)
53
+ return null;
54
+ if (probe.nodeType === PlanNodeType.Cache)
55
+ return null;
56
+ if (probe.nodeType === PlanNodeType.AsyncGather)
57
+ return null;
58
+ // Concurrency gate: the eager pump iterates the probe concurrently with the
59
+ // build's for-await, so both sides must be proven concurrency-safe.
60
+ if (probe.physical.concurrencySafe !== true)
61
+ return null;
62
+ if (node.right.physical.concurrencySafe !== true)
63
+ return null;
64
+ // Cost gate: only fire when the build (right) side is high-latency. Inert
65
+ // on memory-vtab plans where expectedLatencyMs is 0 throughout.
66
+ const buildLatency = node.right.physical.expectedLatencyMs ?? 0;
67
+ if (buildLatency < context.tuning.parallel.prefetchProbeThresholdMs)
68
+ return null;
69
+ const bufferSize = context.tuning.parallel.prefetchBufferSize;
70
+ log('Wrapping probe side of hash join %s in EagerPrefetch (buildLatency=%d ms, threshold=%d ms, buffer=%d)', node.id, buildLatency, context.tuning.parallel.prefetchProbeThresholdMs, bufferSize);
71
+ const wrappedProbe = new EagerPrefetchNode(node.scope, probe, bufferSize);
72
+ // withChildren expects [left, right, residual?]; preserve the residual.
73
+ const newChildren = [wrappedProbe, node.right];
74
+ if (node.residualCondition)
75
+ newChildren.push(node.residualCondition);
76
+ return node.withChildren(newChildren);
77
+ }
78
+ //# sourceMappingURL=rule-eager-prefetch-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-eager-prefetch-probe.js","sourceRoot":"","sources":["../../../../../src/planner/rules/parallel/rule-eager-prefetch-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,GAAG,GAAG,YAAY,CAAC,qCAAqC,CAAC,CAAC;AAEhE,MAAM,UAAU,sBAAsB,CAAC,IAAc,EAAE,OAAmB;IACzE,IAAI,CAAC,CAAC,IAAI,YAAY,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IAExB,qEAAqE;IACrE,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE7D,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9D,0EAA0E;IAC1E,gEAAgE;IAChE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC;IAChE,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB;QAAE,OAAO,IAAI,CAAC;IAEjF,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAE9D,GAAG,CACF,uGAAuG,EACvG,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,UAAU,CACnF,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAE1E,wEAAwE;IACxE,MAAM,WAAW,GAAe,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,iBAAiB;QAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAErE,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAM3B,WAAW,EAAE,KAAK;IALnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;gBAG1D,WAAW,EAAE,KAAK,EAClC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;IAM1D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAiDrG;;OAEG;IACH,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,sBAAsB,CAAC;CAIrE"}
1
+ {"version":3,"file":"param.d.ts","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAUtD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,SAAS;aAM3B,WAAW,EAAE,KAAK;IALnC,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;gBAG1D,WAAW,EAAE,KAAK,EAClC,cAAc,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;IAM1D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,OAAO,SAAS,GAAG,SAAS;IAmDrG;;OAEG;IACH,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,sBAAsB,CAAC;CAIrE"}
@@ -28,22 +28,24 @@ export class ParameterScope extends BaseScope {
28
28
  const parameterExpression = expression;
29
29
  let resolvedType = DEFAULT_PARAMETER_TYPE;
30
30
  if (symbolKey === '?') {
31
- // Use the current _nextAnonymousIndex as the potential identifier for this '?'
32
- const currentAnonymousId = this._nextAnonymousIndex;
33
- // Check if this specific anonymous parameter (by its future index) has a declared type
31
+ // Positional '?' parameters bind in SOURCE-TEXT order. The parser stamps each '?'
32
+ // with a left-to-right, 1-based `index` (parser.ts: this.parameterPosition++), and the
33
+ // rest of the pipeline keys positional args by array position (database.ts/statement.ts
34
+ // boundArgs[index+1], core/param.ts type hints). So we MUST honour the parser's text-order
35
+ // index here rather than re-deriving order from when the planner happens to resolve nodes
36
+ // (FROM/WHERE resolve before SELECT-projection), which would mis-order a projection '?'
37
+ // relative to later WHERE/FROM '?'s and also mis-assign type hints.
38
+ //
39
+ // Fall back to the running counter only for synthetic parameter nodes that lack an index.
40
+ const currentAnonymousId = parameterExpression.index ?? this._nextAnonymousIndex;
41
+ // Check if this specific anonymous parameter (by its text-order index) has a declared type
34
42
  if (this._parameterTypes.has(currentAnonymousId)) {
35
43
  resolvedType = this._parameterTypes.get(currentAnonymousId);
36
44
  }
37
- // Note: We don't check _parameters here for '?' because each '?' AST node should resolve,
38
- // potentially creating a new ParameterReferenceNode if it's a new '?' instance in the query,
39
- // even if it gets the same numeric index as a previous one *if* they were different AST nodes.
40
- // The _parameters map is more for caching resolved nodes per unique AST node or name.
41
- // For '?', the ParameterReferenceNode constructor expects the numeric index.
42
- // We use currentAnonymousId as the identifier and increment after creation.
43
45
  identifier = currentAnonymousId;
44
46
  parameterNode = new ParameterReferenceNode(this, parameterExpression, identifier, resolvedType);
45
- this._parameters.set(identifier, parameterNode); // Cache it by its assigned numeric ID
46
- this._nextAnonymousIndex++; // Increment for the *next* '?'
47
+ this._parameters.set(identifier, parameterNode); // Cache it by its text-order numeric ID
48
+ this._nextAnonymousIndex++; // Advance the fallback counter for any index-less synthetic '?'
47
49
  }
48
50
  else if (symbolKey.startsWith(':')) {
49
51
  const nameOrIndex = symbolKey.substring(1);
@@ -1 +1 @@
1
- {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"param.js","sourceRoot":"","sources":["../../../../src/planner/scopes/param.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,7 @@ export function relationTypeFromTableSchema(tableSchema) {
52
52
  }
53
53
  return {
54
54
  typeClass: 'relation',
55
- isReadOnly: !!(tableSchema.isView || tableSchema.isTemporary),
55
+ isReadOnly: !!(tableSchema.isView || tableSchema.isReadOnly),
56
56
  isSet: true, // Base tables are sets by definition (enforced by primary keys)
57
57
  columns: columnDefs,
58
58
  keys: keys,
@@ -1 +1 @@
1
- {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/planner/type-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../../src/planner/type-utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAoC,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAwB;IAClE,MAAM,UAAU,GAAgB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAiB,EAAE,EAAE;QAC5E,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE;gBACR,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,SAAS;gBAC5B,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO;gBACtB,UAAU,EAAE,KAAK;aACjB;YACE,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,IAAI,WAAW,CAAC,oBAAoB,IAAI,WAAW,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpF,MAAM,UAAU,GAAa,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1E,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,2EAA2E;IAC3E,wEAAwE;IACxE,qEAAqE;IACrE,yEAAyE;IACzE,wEAAwE;IACxE,yEAAyE;IACzE,uEAAuE;IACvE,6EAA6E;IAC7E,qEAAqE;IACrE,6EAA6E;IAC7E,yEAAyE;IACzE,qBAAqB;IACrB,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;QAClC,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;YAC/C,IAAI,EAAE,CAAC,SAAS,KAAK,SAAS;gBAAE,SAAS;YACzC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9E,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC;QAC5D,KAAK,EAAE,IAAI,EAAE,gEAAgE;QAC7E,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,IAAI;QACV,oFAAoF;QACpF,cAAc,EAAE,EAAE,EAAE,cAAc;KACnC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAe;IACpD,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAErD,OAAO;QACL,SAAS,EAAE,QAAQ;QACnB,WAAW;QACX,QAAQ,EAAE,IAAI,EAAE,kDAAkD;QAClE,UAAU,EAAE,IAAI,EAAE,8DAA8D;KACjF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiC,EAAE,MAAiC,EAAE,OAAiB;IAC7H,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,YAAY,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAClL,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAoB,EAAE,MAAoB,EAAE,OAAiB;IACrG,OAAO,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,MAAoB;IACtE,OAAO;QACN,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACL,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa,EAAE,MAAM,CAAC,SAAS;YAC/B,QAAQ,EAAE,CAAC,MAAM,CAAC,OAAO;YACzB,UAAU,EAAE,KAAK;SACjB;QACD,SAAS,EAAE,MAAM,CAAC,SAAS;KAC3B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-validator.d.ts","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoB,QAAQ,EAA2B,MAAM,uBAAuB,CAAC;AAS5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAc1F;AAoRD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CASrD"}
1
+ {"version":3,"file":"plan-validator.d.ts","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoB,QAAQ,EAA2B,MAAM,uBAAuB,CAAC;AAU5F;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,oEAAoE;IACpE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mDAAmD;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI,CAuB1F;AAmQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CASrD"}
@@ -7,6 +7,7 @@ import { PlanNodeType } from '../nodes/plan-node-type.js';
7
7
  import { QuereusError } from '../../common/errors.js';
8
8
  import { StatusCode } from '../../common/types.js';
9
9
  import { validateLog } from '../debug/logger-utils.js';
10
+ import { computeAttributeProvenance } from '../analysis/attribute-provenance.js';
10
11
  const log = validateLog();
11
12
  /**
12
13
  * Validate a physical plan tree before emission
@@ -23,6 +24,13 @@ export function validatePhysicalTree(root, options = {}) {
23
24
  };
24
25
  log('Starting plan validation for tree rooted at %s', root.nodeType);
25
26
  const context = new ValidationContext(opts);
27
+ // Derive the attribute-provenance surface once. This both (a) detects
28
+ // duplicate origins (throws) and (b) yields the complete attrId → origin map
29
+ // regardless of traversal order, so the in-scope check below is order-free
30
+ // and forwarding (Set/Join/EagerPrefetch/AsyncGather/Project) never trips it.
31
+ if (opts.validateAttributes) {
32
+ context.provenance = computeAttributeProvenance(root);
33
+ }
26
34
  validateNode(root, context, []);
27
35
  log('Plan validation completed successfully');
28
36
  }
@@ -31,29 +39,17 @@ export function validatePhysicalTree(root, options = {}) {
31
39
  */
32
40
  class ValidationContext {
33
41
  options;
34
- /** All attribute IDs seen so far */
35
- attributeIds = new Set();
36
- /** Map of attribute ID to node path for debugging */
37
- attributeLocations = new Map();
42
+ /** attrId originating node, precomputed once when validateAttributes is on. */
43
+ provenance;
38
44
  constructor(options) {
39
45
  this.options = options;
40
46
  }
41
47
  /**
42
- * Register an attribute ID and check for duplicates
43
- */
44
- registerAttribute(attrId, nodePath) {
45
- if (this.attributeIds.has(attrId)) {
46
- const existingLocation = this.attributeLocations.get(attrId);
47
- throw new QuereusError(`Duplicate attribute ID ${attrId} found at ${nodePath} (previously seen at ${existingLocation})`, StatusCode.INTERNAL);
48
- }
49
- this.attributeIds.add(attrId);
50
- this.attributeLocations.set(attrId, nodePath);
51
- }
52
- /**
53
- * Check if an attribute ID exists
48
+ * Check if an attribute ID is in scope anywhere in the tree (originated or
49
+ * forwarded). Matches the prior global-set scoping semantics.
54
50
  */
55
51
  hasAttribute(attrId) {
56
- return this.attributeIds.has(attrId);
52
+ return this.provenance?.has(attrId) ?? false;
57
53
  }
58
54
  }
59
55
  /**
@@ -148,12 +144,14 @@ function validateRelationalNode(node, context, nodePath) {
148
144
  if (needsAttributes && attributes.length === 0) {
149
145
  log('Warning: Relational node %s has no attributes at %s', node.nodeType, nodePath);
150
146
  }
151
- // Register all attribute IDs and check for duplicates within this node
147
+ // Per-attribute shape checks. Duplicate-origin detection lives in the
148
+ // precomputed provenance surface (computeAttributeProvenance), not here —
149
+ // attribute-preserving parents (Set/Join/EagerPrefetch/AsyncGather) forward
150
+ // child ids verbatim and must not be flagged as duplicates.
152
151
  for (const attr of attributes) {
153
152
  if (typeof attr.id !== 'number') {
154
153
  throw new QuereusError(`Invalid attribute ID ${attr.id} (must be number) at ${nodePath}`, StatusCode.INTERNAL);
155
154
  }
156
- context.registerAttribute(attr.id, nodePath);
157
155
  // Validate attribute properties
158
156
  if (!attr.name || typeof attr.name !== 'string') {
159
157
  throw new QuereusError(`Attribute ${attr.id} has invalid name "${attr.name}" at ${nodePath}`, StatusCode.INTERNAL);
@@ -1 +1 @@
1
- {"version":3,"file":"plan-validator.js","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-validator.js","sourceRoot":"","sources":["../../../../src/planner/validation/plan-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * A counting semaphore with a FIFO waiter queue, used to bound the number of
3
+ * concurrent in-flight branch lookups across *all* in-flight outer rows in a
4
+ * batched fan-out lookup join.
5
+ *
6
+ * Mirrors the waiter discipline in {@link BoundedPrefetchBuffer}
7
+ * (`runtime/emit/eager-prefetch.ts`) but as a counting semaphore rather than a
8
+ * 1-slot buffer:
9
+ *
10
+ * - {@link acquire} resolves immediately when a permit is free, otherwise
11
+ * enqueues a waiter that resolves once a permit is handed to it.
12
+ * - The release callback returned by {@link acquire} is **single-shot**: a
13
+ * second call is a no-op. On release the permit is handed directly to the
14
+ * head of the waiter queue (preserving FIFO) or returned to the pool when no
15
+ * waiter is queued.
16
+ *
17
+ * Exported for unit testing — production callers go through the batched
18
+ * fan-out lookup join driver.
19
+ */
20
+ export declare class AsyncSemaphore {
21
+ private available;
22
+ private readonly waiters;
23
+ constructor(permits: number);
24
+ /** Number of currently-available permits (for tests/diagnostics). */
25
+ get availablePermits(): number;
26
+ /** Number of acquirers currently blocked waiting for a permit. */
27
+ get waiterCount(): number;
28
+ /**
29
+ * Acquire one permit, resolving with a single-shot release function. When no
30
+ * permit is free the returned promise resolves once a permit is handed to
31
+ * this acquirer in FIFO order.
32
+ */
33
+ acquire(): Promise<() => void>;
34
+ private makeRelease;
35
+ }
36
+ //# sourceMappingURL=async-semaphore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-semaphore.d.ts","sourceRoot":"","sources":["../../../src/runtime/async-semaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,EAAE,MAAM;IAO3B,qEAAqE;IACrE,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,kEAAkE;IAClE,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;OAIG;IACH,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;IAa9B,OAAO,CAAC,WAAW;CAenB"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * A counting semaphore with a FIFO waiter queue, used to bound the number of
3
+ * concurrent in-flight branch lookups across *all* in-flight outer rows in a
4
+ * batched fan-out lookup join.
5
+ *
6
+ * Mirrors the waiter discipline in {@link BoundedPrefetchBuffer}
7
+ * (`runtime/emit/eager-prefetch.ts`) but as a counting semaphore rather than a
8
+ * 1-slot buffer:
9
+ *
10
+ * - {@link acquire} resolves immediately when a permit is free, otherwise
11
+ * enqueues a waiter that resolves once a permit is handed to it.
12
+ * - The release callback returned by {@link acquire} is **single-shot**: a
13
+ * second call is a no-op. On release the permit is handed directly to the
14
+ * head of the waiter queue (preserving FIFO) or returned to the pool when no
15
+ * waiter is queued.
16
+ *
17
+ * Exported for unit testing — production callers go through the batched
18
+ * fan-out lookup join driver.
19
+ */
20
+ export class AsyncSemaphore {
21
+ available;
22
+ waiters = [];
23
+ constructor(permits) {
24
+ if (!Number.isInteger(permits) || permits < 1) {
25
+ throw new RangeError(`AsyncSemaphore: permits must be a positive integer, got ${permits}`);
26
+ }
27
+ this.available = permits;
28
+ }
29
+ /** Number of currently-available permits (for tests/diagnostics). */
30
+ get availablePermits() {
31
+ return this.available;
32
+ }
33
+ /** Number of acquirers currently blocked waiting for a permit. */
34
+ get waiterCount() {
35
+ return this.waiters.length;
36
+ }
37
+ /**
38
+ * Acquire one permit, resolving with a single-shot release function. When no
39
+ * permit is free the returned promise resolves once a permit is handed to
40
+ * this acquirer in FIFO order.
41
+ */
42
+ acquire() {
43
+ if (this.available > 0) {
44
+ this.available--;
45
+ return Promise.resolve(this.makeRelease());
46
+ }
47
+ return new Promise(resolve => {
48
+ // The waiter is handed a fresh single-shot release when a permit
49
+ // becomes available; the permit count stays "consumed" across the
50
+ // handoff (it is never returned to the pool then re-taken).
51
+ this.waiters.push(() => resolve(this.makeRelease()));
52
+ });
53
+ }
54
+ makeRelease() {
55
+ let released = false;
56
+ return () => {
57
+ if (released)
58
+ return; // double-release is a no-op
59
+ released = true;
60
+ const next = this.waiters.shift();
61
+ if (next) {
62
+ // Hand the permit directly to the head waiter — do NOT return it to
63
+ // the pool, or a racing acquire() could steal it ahead of the queue.
64
+ next();
65
+ }
66
+ else {
67
+ this.available++;
68
+ }
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=async-semaphore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-semaphore.js","sourceRoot":"","sources":["../../../src/runtime/async-semaphore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,cAAc;IAClB,SAAS,CAAS;IACT,OAAO,GAAsB,EAAE,CAAC;IAEjD,YAAY,OAAe;QAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,UAAU,CAAC,2DAA2D,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,qEAAqE;IACrE,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,kEAAkE;IAClE,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,OAAO;QACN,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,OAAO,CAAa,OAAO,CAAC,EAAE;YACxC,iEAAiE;YACjE,kEAAkE;YAClE,4DAA4D;YAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,WAAW;QAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,OAAO,GAAG,EAAE;YACX,IAAI,QAAQ;gBAAE,OAAO,CAAC,4BAA4B;YAClD,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,IAAI,EAAE,CAAC;gBACV,oEAAoE;gBACpE,qEAAqE;gBACrE,IAAI,EAAE,CAAC;YACR,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,CAAC;QACF,CAAC,CAAC;IACH,CAAC;CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-constraint-queue.d.ts","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAOpD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,aAAa,CAAC;CAClC;AAID,qBAAa,uBAAuB;IAIvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,MAAM,CAAmC;gBAEpB,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,aAAa,GAAG,IAAI;IAiB1N,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAOpB,KAAK,IAAI,IAAI;IAKP,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBxB,aAAa;IAoB3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,cAAc;CA2BtB"}
1
+ {"version":3,"file":"deferred-constraint-queue.d.ts","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAY,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAQpD,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,iBAAiB,CAAC,EAAE,aAAa,CAAC;CAClC;AAID,qBAAa,uBAAuB;IAIvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,MAAM,CAAmC;gBAEpB,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,WAAW,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,aAAa,GAAG,IAAI;IAiB1N,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,IAAI;IAIrB,YAAY,IAAI,IAAI;IAOpB,KAAK,IAAI,IAAI;IAKP,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBxB,aAAa;IAoB3B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,KAAK;IAYb,OAAO,CAAC,cAAc;CA2BtB"}
@@ -1,6 +1,7 @@
1
1
  import { QuereusError } from '../common/errors.js';
2
2
  import { StatusCode } from '../common/types.js';
3
- import { createRowSlot, RowContextMap } from './context-helpers.js';
3
+ import { createRowSlot } from './context-helpers.js';
4
+ import { createStrictRowContextMap, wrapTableContextsStrict } from './strict-fork.js';
4
5
  import { composeCombinedDescriptor } from './descriptor-helpers.js';
5
6
  export class DeferredConstraintQueue {
6
7
  db;
@@ -52,8 +53,8 @@ export class DeferredConstraintQueue {
52
53
  db: this.db,
53
54
  stmt: undefined,
54
55
  params: {},
55
- context: new RowContextMap(),
56
- tableContexts: new Map(),
56
+ context: createStrictRowContextMap(),
57
+ tableContexts: wrapTableContextsStrict(new Map()),
57
58
  tracer: this.db.getInstructionTracer(),
58
59
  enableMetrics: this.db.options.getBooleanOption('runtime_stats'),
59
60
  };
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-constraint-queue.js","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deferred-constraint-queue.js","sourceRoot":"","sources":["../../../src/runtime/deferred-constraint-queue.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"add-constraint.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/add-constraint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAkE7F"}
1
+ {"version":3,"file":"add-constraint.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/add-constraint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAuB7F"}
@@ -6,46 +6,15 @@ const log = createLogger('runtime:emit:add-constraint');
6
6
  export function emitAddConstraint(plan, _ctx) {
7
7
  const tableSchema = plan.table.tableSchema;
8
8
  async function run(rctx) {
9
- // Convert the AST constraint to a schema constraint object
9
+ // Ensure we're in a transaction before DDL (lazy/JIT transaction start).
10
+ await rctx.db._ensureTransaction();
10
11
  const constraint = plan.constraint;
11
- if (constraint.type !== 'check') {
12
- throw new QuereusError(`ADD CONSTRAINT ${constraint.type} is not yet implemented`, StatusCode.UNSUPPORTED);
13
- }
14
- if (!constraint.expr) {
15
- throw new QuereusError('CHECK constraint requires an expression', StatusCode.ERROR);
16
- }
17
- // Create the constraint schema object
18
- // Note: We don't validate determinism here because constraints may reference NEW/OLD
19
- // which require special scoping. Determinism is validated at INSERT/UPDATE plan time
20
- // in constraint-builder.ts when the constraint is actually checked.
21
- const constraintSchema = {
22
- name: constraint.name || `check_${tableSchema.checkConstraints.length}`,
23
- expr: constraint.expr,
24
- operations: opsToMask(constraint.operations), // Convert operations array to bitmask
25
- deferrable: constraint.deferrable ?? false,
26
- initiallyDeferred: constraint.initiallyDeferred,
27
- };
28
- // Create a new table schema with the additional constraint (honor immutability)
29
- const updatedConstraints = [...tableSchema.checkConstraints, constraintSchema];
30
- const updatedTableSchema = {
31
- ...tableSchema,
32
- checkConstraints: Object.freeze(updatedConstraints),
33
- };
34
- // Replace the table schema in the database
35
12
  const schemaManager = rctx.db.schemaManager;
36
13
  const schema = schemaManager.getSchemaOrFail(tableSchema.schemaName);
37
- // Replace the table schema (addTable overwrites existing)
38
- schema.addTable(updatedTableSchema);
39
- // Notify schema change listeners that the table was modified
40
- schemaManager.getChangeNotifier().notifyChange({
41
- type: 'table_modified',
42
- schemaName: tableSchema.schemaName,
43
- objectName: tableSchema.name,
44
- oldObject: tableSchema,
45
- newObject: updatedTableSchema
46
- });
47
- log('Added constraint %s to table %s.%s', constraintSchema.name, tableSchema.schemaName, tableSchema.name);
48
- return null;
14
+ if (constraint.type === 'check') {
15
+ return runAddCheck(rctx, tableSchema, schema, constraint);
16
+ }
17
+ return runAddConstraintViaModule(rctx, tableSchema, schema, constraint);
49
18
  }
50
19
  return {
51
20
  params: [],
@@ -53,4 +22,49 @@ export function emitAddConstraint(plan, _ctx) {
53
22
  note: `addConstraint(${plan.table.tableSchema.name}, ${plan.constraint.name || 'unnamed'})`
54
23
  };
55
24
  }
25
+ async function runAddCheck(rctx, tableSchema, schema, constraint) {
26
+ if (!constraint.expr) {
27
+ throw new QuereusError('CHECK constraint requires an expression', StatusCode.ERROR);
28
+ }
29
+ // Note: We don't validate determinism here because constraints may reference NEW/OLD
30
+ // which require special scoping. Determinism is validated at INSERT/UPDATE plan time
31
+ // in constraint-builder.ts when the constraint is actually checked.
32
+ const constraintSchema = {
33
+ name: constraint.name || `check_${tableSchema.checkConstraints.length}`,
34
+ expr: constraint.expr,
35
+ operations: opsToMask(constraint.operations),
36
+ };
37
+ const updatedConstraints = [...tableSchema.checkConstraints, constraintSchema];
38
+ const updatedTableSchema = {
39
+ ...tableSchema,
40
+ checkConstraints: Object.freeze(updatedConstraints),
41
+ };
42
+ schema.addTable(updatedTableSchema);
43
+ rctx.db.schemaManager.getChangeNotifier().notifyChange({
44
+ type: 'table_modified',
45
+ schemaName: tableSchema.schemaName,
46
+ objectName: tableSchema.name,
47
+ oldObject: tableSchema,
48
+ newObject: updatedTableSchema
49
+ });
50
+ log('Added CHECK constraint %s to table %s.%s', constraintSchema.name, tableSchema.schemaName, tableSchema.name);
51
+ return null;
52
+ }
53
+ async function runAddConstraintViaModule(rctx, tableSchema, schema, constraint) {
54
+ const module = tableSchema.vtabModule;
55
+ if (!module.alterTable) {
56
+ throw new QuereusError(`Module for table '${tableSchema.name}' does not support ADD CONSTRAINT`, StatusCode.UNSUPPORTED);
57
+ }
58
+ const updatedTableSchema = await module.alterTable(rctx.db, tableSchema.schemaName, tableSchema.name, { type: 'addConstraint', constraint });
59
+ schema.addTable(updatedTableSchema);
60
+ rctx.db.schemaManager.getChangeNotifier().notifyChange({
61
+ type: 'table_modified',
62
+ schemaName: tableSchema.schemaName,
63
+ objectName: tableSchema.name,
64
+ oldObject: tableSchema,
65
+ newObject: updatedTableSchema,
66
+ });
67
+ log('Added %s constraint %s to table %s.%s', constraint.type, constraint.name || 'unnamed', tableSchema.schemaName, tableSchema.name);
68
+ return null;
69
+ }
56
70
  //# sourceMappingURL=add-constraint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-constraint.js","sourceRoot":"","sources":["../../../../src/runtime/emit/add-constraint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAY,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,GAAG,GAAG,YAAY,CAAC,6BAA6B,CAAC,CAAC;AAExD,MAAM,UAAU,iBAAiB,CAAC,IAAuB,EAAE,IAAqB;IAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;IAE3C,KAAK,UAAU,GAAG,CAAC,IAAoB;QACtC,2DAA2D;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,YAAY,CACrB,kBAAkB,UAAU,CAAC,IAAI,yBAAyB,EAC1D,UAAU,CAAC,WAAW,CACtB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,YAAY,CACrB,yCAAyC,EACzC,UAAU,CAAC,KAAK,CAChB,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,qFAAqF;QACrF,qFAAqF;QACrF,oEAAoE;QACpE,MAAM,gBAAgB,GAAwB;YAC7C,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE;YACvE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,sCAAsC;YACpF,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,KAAK;YAC1C,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;SAC/C,CAAC;QAEF,gFAAgF;QAChF,MAAM,kBAAkB,GAAG,CAAC,GAAG,WAAW,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC/E,MAAM,kBAAkB,GAAgB;YACvC,GAAG,WAAW;YACd,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;SACnD,CAAC;QAEF,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAErE,0DAA0D;QAC1D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAEpC,6DAA6D;QAC7D,aAAa,CAAC,iBAAiB,EAAE,CAAC,YAAY,CAAC;YAC9C,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,UAAU,EAAE,WAAW,CAAC,IAAI;YAC5B,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QAEH,GAAG,CAAC,oCAAoC,EAAE,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAE3G,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO;QACN,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,GAAqB;QAC1B,IAAI,EAAE,iBAAiB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,GAAG;KAC3F,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"add-constraint.js","sourceRoot":"","sources":["../../../../src/runtime/emit/add-constraint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/alter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAmD,MAAM,uBAAuB,CAAC;AAkBtI,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CA2CvF;AAgqBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,0BAA0B,EAAE,GACpC,MAAM,CAuCR"}
1
+ {"version":3,"file":"alter-table.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/alter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAmD,MAAM,uBAAuB,CAAC;AAkBtI,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CA2CvF;AA8pBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,0BAA0B,EAAE,GACpC,MAAM,CAuCR"}
@@ -253,8 +253,6 @@ function extractColumnLevelCheckConstraints(columnDef) {
253
253
  name: con.name ?? `_check_${columnDef.name}`,
254
254
  expr: con.expr,
255
255
  operations: opsToMask(con.operations),
256
- deferrable: con.deferrable,
257
- initiallyDeferred: con.initiallyDeferred,
258
256
  tags: con.tags && Object.keys(con.tags).length > 0 ? Object.freeze({ ...con.tags }) : undefined,
259
257
  });
260
258
  }