@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.
- package/dist/src/core/database-assertions.js +3 -3
- package/dist/src/core/database-assertions.js.map +1 -1
- package/dist/src/core/database.d.ts +17 -3
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +79 -6
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.js +3 -3
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/emit/ast-stringify.d.ts +0 -1
- package/dist/src/emit/ast-stringify.d.ts.map +1 -1
- package/dist/src/emit/ast-stringify.js +187 -78
- package/dist/src/emit/ast-stringify.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/parser/ast.d.ts +0 -4
- package/dist/src/parser/ast.d.ts.map +1 -1
- package/dist/src/parser/parser.d.ts +9 -1
- package/dist/src/parser/parser.d.ts.map +1 -1
- package/dist/src/parser/parser.js +33 -20
- package/dist/src/parser/parser.js.map +1 -1
- package/dist/src/parser/visitor.js +1 -1
- package/dist/src/parser/visitor.js.map +1 -1
- package/dist/src/planner/analysis/attribute-provenance.d.ts +45 -0
- package/dist/src/planner/analysis/attribute-provenance.d.ts.map +1 -0
- package/dist/src/planner/analysis/attribute-provenance.js +81 -0
- package/dist/src/planner/analysis/attribute-provenance.js.map +1 -0
- package/dist/src/planner/analysis/const-evaluator.js +5 -5
- package/dist/src/planner/analysis/const-evaluator.js.map +1 -1
- package/dist/src/planner/building/select-window.d.ts.map +1 -1
- package/dist/src/planner/building/select-window.js +54 -21
- package/dist/src/planner/building/select-window.js.map +1 -1
- package/dist/src/planner/cache/correlation-detector.d.ts +7 -0
- package/dist/src/planner/cache/correlation-detector.d.ts.map +1 -1
- package/dist/src/planner/cache/correlation-detector.js +34 -2
- package/dist/src/planner/cache/correlation-detector.js.map +1 -1
- package/dist/src/planner/nodes/async-gather-node.d.ts +169 -0
- package/dist/src/planner/nodes/async-gather-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/async-gather-node.js +488 -0
- package/dist/src/planner/nodes/async-gather-node.js.map +1 -0
- package/dist/src/planner/nodes/bloom-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/bloom-join-node.js +8 -7
- package/dist/src/planner/nodes/bloom-join-node.js.map +1 -1
- package/dist/src/planner/nodes/eager-prefetch-node.d.ts +47 -0
- package/dist/src/planner/nodes/eager-prefetch-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/eager-prefetch-node.js +96 -0
- package/dist/src/planner/nodes/eager-prefetch-node.js.map +1 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts +150 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.d.ts.map +1 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.js +265 -0
- package/dist/src/planner/nodes/fanout-lookup-join-node.js.map +1 -0
- package/dist/src/planner/nodes/merge-join-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/merge-join-node.js +8 -7
- package/dist/src/planner/nodes/merge-join-node.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +3 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +3 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/plan-node.d.ts +36 -0
- package/dist/src/planner/nodes/plan-node.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node.js +26 -0
- package/dist/src/planner/nodes/plan-node.js.map +1 -1
- package/dist/src/planner/nodes/reference.d.ts.map +1 -1
- package/dist/src/planner/nodes/reference.js +36 -1
- package/dist/src/planner/nodes/reference.js.map +1 -1
- package/dist/src/planner/optimizer-tuning.d.ts +107 -0
- package/dist/src/planner/optimizer-tuning.d.ts.map +1 -1
- package/dist/src/planner/optimizer-tuning.js +43 -0
- package/dist/src/planner/optimizer-tuning.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +91 -0
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-monotonic-range-access.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js +1 -6
- package/dist/src/planner/rules/access/rule-monotonic-range-access.js.map +1 -1
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts +74 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js +139 -0
- package/dist/src/planner/rules/join/rule-fanout-batched-outer.js.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts +58 -0
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js +592 -0
- package/dist/src/planner/rules/join/rule-fanout-lookup-join.js.map +1 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts +43 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.d.ts.map +1 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js +115 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-union-all.js.map +1 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts +102 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.d.ts.map +1 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js +545 -0
- package/dist/src/planner/rules/parallel/rule-async-gather-zip-by-key.js.map +1 -0
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts +45 -0
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.d.ts.map +1 -0
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js +78 -0
- package/dist/src/planner/rules/parallel/rule-eager-prefetch-probe.js.map +1 -0
- package/dist/src/planner/scopes/param.d.ts.map +1 -1
- package/dist/src/planner/scopes/param.js +13 -11
- package/dist/src/planner/scopes/param.js.map +1 -1
- package/dist/src/planner/type-utils.js +1 -1
- package/dist/src/planner/type-utils.js.map +1 -1
- package/dist/src/planner/validation/plan-validator.d.ts.map +1 -1
- package/dist/src/planner/validation/plan-validator.js +17 -19
- package/dist/src/planner/validation/plan-validator.js.map +1 -1
- package/dist/src/runtime/async-semaphore.d.ts +36 -0
- package/dist/src/runtime/async-semaphore.d.ts.map +1 -0
- package/dist/src/runtime/async-semaphore.js +72 -0
- package/dist/src/runtime/async-semaphore.js.map +1 -0
- package/dist/src/runtime/deferred-constraint-queue.d.ts.map +1 -1
- package/dist/src/runtime/deferred-constraint-queue.js +4 -3
- package/dist/src/runtime/deferred-constraint-queue.js.map +1 -1
- package/dist/src/runtime/emit/add-constraint.d.ts.map +1 -1
- package/dist/src/runtime/emit/add-constraint.js +51 -37
- package/dist/src/runtime/emit/add-constraint.js.map +1 -1
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +0 -2
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/async-gather.d.ts +77 -0
- package/dist/src/runtime/emit/async-gather.d.ts.map +1 -0
- package/dist/src/runtime/emit/async-gather.js +234 -0
- package/dist/src/runtime/emit/async-gather.js.map +1 -0
- package/dist/src/runtime/emit/bloom-join.d.ts.map +1 -1
- package/dist/src/runtime/emit/bloom-join.js +38 -17
- package/dist/src/runtime/emit/bloom-join.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +12 -52
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/eager-prefetch.d.ts +77 -0
- package/dist/src/runtime/emit/eager-prefetch.d.ts.map +1 -0
- package/dist/src/runtime/emit/eager-prefetch.js +223 -0
- package/dist/src/runtime/emit/eager-prefetch.js.map +1 -0
- package/dist/src/runtime/emit/fanout-lookup-join.d.ts +130 -0
- package/dist/src/runtime/emit/fanout-lookup-join.d.ts.map +1 -0
- package/dist/src/runtime/emit/fanout-lookup-join.js +521 -0
- package/dist/src/runtime/emit/fanout-lookup-join.js.map +1 -0
- package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
- package/dist/src/runtime/emit/schema-declarative.js +28 -2
- package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
- package/dist/src/runtime/emit/transaction.d.ts.map +1 -1
- package/dist/src/runtime/emit/transaction.js +4 -22
- package/dist/src/runtime/emit/transaction.js.map +1 -1
- package/dist/src/runtime/parallel-driver.d.ts +68 -0
- package/dist/src/runtime/parallel-driver.d.ts.map +1 -0
- package/dist/src/runtime/parallel-driver.js +233 -0
- package/dist/src/runtime/parallel-driver.js.map +1 -0
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +9 -0
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/strict-fork.d.ts +36 -0
- package/dist/src/runtime/strict-fork.d.ts.map +1 -0
- package/dist/src/runtime/strict-fork.js +125 -0
- package/dist/src/runtime/strict-fork.js.map +1 -0
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +0 -4
- package/dist/src/schema/manager.js.map +1 -1
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +11 -1
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/vtab/capabilities.d.ts +26 -0
- package/dist/src/vtab/capabilities.d.ts.map +1 -1
- package/dist/src/vtab/concurrency.d.ts +29 -0
- package/dist/src/vtab/concurrency.d.ts.map +1 -0
- package/dist/src/vtab/concurrency.js +47 -0
- package/dist/src/vtab/concurrency.js.map +1 -0
- package/dist/src/vtab/memory/layer/scan-layer.d.ts.map +1 -1
- package/dist/src/vtab/memory/layer/scan-layer.js +67 -29
- package/dist/src/vtab/memory/layer/scan-layer.js.map +1 -1
- package/dist/src/vtab/memory/module.d.ts +21 -0
- package/dist/src/vtab/memory/module.d.ts.map +1 -1
- package/dist/src/vtab/memory/module.js +23 -0
- package/dist/src/vtab/memory/module.js.map +1 -1
- package/dist/src/vtab/memory/table.d.ts.map +1 -1
- package/dist/src/vtab/memory/table.js +2 -0
- package/dist/src/vtab/memory/table.js.map +1 -1
- package/dist/src/vtab/module.d.ts +51 -1
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanout-lookup-join.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/fanout-lookup-join.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAkB,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAgD,MAAM,uBAAuB,CAAC;AASrG,2FAA2F;AAC3F,MAAM,MAAM,yBAAyB,GAAG,CAAC,QAAQ,EAAE,cAAc,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzF;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAC5C,iBAAiB,EAAE,aAAa,CAAC,4BAA4B,CAAC,EAC9D,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAC/B,GAAG,EAAE,CAwCP;AA0BD;;;;;;;;;;;;;;GAcG;AACH,wBAAuB,mBAAmB,CACzC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAC/B,kBAAkB,EAAE,MAAM,EAAE,EAC5B,eAAe,EAAE,aAAa,CAAC,yBAAyB,CAAC,EACzD,iBAAiB,EAAE,aAAa,CAAC,4BAA4B,CAAC,EAC9D,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,cAAqC,GAC3C,aAAa,CAAC,GAAG,CAAC,CAmCpB;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAuB,0BAA0B,CAChD,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,EAC/B,kBAAkB,EAAE,MAAM,EAAE,EAC5B,eAAe,EAAE,aAAa,CAAC,yBAAyB,CAAC,EACzD,iBAAiB,EAAE,aAAa,CAAC,4BAA4B,CAAC,EAC9D,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,MAAM,GAAE,cAAqC,GAC3C,aAAa,CAAC,GAAG,CAAC,CA6OpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CA+DlG"}
|
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
import { isLeftBranchMode, } from '../../planner/nodes/fanout-lookup-join-node.js';
|
|
2
|
+
import { emitCallFromPlan, emitPlanNode } from '../emitters.js';
|
|
3
|
+
import { ParallelDriver, bumpParentForkCounter, dropParentForkCounter } from '../parallel-driver.js';
|
|
4
|
+
import { AsyncSemaphore } from '../async-semaphore.js';
|
|
5
|
+
import { acquireConnectionLock } from '../../vtab/concurrency.js';
|
|
6
|
+
import { buildRowDescriptor } from '../../util/row-descriptor.js';
|
|
7
|
+
import { createRowSlot } from '../context-helpers.js';
|
|
8
|
+
import { QuereusError } from '../../common/errors.js';
|
|
9
|
+
import { StatusCode } from '../../common/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Wrap a branch factory in a `acquireConnectionLock` critical section. The
|
|
12
|
+
* lock is acquired on the first pull (since `async function*` bodies don't
|
|
13
|
+
* run until `next()`) and released when the inner iterator completes,
|
|
14
|
+
* throws, or is `return()`-closed.
|
|
15
|
+
*/
|
|
16
|
+
function withConnectionLock(factory, lockTarget) {
|
|
17
|
+
return (innerCtx) => (async function* lockedBranch() {
|
|
18
|
+
const release = await acquireConnectionLock(lockTarget);
|
|
19
|
+
try {
|
|
20
|
+
for await (const row of factory(innerCtx)) {
|
|
21
|
+
yield row;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
release();
|
|
26
|
+
}
|
|
27
|
+
})();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolve each branch factory to the variant the driver will invoke, applying
|
|
31
|
+
* lock wrapping where the branch is not `concurrencySafe`. Branches with no
|
|
32
|
+
* resolvable lock target (no `connectionKey` and no `rctx.activeConnection`)
|
|
33
|
+
* pass through raw — there is nothing to serialize on, so the runtime cannot
|
|
34
|
+
* enforce mutual exclusion.
|
|
35
|
+
*/
|
|
36
|
+
function resolveBranchFactories(rctx, factories, descriptors) {
|
|
37
|
+
return factories.map((factory, i) => {
|
|
38
|
+
const desc = descriptors[i];
|
|
39
|
+
if (desc.concurrencySafe)
|
|
40
|
+
return factory;
|
|
41
|
+
const lockTarget = desc.connectionKey ?? rctx.activeConnection;
|
|
42
|
+
if (!lockTarget)
|
|
43
|
+
return factory;
|
|
44
|
+
return withConnectionLock(factory, lockTarget);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Compose one outer row plus its per-branch result buffers into the **list** of
|
|
49
|
+
* wide output rows it contributes — the n-ary Cartesian product across branches,
|
|
50
|
+
* prefixed by the outer row's columns.
|
|
51
|
+
*
|
|
52
|
+
* Per-branch factor rules (a factor is the list of column-slices a branch
|
|
53
|
+
* contributes to the product):
|
|
54
|
+
*
|
|
55
|
+
* - `cross`: one factor entry per buffered row (1:n fan-out). An **empty**
|
|
56
|
+
* buffer is an inner-drop — the whole product collapses to zero rows.
|
|
57
|
+
* - `cross-left`: one factor entry per buffered row (1:n fan-out); an **empty**
|
|
58
|
+
* buffer ⇒ a single NULL-pad factor entry, preserving the outer row (LEFT
|
|
59
|
+
* semantics).
|
|
60
|
+
* - `atMostOne-inner`: empty buffer ⇒ inner-drop (zero rows); else the single
|
|
61
|
+
* row.
|
|
62
|
+
* - `atMostOne-left`: empty buffer ⇒ a single NULL-pad factor entry (LEFT-join
|
|
63
|
+
* semantics); else the single row.
|
|
64
|
+
*
|
|
65
|
+
* The product is emitted left-to-right (outer columns first, then branch 0,
|
|
66
|
+
* branch 1, …) with the right-most branch varying fastest — identical column
|
|
67
|
+
* order and row order to the chain of nested-loop joins this node replaces.
|
|
68
|
+
*
|
|
69
|
+
* `atMostOne-*` branch buffers must carry **at most one** row — that invariant
|
|
70
|
+
* is the caller's responsibility (both drivers assert it before composing);
|
|
71
|
+
* `cross` buffers may carry any number.
|
|
72
|
+
*
|
|
73
|
+
* Returns an empty array when any inner/cross branch dropped the outer row.
|
|
74
|
+
* Shared by {@link runFanOutLookupJoin} and {@link runFanOutLookupJoinBatched}
|
|
75
|
+
* so both compose identically.
|
|
76
|
+
*/
|
|
77
|
+
export function composeOuterRows(outerRow, branchBuf, branchDescriptors, padLengths) {
|
|
78
|
+
// Per-branch factor lists. Every factor pushed here has length >= 1, so the
|
|
79
|
+
// product is empty only via an early inner-drop return below.
|
|
80
|
+
const factors = [];
|
|
81
|
+
for (let i = 0; i < branchDescriptors.length; i++) {
|
|
82
|
+
const buf = branchBuf[i];
|
|
83
|
+
if (buf.length === 0) {
|
|
84
|
+
if (isLeftBranchMode(branchDescriptors[i].mode)) {
|
|
85
|
+
// atMostOne-left or cross-left: preserve the outer row with NULLs.
|
|
86
|
+
factors.push([new Array(padLengths[i]).fill(null)]);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// atMostOne-inner or cross with a zero-row match ⇒ drop the outer row.
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
// cross contributes every row; atMostOne-* contributes its single row.
|
|
95
|
+
factors.push(buf);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Iterative odometer over the factor arrays — right-most factor varies
|
|
99
|
+
// fastest, so the outer-most branch is the outer loop (nested-loop order).
|
|
100
|
+
const result = [];
|
|
101
|
+
const indices = new Array(factors.length).fill(0);
|
|
102
|
+
for (;;) {
|
|
103
|
+
const composed = [...outerRow];
|
|
104
|
+
for (let i = 0; i < factors.length; i++) {
|
|
105
|
+
const slice = factors[i][indices[i]];
|
|
106
|
+
for (let k = 0; k < slice.length; k++)
|
|
107
|
+
composed.push(slice[k]);
|
|
108
|
+
}
|
|
109
|
+
result.push(composed);
|
|
110
|
+
let j = factors.length - 1;
|
|
111
|
+
for (; j >= 0; j--) {
|
|
112
|
+
if (++indices[j] < factors[j].length)
|
|
113
|
+
break;
|
|
114
|
+
indices[j] = 0;
|
|
115
|
+
}
|
|
116
|
+
if (j < 0)
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
return result;
|
|
120
|
+
}
|
|
121
|
+
/** True when the branch's mode caps its per-outer-row output at one row. */
|
|
122
|
+
function isAtMostOne(mode) {
|
|
123
|
+
return mode === 'atMostOne-left' || mode === 'atMostOne-inner';
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Enforce the at-most-one-per-branch invariant against collected buffers,
|
|
127
|
+
* scoped to `atMostOne-*` branches only (`cross` branches are exempt). Throws
|
|
128
|
+
* {@link QuereusError} with {@link StatusCode.CONSTRAINT} on violation.
|
|
129
|
+
*/
|
|
130
|
+
function assertAtMostOne(branchBuf, branchDescriptors) {
|
|
131
|
+
for (let i = 0; i < branchDescriptors.length; i++) {
|
|
132
|
+
if (isAtMostOne(branchDescriptors[i].mode) && branchBuf[i].length > 1) {
|
|
133
|
+
throw new QuereusError(`FanOutLookupJoin: branch ${i} produced more than one row for outer row (got ${branchBuf[i].length})`, StatusCode.CONSTRAINT);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Drive a fan-out lookup join for one runtime invocation: for each outer row,
|
|
139
|
+
* fork N independent {@link RuntimeContext} views, invoke the N branch
|
|
140
|
+
* factories concurrently via {@link ParallelDriver.drive}, collect each
|
|
141
|
+
* branch's at-most-one result row, validate the `atMostOne` invariant, and
|
|
142
|
+
* yield the composed wide row (or drop the outer row when any
|
|
143
|
+
* `atMostOne-inner` branch returned zero rows).
|
|
144
|
+
*
|
|
145
|
+
* The outer row's slot is installed on `rctx.context` *before* forking so
|
|
146
|
+
* that {@link ParallelDriver.fork}'s parent-snapshot semantics propagate the
|
|
147
|
+
* binding into every branch's forked context.
|
|
148
|
+
*
|
|
149
|
+
* Exported for direct unit testing — production callers go through
|
|
150
|
+
* {@link emitFanOutLookupJoin}.
|
|
151
|
+
*/
|
|
152
|
+
export async function* runFanOutLookupJoin(rctx, outerSource, outerRowDescriptor, branchFactories, branchDescriptors, concurrencyCap, driver = new ParallelDriver()) {
|
|
153
|
+
if (branchFactories.length !== branchDescriptors.length) {
|
|
154
|
+
throw new RangeError(`runFanOutLookupJoin: branchFactories length (${branchFactories.length}) !== branchDescriptors length (${branchDescriptors.length})`);
|
|
155
|
+
}
|
|
156
|
+
if (!Number.isInteger(concurrencyCap) || concurrencyCap < 1) {
|
|
157
|
+
throw new RangeError(`runFanOutLookupJoin: concurrencyCap must be a positive integer, got ${concurrencyCap}`);
|
|
158
|
+
}
|
|
159
|
+
const branchCount = branchFactories.length;
|
|
160
|
+
const padLengths = branchDescriptors.map(b => b.outputColCount);
|
|
161
|
+
const outerSlot = createRowSlot(rctx, outerRowDescriptor);
|
|
162
|
+
try {
|
|
163
|
+
for await (const outerRow of outerSource) {
|
|
164
|
+
outerSlot.set(outerRow);
|
|
165
|
+
const wrapped = resolveBranchFactories(rctx, branchFactories, branchDescriptors);
|
|
166
|
+
const forks = driver.fork(rctx, branchCount);
|
|
167
|
+
const branchBuf = Array.from({ length: branchCount }, () => []);
|
|
168
|
+
for await (const { branch, value } of driver.drive(wrapped, forks, { concurrency: concurrencyCap })) {
|
|
169
|
+
branchBuf[branch].push(value);
|
|
170
|
+
}
|
|
171
|
+
// atMostOne invariant — defensive guard for manually-constructed plans
|
|
172
|
+
// or future rules that don't statically enforce FK→PK alignment. Only
|
|
173
|
+
// `atMostOne-*` branches are constrained; a `cross` branch legitimately
|
|
174
|
+
// yields more than one row.
|
|
175
|
+
assertAtMostOne(branchBuf, branchDescriptors);
|
|
176
|
+
for (const row of composeOuterRows(outerRow, branchBuf, branchDescriptors, padLengths)) {
|
|
177
|
+
yield row;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
outerSlot.close();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Clamp `R = ceil(globalCap / max(1, branchCount))` into `[1, maxOuterReadAhead]`. */
|
|
186
|
+
function deriveReadAhead(globalCap, branchCount, maxOuterReadAhead) {
|
|
187
|
+
const derived = Math.ceil(globalCap / Math.max(1, branchCount));
|
|
188
|
+
return Math.min(Math.max(derived, 1), maxOuterReadAhead);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Batched / pipelined outer driver for a fan-out lookup join: overlaps lookups
|
|
192
|
+
* *across* outer rows rather than only across branches within one row.
|
|
193
|
+
*
|
|
194
|
+
* Shape (single async generator):
|
|
195
|
+
*
|
|
196
|
+
* - **Outer pump** reads `outerSource`, assigning each row a monotonically
|
|
197
|
+
* increasing `seq`, and admits at most `R` rows *ahead of the emit frontier*
|
|
198
|
+
* (the lowest not-yet-emitted seq). Admission backpressure is measured from
|
|
199
|
+
* the consumer, so a slow consumer (or a slow head-of-line row) bounds how
|
|
200
|
+
* far the outer is drained. `R = clamp(ceil(globalCap/branchCount), 1,
|
|
201
|
+
* maxOuterReadAhead)`.
|
|
202
|
+
* - **Per-row context isolation (load-bearing correctness point).** Each
|
|
203
|
+
* admitted row forks its own `rowCtx` from `rctx` and installs its own
|
|
204
|
+
* {@link createRowSlot} (its own boxed `ref`). Branch forks snapshot
|
|
205
|
+
* `rowCtx`'s getter — a closure over *this row's* ref, which is never mutated
|
|
206
|
+
* again — so concurrently in-flight rows never share an outer binding. (The
|
|
207
|
+
* prior single-slot-on-parent approach is unsafe here: it mutates one shared
|
|
208
|
+
* ref per row, which would corrupt every in-flight fork.)
|
|
209
|
+
* - **Global in-flight budget.** A single {@link AsyncSemaphore} over
|
|
210
|
+
* `globalCap` bounds concurrent branch lookups across *all* in-flight rows.
|
|
211
|
+
* Each branch task acquires a permit **before** taking its connection lock
|
|
212
|
+
* (the lock is taken on the wrapped factory's first pull): a lock-holder then
|
|
213
|
+
* always also holds a permit, so a permit-holder blocked on a lock waits on
|
|
214
|
+
* another permit-holder that will release — no deadlock.
|
|
215
|
+
* - **Reorder buffer + in-order emit.** Each completed row lands in a `seq`-keyed
|
|
216
|
+
* map as the (possibly empty) list of wide rows it produced; the generator
|
|
217
|
+
* emits all of `seq = emitFrontier`'s rows contiguously as soon as they land,
|
|
218
|
+
* then advances the frontier (an empty list is a dropped outer row). Window
|
|
219
|
+
* accounting advances per `seq`, independent of product fan-out. Out-of-order
|
|
220
|
+
* completion, in-order emit — the external stream is identical to serial mode,
|
|
221
|
+
* so `computePhysical`'s ordering pass-through stays valid.
|
|
222
|
+
*
|
|
223
|
+
* Replay model: each admitted row re-executes its branch sub-plans against its
|
|
224
|
+
* own forked context. A cached branch shared across outer rows is a correlated
|
|
225
|
+
* lookup and is re-executed per row regardless.
|
|
226
|
+
*
|
|
227
|
+
* Exported for direct unit testing — production callers go through
|
|
228
|
+
* {@link emitFanOutLookupJoin}.
|
|
229
|
+
*/
|
|
230
|
+
export async function* runFanOutLookupJoinBatched(rctx, outerSource, outerRowDescriptor, branchFactories, branchDescriptors, globalCap, maxOuterReadAhead, driver = new ParallelDriver()) {
|
|
231
|
+
if (branchFactories.length !== branchDescriptors.length) {
|
|
232
|
+
throw new RangeError(`runFanOutLookupJoinBatched: branchFactories length (${branchFactories.length}) !== branchDescriptors length (${branchDescriptors.length})`);
|
|
233
|
+
}
|
|
234
|
+
if (!Number.isInteger(globalCap) || globalCap < 1) {
|
|
235
|
+
throw new RangeError(`runFanOutLookupJoinBatched: globalCap must be a positive integer, got ${globalCap}`);
|
|
236
|
+
}
|
|
237
|
+
if (!Number.isInteger(maxOuterReadAhead) || maxOuterReadAhead < 1) {
|
|
238
|
+
throw new RangeError(`runFanOutLookupJoinBatched: maxOuterReadAhead must be a positive integer, got ${maxOuterReadAhead}`);
|
|
239
|
+
}
|
|
240
|
+
const branchCount = branchFactories.length;
|
|
241
|
+
const padLengths = branchDescriptors.map(b => b.outputColCount);
|
|
242
|
+
const readAhead = deriveReadAhead(globalCap, branchCount, maxOuterReadAhead);
|
|
243
|
+
const semaphore = new AsyncSemaphore(globalCap);
|
|
244
|
+
// Row-independent: lock wrapping depends only on the branch descriptor and
|
|
245
|
+
// the (shared) active connection, so resolve once up front.
|
|
246
|
+
const wrappedFactories = resolveBranchFactories(rctx, branchFactories, branchDescriptors);
|
|
247
|
+
// Completed rows awaiting in-order emit: seq -> the (possibly empty) list of
|
|
248
|
+
// wide rows the outer row produced. An empty list is a dropped outer row.
|
|
249
|
+
const reorder = new Map();
|
|
250
|
+
// Live branch iterators across all in-flight rows; cleanup return()s these.
|
|
251
|
+
const liveIters = new Set();
|
|
252
|
+
// In-flight per-row jobs; cleanup awaits these so every row reaches teardown.
|
|
253
|
+
const rowJobs = new Set();
|
|
254
|
+
let nextSeq = 0; // next seq to assign (== count admitted)
|
|
255
|
+
let emitFrontier = 0; // lowest seq not yet emitted
|
|
256
|
+
let outerDone = false; // outer source exhausted
|
|
257
|
+
let aborted = false; // teardown initiated (consumer return / error / completion)
|
|
258
|
+
// `errored` is a distinct flag from `firstError` so a branch that rejects
|
|
259
|
+
// with a falsy/`undefined` reason still propagates (don't eat exceptions) —
|
|
260
|
+
// mirrors ParallelDriver's `hadError` boolean.
|
|
261
|
+
let errored = false;
|
|
262
|
+
let firstError = undefined;
|
|
263
|
+
const recordError = (e) => {
|
|
264
|
+
if (!errored) {
|
|
265
|
+
errored = true;
|
|
266
|
+
firstError = e;
|
|
267
|
+
}
|
|
268
|
+
aborted = true;
|
|
269
|
+
signalEmit();
|
|
270
|
+
signalAdmit();
|
|
271
|
+
};
|
|
272
|
+
// Single-waiter signals (one emitter, one pump) — mirrors BoundedPrefetchBuffer.
|
|
273
|
+
let emitWaiter = null;
|
|
274
|
+
function signalEmit() {
|
|
275
|
+
const w = emitWaiter;
|
|
276
|
+
emitWaiter = null;
|
|
277
|
+
if (w)
|
|
278
|
+
w();
|
|
279
|
+
}
|
|
280
|
+
function waitEmit() {
|
|
281
|
+
return new Promise(resolve => { emitWaiter = resolve; });
|
|
282
|
+
}
|
|
283
|
+
let admitWaiter = null;
|
|
284
|
+
function signalAdmit() {
|
|
285
|
+
const w = admitWaiter;
|
|
286
|
+
admitWaiter = null;
|
|
287
|
+
if (w)
|
|
288
|
+
w();
|
|
289
|
+
}
|
|
290
|
+
function waitAdmit() {
|
|
291
|
+
return new Promise(resolve => { admitWaiter = resolve; });
|
|
292
|
+
}
|
|
293
|
+
// Run one branch to completion against its fork, collecting all its rows.
|
|
294
|
+
// The at-most-one invariant is enforced per outer row in `runRow` (scoped to
|
|
295
|
+
// `atMostOne-*` branches), so a `cross` branch's >1 rows pass through here.
|
|
296
|
+
// Permit-before-lock: acquire the global permit before the wrapped factory's
|
|
297
|
+
// first pull (which is where the connection lock is taken).
|
|
298
|
+
const runBranch = async (branchIdx, fork) => {
|
|
299
|
+
const release = await semaphore.acquire();
|
|
300
|
+
let iter = null;
|
|
301
|
+
try {
|
|
302
|
+
if (aborted)
|
|
303
|
+
return [];
|
|
304
|
+
iter = wrappedFactories[branchIdx](fork)[Symbol.asyncIterator]();
|
|
305
|
+
liveIters.add(iter);
|
|
306
|
+
const rows = [];
|
|
307
|
+
while (true) {
|
|
308
|
+
const r = await iter.next();
|
|
309
|
+
if (r.done)
|
|
310
|
+
break;
|
|
311
|
+
rows.push(r.value);
|
|
312
|
+
}
|
|
313
|
+
return rows;
|
|
314
|
+
}
|
|
315
|
+
finally {
|
|
316
|
+
if (iter)
|
|
317
|
+
liveIters.delete(iter);
|
|
318
|
+
release();
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
// Drive one admitted outer row: nested fork (rctx -> rowCtx -> branch forks),
|
|
322
|
+
// run all branches under the global budget, compose, and park the result in
|
|
323
|
+
// the reorder buffer keyed by `seq`. Owns its full teardown in `finally`.
|
|
324
|
+
const runRow = async (seq, outerRow) => {
|
|
325
|
+
const [rowCtx] = driver.fork(rctx, 1);
|
|
326
|
+
// rowCtx is a fork of rctx: bump rctx's counters so the statement-level
|
|
327
|
+
// context cannot be mutated while this row is live (strict-fork contract).
|
|
328
|
+
const rctxTableState = bumpParentForkCounter(rowCtx.tableContexts);
|
|
329
|
+
const rctxRowState = bumpParentForkCounter(rowCtx.context);
|
|
330
|
+
// Fresh per-row slot (its own boxed ref). Set before forking branches and
|
|
331
|
+
// never mutated again, so every branch fork's snapshot sees this row only.
|
|
332
|
+
const rowSlot = createRowSlot(rowCtx, outerRowDescriptor);
|
|
333
|
+
rowSlot.set(outerRow);
|
|
334
|
+
const branchForks = driver.fork(rowCtx, branchCount);
|
|
335
|
+
// branch forks are forks of rowCtx: bump rowCtx's counters for their life.
|
|
336
|
+
const branchTableState = branchCount > 0 ? bumpParentForkCounter(branchForks[0].tableContexts) : null;
|
|
337
|
+
const branchRowState = branchCount > 0 ? bumpParentForkCounter(branchForks[0].context) : null;
|
|
338
|
+
try {
|
|
339
|
+
const settled = await Promise.allSettled(branchForks.map((fork, i) => runBranch(i, fork)));
|
|
340
|
+
// Surface the first branch rejection; otherwise compose. Track the
|
|
341
|
+
// rejection with a boolean so a branch rejecting with `undefined`
|
|
342
|
+
// still propagates rather than being treated as a zero-row miss.
|
|
343
|
+
let hasBranchError = false;
|
|
344
|
+
let branchError = undefined;
|
|
345
|
+
const branchBuf = new Array(branchCount);
|
|
346
|
+
for (let i = 0; i < branchCount; i++) {
|
|
347
|
+
const s = settled[i];
|
|
348
|
+
if (s.status === 'rejected') {
|
|
349
|
+
if (!hasBranchError) {
|
|
350
|
+
hasBranchError = true;
|
|
351
|
+
branchError = s.reason;
|
|
352
|
+
}
|
|
353
|
+
branchBuf[i] = [];
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
branchBuf[i] = s.value;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (hasBranchError) {
|
|
360
|
+
recordError(branchError);
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (aborted)
|
|
364
|
+
return; // teardown in progress — result would never emit
|
|
365
|
+
assertAtMostOne(branchBuf, branchDescriptors);
|
|
366
|
+
const composed = composeOuterRows(outerRow, branchBuf, branchDescriptors, padLengths);
|
|
367
|
+
reorder.set(seq, composed);
|
|
368
|
+
signalEmit();
|
|
369
|
+
}
|
|
370
|
+
catch (e) {
|
|
371
|
+
recordError(e);
|
|
372
|
+
}
|
|
373
|
+
finally {
|
|
374
|
+
// Teardown order respects strict-fork: drop branch counters (so
|
|
375
|
+
// rowCtx.context becomes mutable) before closing the row slot, then
|
|
376
|
+
// drop the rctx counters.
|
|
377
|
+
dropParentForkCounter(branchRowState);
|
|
378
|
+
dropParentForkCounter(branchTableState);
|
|
379
|
+
rowSlot.close();
|
|
380
|
+
dropParentForkCounter(rctxRowState);
|
|
381
|
+
dropParentForkCounter(rctxTableState);
|
|
382
|
+
}
|
|
383
|
+
};
|
|
384
|
+
// Outer pump: admit rows up to `readAhead` ahead of the emit frontier.
|
|
385
|
+
const pump = (async () => {
|
|
386
|
+
const outerIter = outerSource[Symbol.asyncIterator]();
|
|
387
|
+
try {
|
|
388
|
+
while (!aborted) {
|
|
389
|
+
// Backpressure: block while the read-ahead window is full.
|
|
390
|
+
while (!aborted && (nextSeq - emitFrontier) >= readAhead) {
|
|
391
|
+
await waitAdmit();
|
|
392
|
+
}
|
|
393
|
+
if (aborted)
|
|
394
|
+
break;
|
|
395
|
+
const r = await outerIter.next();
|
|
396
|
+
if (r.done)
|
|
397
|
+
break;
|
|
398
|
+
const seq = nextSeq++;
|
|
399
|
+
const job = runRow(seq, r.value);
|
|
400
|
+
rowJobs.add(job);
|
|
401
|
+
void job.finally(() => rowJobs.delete(job));
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
catch (e) {
|
|
405
|
+
recordError(e);
|
|
406
|
+
}
|
|
407
|
+
finally {
|
|
408
|
+
outerDone = true;
|
|
409
|
+
signalEmit();
|
|
410
|
+
try {
|
|
411
|
+
await outerIter.return?.(undefined);
|
|
412
|
+
}
|
|
413
|
+
catch {
|
|
414
|
+
// Swallow — already shutting down.
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
})();
|
|
418
|
+
void pump;
|
|
419
|
+
let cleanedUp = false;
|
|
420
|
+
const cleanup = async () => {
|
|
421
|
+
if (cleanedUp)
|
|
422
|
+
return;
|
|
423
|
+
cleanedUp = true;
|
|
424
|
+
aborted = true;
|
|
425
|
+
signalAdmit();
|
|
426
|
+
signalEmit();
|
|
427
|
+
// Close any still-live branch iterators so blocked branch tasks unwind
|
|
428
|
+
// (their finally releases the permit, letting queued acquirers bail).
|
|
429
|
+
const closings = [];
|
|
430
|
+
for (const it of liveIters) {
|
|
431
|
+
if (typeof it.return === 'function') {
|
|
432
|
+
try {
|
|
433
|
+
closings.push(Promise.resolve(it.return()).catch(() => undefined));
|
|
434
|
+
}
|
|
435
|
+
catch {
|
|
436
|
+
// Synchronous throw from return() — already cleaning up.
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
if (closings.length > 0)
|
|
441
|
+
await Promise.allSettled(closings);
|
|
442
|
+
// Wait for every row job to reach its teardown (drops fork counters,
|
|
443
|
+
// closes row slots) and for the pump to stop.
|
|
444
|
+
await Promise.allSettled([...rowJobs]);
|
|
445
|
+
await pump.catch(() => undefined);
|
|
446
|
+
};
|
|
447
|
+
try {
|
|
448
|
+
while (!(outerDone && emitFrontier >= nextSeq)) {
|
|
449
|
+
if (errored)
|
|
450
|
+
throw firstError;
|
|
451
|
+
if (reorder.has(emitFrontier)) {
|
|
452
|
+
const entry = reorder.get(emitFrontier);
|
|
453
|
+
reorder.delete(emitFrontier);
|
|
454
|
+
emitFrontier++;
|
|
455
|
+
signalAdmit(); // window opened
|
|
456
|
+
// Emit every product row for this outer row contiguously, in order,
|
|
457
|
+
// before advancing to the next seq. An empty list is a dropped row.
|
|
458
|
+
for (const row of entry) {
|
|
459
|
+
yield row;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
await waitEmit();
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
if (errored)
|
|
467
|
+
throw firstError;
|
|
468
|
+
}
|
|
469
|
+
finally {
|
|
470
|
+
await cleanup();
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Emit a {@link FanOutLookupJoinNode}.
|
|
475
|
+
*
|
|
476
|
+
* The outer sub-plan is emitted as a normal `AsyncIterable<Row>` source; each
|
|
477
|
+
* branch is emitted as a callable so the runtime can invoke it per outer row
|
|
478
|
+
* against a freshly-forked {@link RuntimeContext}.
|
|
479
|
+
*
|
|
480
|
+
* Supports `atMostOne-left`, `atMostOne-inner`, `cross`, and `cross-left`
|
|
481
|
+
* branch modes. `atMostOne-*` branches are validated at runtime via a
|
|
482
|
+
* `QuereusError(CONSTRAINT)` when they yield more than one row; a `cross` /
|
|
483
|
+
* `cross-left` branch may yield any number and contributes a Cartesian factor
|
|
484
|
+
* (`cross-left` additionally NULL-pads + preserves the outer row when empty).
|
|
485
|
+
* The `array` mode is deferred to a follow-up.
|
|
486
|
+
*/
|
|
487
|
+
export function emitFanOutLookupJoin(plan, ctx) {
|
|
488
|
+
const outerInstruction = emitPlanNode(plan.outer, ctx);
|
|
489
|
+
const branchInstructions = plan.branches.map(b => emitCallFromPlan(b.child, ctx));
|
|
490
|
+
const outerRowDescriptor = buildRowDescriptor(plan.outer.getAttributes());
|
|
491
|
+
const branchDescriptors = plan.branches.map(b => ({
|
|
492
|
+
mode: b.mode,
|
|
493
|
+
outputColCount: b.outputAttrs.length,
|
|
494
|
+
concurrencySafe: b.concurrencySafe,
|
|
495
|
+
connectionKey: b.connectionKey,
|
|
496
|
+
}));
|
|
497
|
+
const concurrencyCap = plan.concurrencyCap;
|
|
498
|
+
const driver = new ParallelDriver();
|
|
499
|
+
if (plan.outerMode === 'batched') {
|
|
500
|
+
const parallel = ctx.db.optimizer.tuning.parallel;
|
|
501
|
+
const globalCap = parallel.outerBatchConcurrency;
|
|
502
|
+
const maxOuterReadAhead = parallel.maxOuterReadAhead;
|
|
503
|
+
function runBatched(rctx, outerSource, ...branchFactories) {
|
|
504
|
+
return runFanOutLookupJoinBatched(rctx, outerSource, outerRowDescriptor, branchFactories, branchDescriptors, globalCap, maxOuterReadAhead, driver);
|
|
505
|
+
}
|
|
506
|
+
return {
|
|
507
|
+
params: [outerInstruction, ...branchInstructions],
|
|
508
|
+
run: runBatched,
|
|
509
|
+
note: `fanout_lookup_join_batched(N=${plan.branches.length}, globalCap=${globalCap}, readAhead<=${maxOuterReadAhead})`,
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
function run(rctx, outerSource, ...branchFactories) {
|
|
513
|
+
return runFanOutLookupJoin(rctx, outerSource, outerRowDescriptor, branchFactories, branchDescriptors, concurrencyCap, driver);
|
|
514
|
+
}
|
|
515
|
+
return {
|
|
516
|
+
params: [outerInstruction, ...branchInstructions],
|
|
517
|
+
run: run,
|
|
518
|
+
note: `fanout_lookup_join(N=${plan.branches.length}, cap=${concurrencyCap})`,
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
//# sourceMappingURL=fanout-lookup-join.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fanout-lookup-join.js","sourceRoot":"","sources":["../../../../src/runtime/emit/fanout-lookup-join.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-declarative.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/schema-declarative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAQ/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAejE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAgCpF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAkCjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"schema-declarative.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/schema-declarative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAQ/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAejE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAgCpF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAkCjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CAoHlF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CA6BpF"}
|
|
@@ -101,15 +101,41 @@ export function emitApplySchema(plan, _ctx) {
|
|
|
101
101
|
if (applyStmt.withSeed) {
|
|
102
102
|
const allSeedData = rctx.db.declaredSchemaManager.getAllSeedData(schemaName);
|
|
103
103
|
log('Seed data available for %d tables', allSeedData.size);
|
|
104
|
+
// Identify tables freshly created by this apply (declared but not
|
|
105
|
+
// in the pre-apply catalog). For those, skip the `DELETE FROM <tbl>`
|
|
106
|
+
// wipe: the table is structurally empty by construction, and the
|
|
107
|
+
// DELETE's scan would route through the host's snapshot resolver at
|
|
108
|
+
// `asOf(ep.startedAt)` — an HLC sampled BEFORE the schema-batch
|
|
109
|
+
// fact-group commit, at which point the new table did not yet
|
|
110
|
+
// exist in the fact log. Pre-existing tables retain the wipe-then-
|
|
111
|
+
// reseed semantics.
|
|
112
|
+
// Both sides of the comparison are lower-cased: `actualCatalog`
|
|
113
|
+
// table names come from the live catalog (case as declared by
|
|
114
|
+
// DDL), and `getAllSeedData` keys seed rows by `tableName.toLowerCase()`
|
|
115
|
+
// (see DeclaredSchemaManager.setSeedData). Normalising here keeps
|
|
116
|
+
// the lookup symmetric regardless of how the declared schema
|
|
117
|
+
// cased its table identifiers.
|
|
118
|
+
const preApplyTableNames = new Set(actualCatalog.tables.map(t => t.name.toLowerCase()));
|
|
119
|
+
const freshlyCreatedTables = new Set();
|
|
120
|
+
for (const item of declaredSchema.items) {
|
|
121
|
+
if (item.type === 'declaredTable') {
|
|
122
|
+
const lowerName = item.tableStmt.table.name.toLowerCase();
|
|
123
|
+
if (!preApplyTableNames.has(lowerName)) {
|
|
124
|
+
freshlyCreatedTables.add(lowerName);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
104
128
|
for (const [tableName, rows] of allSeedData) {
|
|
105
129
|
log('Applying seed data to %s.%s (%d rows)', schemaName, tableName, rows.length);
|
|
106
130
|
// Qualify table name with schema if not main
|
|
107
131
|
const qualifiedTableName = (schemaName && schemaName.toLowerCase() !== 'main')
|
|
108
132
|
? `${schemaName}.${tableName}`
|
|
109
133
|
: tableName;
|
|
110
|
-
|
|
134
|
+
const isFreshlyCreated = freshlyCreatedTables.has(tableName.toLowerCase());
|
|
135
|
+
// Delete existing rows (only when the table pre-existed), then
|
|
136
|
+
// insert seed rows in one batch.
|
|
111
137
|
const deleteAndInsertSql = [
|
|
112
|
-
`DELETE FROM ${qualifiedTableName}
|
|
138
|
+
...(isFreshlyCreated ? [] : [`DELETE FROM ${qualifiedTableName}`]),
|
|
113
139
|
...rows.map(row => {
|
|
114
140
|
const values = row.map(v => v === null ? 'NULL' :
|
|
115
141
|
typeof v === 'string' ? `'${v.replace(/'/g, "''")}'` :
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-declarative.js","sourceRoot":"","sources":["../../../../src/runtime/emit/schema-declarative.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema-declarative.js","sourceRoot":"","sources":["../../../../src/runtime/emit/schema-declarative.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAQ/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAQ/E,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,WAAW,CA6FzF"}
|