@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
|
@@ -205,28 +205,23 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
205
205
|
let failSavepointCounter = 0;
|
|
206
206
|
// For non-FAIL modes (ABORT default / IGNORE / REPLACE / ROLLBACK) we wrap
|
|
207
207
|
// the whole statement in a savepoint so a mid-statement constraint failure
|
|
208
|
-
// unwinds partial writes from earlier rows.
|
|
209
|
-
//
|
|
210
|
-
//
|
|
211
|
-
//
|
|
212
|
-
// user-level SAVEPOINT could index into a stale placeholder).
|
|
208
|
+
// unwinds partial writes from earlier rows. Use the broadcast helper so
|
|
209
|
+
// per-connection savepoint stacks stay in lockstep with the
|
|
210
|
+
// TransactionManager's stack (otherwise an outer user-level SAVEPOINT
|
|
211
|
+
// could index into a stale placeholder).
|
|
213
212
|
const wrapStatementSavepoint = !isFailMode;
|
|
214
213
|
const stmtSavepointName = wrapStatementSavepoint
|
|
215
214
|
? `__or_abort_${stmtSavepointCounter++}`
|
|
216
215
|
: undefined;
|
|
217
216
|
if (stmtSavepointName) {
|
|
218
|
-
|
|
219
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
220
|
-
await connection.createSavepoint(depth);
|
|
221
|
-
}
|
|
217
|
+
await ctx.db._createSavepointBroadcast(stmtSavepointName);
|
|
222
218
|
}
|
|
223
219
|
try {
|
|
224
220
|
try {
|
|
225
221
|
for await (const flatRow of rows) {
|
|
226
222
|
// OR FAIL per-row savepoint. Like the statement-scope wrap above,
|
|
227
|
-
// we broadcast
|
|
228
|
-
//
|
|
229
|
-
// in lockstep with TransactionManager's. If a new connection
|
|
223
|
+
// we use the broadcast helper so per-connection savepoint stacks
|
|
224
|
+
// stay in lockstep with TransactionManager's. If a new connection
|
|
230
225
|
// registers mid-row (e.g. via CTE materialization that
|
|
231
226
|
// instantiates a new memory-backed table), Database.registerConnection
|
|
232
227
|
// replays the active depth onto it — without broadcasting our
|
|
@@ -235,10 +230,7 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
235
230
|
let savepointName;
|
|
236
231
|
if (isFailMode) {
|
|
237
232
|
savepointName = `__or_fail_${failSavepointCounter++}`;
|
|
238
|
-
|
|
239
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
240
|
-
await connection.createSavepoint(depth);
|
|
241
|
-
}
|
|
233
|
+
await ctx.db._createSavepointBroadcast(savepointName);
|
|
242
234
|
}
|
|
243
235
|
let rowToYield;
|
|
244
236
|
let succeeded = false;
|
|
@@ -248,20 +240,7 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
248
240
|
}
|
|
249
241
|
catch (e) {
|
|
250
242
|
if (savepointName) {
|
|
251
|
-
|
|
252
|
-
const depth = ctx.db._rollbackToSavepoint(savepointName);
|
|
253
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
254
|
-
await connection.rollbackToSavepoint(depth);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
catch { /* swallow */ }
|
|
258
|
-
try {
|
|
259
|
-
const depth = ctx.db._releaseSavepoint(savepointName);
|
|
260
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
261
|
-
await connection.releaseSavepoint(depth);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
catch { /* swallow */ }
|
|
243
|
+
await ctx.db._rollbackAndReleaseSavepointBroadcast(savepointName);
|
|
265
244
|
savepointName = undefined;
|
|
266
245
|
}
|
|
267
246
|
// Translate plain constraint violations to FAIL/ROLLBACK error subclasses
|
|
@@ -269,38 +248,19 @@ export function emitDmlExecutor(plan, ctx) {
|
|
|
269
248
|
throw translateConflictError(e, plan.onConflict);
|
|
270
249
|
}
|
|
271
250
|
if (succeeded && savepointName) {
|
|
272
|
-
|
|
273
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
274
|
-
await connection.releaseSavepoint(depth);
|
|
275
|
-
}
|
|
251
|
+
await ctx.db._releaseSavepointBroadcast(savepointName);
|
|
276
252
|
}
|
|
277
253
|
if (rowToYield !== undefined) {
|
|
278
254
|
yield rowToYield;
|
|
279
255
|
}
|
|
280
256
|
}
|
|
281
257
|
if (stmtSavepointName) {
|
|
282
|
-
|
|
283
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
284
|
-
await connection.releaseSavepoint(depth);
|
|
285
|
-
}
|
|
258
|
+
await ctx.db._releaseSavepointBroadcast(stmtSavepointName);
|
|
286
259
|
}
|
|
287
260
|
}
|
|
288
261
|
catch (e) {
|
|
289
262
|
if (stmtSavepointName) {
|
|
290
|
-
|
|
291
|
-
const depth = ctx.db._rollbackToSavepoint(stmtSavepointName);
|
|
292
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
293
|
-
await connection.rollbackToSavepoint(depth);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
catch { /* swallow */ }
|
|
297
|
-
try {
|
|
298
|
-
const depth = ctx.db._releaseSavepoint(stmtSavepointName);
|
|
299
|
-
for (const connection of ctx.db.getAllConnections()) {
|
|
300
|
-
await connection.releaseSavepoint(depth);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
catch { /* swallow */ }
|
|
263
|
+
await ctx.db._rollbackAndReleaseSavepointBroadcast(stmtSavepointName);
|
|
304
264
|
}
|
|
305
265
|
throw e;
|
|
306
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dml-executor.js","sourceRoot":"","sources":["../../../../src/runtime/emit/dml-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dml-executor.js","sourceRoot":"","sources":["../../../../src/runtime/emit/dml-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { EagerPrefetchNode } from '../../planner/nodes/eager-prefetch-node.js';
|
|
2
|
+
import type { Instruction, RuntimeContext } from '../types.js';
|
|
3
|
+
import type { Row } from '../../common/types.js';
|
|
4
|
+
import type { EmissionContext } from '../emission-context.js';
|
|
5
|
+
import { ParallelDriver } from '../parallel-driver.js';
|
|
6
|
+
/**
|
|
7
|
+
* Bounded promise-based prefetch buffer used by {@link emitEagerPrefetch}.
|
|
8
|
+
*
|
|
9
|
+
* Exactly one producer (the pump) and one consumer (the parent emit's
|
|
10
|
+
* iterator) operate on this at a time, so a single nullable callback for each
|
|
11
|
+
* direction is enough — no waiter queues required.
|
|
12
|
+
*
|
|
13
|
+
* Exported for unit-test access only.
|
|
14
|
+
*/
|
|
15
|
+
export declare class BoundedPrefetchBuffer<T> {
|
|
16
|
+
private readonly capacity;
|
|
17
|
+
private readonly queue;
|
|
18
|
+
private done;
|
|
19
|
+
private hasError;
|
|
20
|
+
private error;
|
|
21
|
+
private spaceWaiter;
|
|
22
|
+
private itemWaiter;
|
|
23
|
+
constructor(capacity: number);
|
|
24
|
+
get size(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Push an item, awaiting space when the buffer is full. Returns false if
|
|
27
|
+
* the abort signal fired before space became available; otherwise true.
|
|
28
|
+
*/
|
|
29
|
+
push(item: T, signal: AbortSignal): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Wait for an item, end-of-stream marker, or buffered error.
|
|
32
|
+
* Throws the cached error if {@link fail} was called.
|
|
33
|
+
*/
|
|
34
|
+
shift(): Promise<{
|
|
35
|
+
done: true;
|
|
36
|
+
} | {
|
|
37
|
+
done: false;
|
|
38
|
+
value: T;
|
|
39
|
+
}>;
|
|
40
|
+
/** Mark end-of-stream; wakes a pending shifter. */
|
|
41
|
+
close(): void;
|
|
42
|
+
/** Record a producer error; wakes a pending shifter to throw it. */
|
|
43
|
+
fail(err: unknown): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Core prefetch primitive. Forks `rctx` and **eagerly** — at call time, before
|
|
47
|
+
* the consumer's first `next()` — starts a detached pump that drains the child
|
|
48
|
+
* iterator into a bounded buffer. The returned `AsyncIterable<Row>` hands rows
|
|
49
|
+
* out of that buffer; its iterator owns teardown via `next()`/`return()`/
|
|
50
|
+
* `throw()`.
|
|
51
|
+
*
|
|
52
|
+
* Eager-on-call is the point: when a `BloomJoinNode` wraps its probe (`left`) in
|
|
53
|
+
* this, the scheduler invokes `run()` during arg-assembly — before the join's
|
|
54
|
+
* generator body drains the build (`right`) — so the probe's first fetch is
|
|
55
|
+
* already in flight while the build materializes.
|
|
56
|
+
*
|
|
57
|
+
* Cleanup (abort pump, close buffer, child `return()`, drop strict-fork
|
|
58
|
+
* counters) fires when the iterator reaches done, `return()`, or `throw()`.
|
|
59
|
+
* Because the fork counters are bumped at construction, a returned iterable that
|
|
60
|
+
* is **never iterated** leaks the pump (it fills the buffer then blocks forever)
|
|
61
|
+
* and leaves the counters bumped — every consumer must guarantee iterate-or-
|
|
62
|
+
* close. Today the only inserter is `rule-eager-prefetch-probe`, and
|
|
63
|
+
* `emitBloomJoin` closes the left iterator in a `finally` covering both phases.
|
|
64
|
+
*
|
|
65
|
+
* Exported for unit testing — production callers go through {@link emitEagerPrefetch}.
|
|
66
|
+
*/
|
|
67
|
+
export declare function prefetchAsyncIterable(rctx: RuntimeContext, sourceCallback: (innerCtx: RuntimeContext) => AsyncIterable<Row>, bufferSize: number, driver?: ParallelDriver): AsyncIterable<Row>;
|
|
68
|
+
/**
|
|
69
|
+
* Emit an EagerPrefetchNode: forks the runtime context and immediately starts
|
|
70
|
+
* pumping the child sub-tree into a bounded buffer, yielding rows from that
|
|
71
|
+
* buffer to the parent emit.
|
|
72
|
+
*
|
|
73
|
+
* The pump starts on `run()` (emit / scheduler arg-assembly), not on the
|
|
74
|
+
* consumer's first `next()`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function emitEagerPrefetch(plan: EagerPrefetchNode, ctx: EmissionContext): Instruction;
|
|
77
|
+
//# sourceMappingURL=eager-prefetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eager-prefetch.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/eager-prefetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,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;AAErG;;;;;;;;GAQG;AACH,qBAAa,qBAAqB,CAAC,CAAC;IAQvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAPrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAA6B;gBAElB,QAAQ,EAAE,MAAM;IAM7C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB1D;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC;IAmBlE,mDAAmD;IACnD,KAAK,IAAI,IAAI;IAQb,oEAAoE;IACpE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;CAQxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,cAAc,EACpB,cAAc,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,aAAa,CAAC,GAAG,CAAC,EAChE,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,cAAqC,GAC3C,aAAa,CAAC,GAAG,CAAC,CA2EpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAkB5F"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { emitCallFromPlan } from '../emitters.js';
|
|
2
|
+
import { ParallelDriver, bumpParentForkCounter, dropParentForkCounter } from '../parallel-driver.js';
|
|
3
|
+
/**
|
|
4
|
+
* Bounded promise-based prefetch buffer used by {@link emitEagerPrefetch}.
|
|
5
|
+
*
|
|
6
|
+
* Exactly one producer (the pump) and one consumer (the parent emit's
|
|
7
|
+
* iterator) operate on this at a time, so a single nullable callback for each
|
|
8
|
+
* direction is enough — no waiter queues required.
|
|
9
|
+
*
|
|
10
|
+
* Exported for unit-test access only.
|
|
11
|
+
*/
|
|
12
|
+
export class BoundedPrefetchBuffer {
|
|
13
|
+
capacity;
|
|
14
|
+
queue = [];
|
|
15
|
+
done = false;
|
|
16
|
+
hasError = false;
|
|
17
|
+
error;
|
|
18
|
+
spaceWaiter = null;
|
|
19
|
+
itemWaiter = null;
|
|
20
|
+
constructor(capacity) {
|
|
21
|
+
this.capacity = capacity;
|
|
22
|
+
if (!Number.isInteger(capacity) || capacity < 1) {
|
|
23
|
+
throw new RangeError(`BoundedPrefetchBuffer: capacity must be a positive integer, got ${capacity}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
get size() {
|
|
27
|
+
return this.queue.length;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Push an item, awaiting space when the buffer is full. Returns false if
|
|
31
|
+
* the abort signal fired before space became available; otherwise true.
|
|
32
|
+
*/
|
|
33
|
+
async push(item, signal) {
|
|
34
|
+
while (this.queue.length >= this.capacity && !this.done && !this.hasError && !signal.aborted) {
|
|
35
|
+
await new Promise(resolve => {
|
|
36
|
+
this.spaceWaiter = resolve;
|
|
37
|
+
const onAbort = () => {
|
|
38
|
+
const r = this.spaceWaiter;
|
|
39
|
+
this.spaceWaiter = null;
|
|
40
|
+
if (r)
|
|
41
|
+
r();
|
|
42
|
+
};
|
|
43
|
+
if (signal.aborted) {
|
|
44
|
+
onAbort();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (signal.aborted || this.done || this.hasError)
|
|
51
|
+
return false;
|
|
52
|
+
this.queue.push(item);
|
|
53
|
+
const w = this.itemWaiter;
|
|
54
|
+
this.itemWaiter = null;
|
|
55
|
+
if (w)
|
|
56
|
+
w();
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Wait for an item, end-of-stream marker, or buffered error.
|
|
61
|
+
* Throws the cached error if {@link fail} was called.
|
|
62
|
+
*/
|
|
63
|
+
async shift() {
|
|
64
|
+
while (this.queue.length === 0 && !this.done && !this.hasError) {
|
|
65
|
+
await new Promise(resolve => {
|
|
66
|
+
this.itemWaiter = resolve;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (this.queue.length > 0) {
|
|
70
|
+
const value = this.queue.shift();
|
|
71
|
+
const w = this.spaceWaiter;
|
|
72
|
+
this.spaceWaiter = null;
|
|
73
|
+
if (w)
|
|
74
|
+
w();
|
|
75
|
+
return { done: false, value };
|
|
76
|
+
}
|
|
77
|
+
if (this.hasError) {
|
|
78
|
+
throw this.error;
|
|
79
|
+
}
|
|
80
|
+
return { done: true };
|
|
81
|
+
}
|
|
82
|
+
/** Mark end-of-stream; wakes a pending shifter. */
|
|
83
|
+
close() {
|
|
84
|
+
if (this.done || this.hasError)
|
|
85
|
+
return;
|
|
86
|
+
this.done = true;
|
|
87
|
+
const w = this.itemWaiter;
|
|
88
|
+
this.itemWaiter = null;
|
|
89
|
+
if (w)
|
|
90
|
+
w();
|
|
91
|
+
}
|
|
92
|
+
/** Record a producer error; wakes a pending shifter to throw it. */
|
|
93
|
+
fail(err) {
|
|
94
|
+
if (this.done || this.hasError)
|
|
95
|
+
return;
|
|
96
|
+
this.hasError = true;
|
|
97
|
+
this.error = err;
|
|
98
|
+
const w = this.itemWaiter;
|
|
99
|
+
this.itemWaiter = null;
|
|
100
|
+
if (w)
|
|
101
|
+
w();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Core prefetch primitive. Forks `rctx` and **eagerly** — at call time, before
|
|
106
|
+
* the consumer's first `next()` — starts a detached pump that drains the child
|
|
107
|
+
* iterator into a bounded buffer. The returned `AsyncIterable<Row>` hands rows
|
|
108
|
+
* out of that buffer; its iterator owns teardown via `next()`/`return()`/
|
|
109
|
+
* `throw()`.
|
|
110
|
+
*
|
|
111
|
+
* Eager-on-call is the point: when a `BloomJoinNode` wraps its probe (`left`) in
|
|
112
|
+
* this, the scheduler invokes `run()` during arg-assembly — before the join's
|
|
113
|
+
* generator body drains the build (`right`) — so the probe's first fetch is
|
|
114
|
+
* already in flight while the build materializes.
|
|
115
|
+
*
|
|
116
|
+
* Cleanup (abort pump, close buffer, child `return()`, drop strict-fork
|
|
117
|
+
* counters) fires when the iterator reaches done, `return()`, or `throw()`.
|
|
118
|
+
* Because the fork counters are bumped at construction, a returned iterable that
|
|
119
|
+
* is **never iterated** leaks the pump (it fills the buffer then blocks forever)
|
|
120
|
+
* and leaves the counters bumped — every consumer must guarantee iterate-or-
|
|
121
|
+
* close. Today the only inserter is `rule-eager-prefetch-probe`, and
|
|
122
|
+
* `emitBloomJoin` closes the left iterator in a `finally` covering both phases.
|
|
123
|
+
*
|
|
124
|
+
* Exported for unit testing — production callers go through {@link emitEagerPrefetch}.
|
|
125
|
+
*/
|
|
126
|
+
export function prefetchAsyncIterable(rctx, sourceCallback, bufferSize, driver = new ParallelDriver()) {
|
|
127
|
+
const [forkCtx] = driver.fork(rctx, 1);
|
|
128
|
+
// Manually bump strict-fork bookkeeping (ParallelDriver.drive does this
|
|
129
|
+
// internally, but we are using fork() directly). The fork is "live" from
|
|
130
|
+
// construction — that is the intended eager semantics.
|
|
131
|
+
const parentTableState = bumpParentForkCounter(forkCtx.tableContexts);
|
|
132
|
+
const parentRowState = bumpParentForkCounter(forkCtx.context);
|
|
133
|
+
const childIter = sourceCallback(forkCtx)[Symbol.asyncIterator]();
|
|
134
|
+
const buf = new BoundedPrefetchBuffer(bufferSize);
|
|
135
|
+
const abort = new AbortController();
|
|
136
|
+
// EAGER: start the pump now, not on first next().
|
|
137
|
+
const pump = (async () => {
|
|
138
|
+
try {
|
|
139
|
+
while (!abort.signal.aborted) {
|
|
140
|
+
const r = await childIter.next();
|
|
141
|
+
if (r.done) {
|
|
142
|
+
buf.close();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const ok = await buf.push(r.value, abort.signal);
|
|
146
|
+
if (!ok)
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
buf.fail(e);
|
|
152
|
+
}
|
|
153
|
+
})();
|
|
154
|
+
// Detach; awaited in cleanup for clean shutdown.
|
|
155
|
+
void pump;
|
|
156
|
+
let cleanedUp = false;
|
|
157
|
+
const cleanup = async () => {
|
|
158
|
+
if (cleanedUp)
|
|
159
|
+
return;
|
|
160
|
+
cleanedUp = true;
|
|
161
|
+
abort.abort();
|
|
162
|
+
buf.close();
|
|
163
|
+
try {
|
|
164
|
+
await childIter.return?.(undefined);
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Swallow — already in cleanup.
|
|
168
|
+
}
|
|
169
|
+
await pump.catch(() => undefined);
|
|
170
|
+
dropParentForkCounter(parentTableState);
|
|
171
|
+
dropParentForkCounter(parentRowState);
|
|
172
|
+
};
|
|
173
|
+
return {
|
|
174
|
+
[Symbol.asyncIterator]() {
|
|
175
|
+
return {
|
|
176
|
+
async next() {
|
|
177
|
+
try {
|
|
178
|
+
const item = await buf.shift();
|
|
179
|
+
if (item.done) {
|
|
180
|
+
await cleanup();
|
|
181
|
+
return { done: true, value: undefined };
|
|
182
|
+
}
|
|
183
|
+
return { done: false, value: item.value };
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
await cleanup();
|
|
187
|
+
throw e;
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
async return(value) {
|
|
191
|
+
await cleanup();
|
|
192
|
+
return { done: true, value: value };
|
|
193
|
+
},
|
|
194
|
+
async throw(err) {
|
|
195
|
+
await cleanup();
|
|
196
|
+
throw err;
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Emit an EagerPrefetchNode: forks the runtime context and immediately starts
|
|
204
|
+
* pumping the child sub-tree into a bounded buffer, yielding rows from that
|
|
205
|
+
* buffer to the parent emit.
|
|
206
|
+
*
|
|
207
|
+
* The pump starts on `run()` (emit / scheduler arg-assembly), not on the
|
|
208
|
+
* consumer's first `next()`.
|
|
209
|
+
*/
|
|
210
|
+
export function emitEagerPrefetch(plan, ctx) {
|
|
211
|
+
const driver = new ParallelDriver();
|
|
212
|
+
const bufferSize = plan.bufferSize;
|
|
213
|
+
function run(rctx, sourceCallback) {
|
|
214
|
+
return prefetchAsyncIterable(rctx, sourceCallback, bufferSize, driver);
|
|
215
|
+
}
|
|
216
|
+
const sourceInstruction = emitCallFromPlan(plan.source, ctx);
|
|
217
|
+
return {
|
|
218
|
+
params: [sourceInstruction],
|
|
219
|
+
run: run,
|
|
220
|
+
note: `eager_prefetch(buffer=${bufferSize})`,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=eager-prefetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eager-prefetch.js","sourceRoot":"","sources":["../../../../src/runtime/emit/eager-prefetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { type FanOutLookupJoinNode, type FanOutBranchMode } from '../../planner/nodes/fanout-lookup-join-node.js';
|
|
2
|
+
import type { Instruction, RuntimeContext } from '../types.js';
|
|
3
|
+
import type { Row } from '../../common/types.js';
|
|
4
|
+
import type { EmissionContext } from '../emission-context.js';
|
|
5
|
+
import { ParallelDriver } from '../parallel-driver.js';
|
|
6
|
+
/** Per-branch factory: receives a forked RuntimeContext, returns the lookup-row stream. */
|
|
7
|
+
export type FanOutLookupBranchFactory = (innerCtx: RuntimeContext) => AsyncIterable<Row>;
|
|
8
|
+
/**
|
|
9
|
+
* Per-branch runtime descriptor consumed by {@link runFanOutLookupJoin}.
|
|
10
|
+
* Mirrors {@link FanOutBranchSpec} but trimmed to the fields the runtime
|
|
11
|
+
* actually uses — exposed for unit tests that drive the node without
|
|
12
|
+
* constructing a full plan tree.
|
|
13
|
+
*/
|
|
14
|
+
export interface FanOutLookupBranchDescriptor {
|
|
15
|
+
readonly mode: FanOutBranchMode;
|
|
16
|
+
/** Number of output columns the branch contributes; used to size NULL padding. */
|
|
17
|
+
readonly outputColCount: number;
|
|
18
|
+
/** When true, branch is invoked raw; when false, the call is wrapped in a connection lock. */
|
|
19
|
+
readonly concurrencySafe: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Optional lock-target identity hint. The lock is keyed by object identity
|
|
22
|
+
* (see `acquireConnectionLock` — WeakMap-keyed), so any stable object will
|
|
23
|
+
* serve. When unset, the runtime falls back to `rctx.activeConnection`.
|
|
24
|
+
*/
|
|
25
|
+
readonly connectionKey?: object;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Compose one outer row plus its per-branch result buffers into the **list** of
|
|
29
|
+
* wide output rows it contributes — the n-ary Cartesian product across branches,
|
|
30
|
+
* prefixed by the outer row's columns.
|
|
31
|
+
*
|
|
32
|
+
* Per-branch factor rules (a factor is the list of column-slices a branch
|
|
33
|
+
* contributes to the product):
|
|
34
|
+
*
|
|
35
|
+
* - `cross`: one factor entry per buffered row (1:n fan-out). An **empty**
|
|
36
|
+
* buffer is an inner-drop — the whole product collapses to zero rows.
|
|
37
|
+
* - `cross-left`: one factor entry per buffered row (1:n fan-out); an **empty**
|
|
38
|
+
* buffer ⇒ a single NULL-pad factor entry, preserving the outer row (LEFT
|
|
39
|
+
* semantics).
|
|
40
|
+
* - `atMostOne-inner`: empty buffer ⇒ inner-drop (zero rows); else the single
|
|
41
|
+
* row.
|
|
42
|
+
* - `atMostOne-left`: empty buffer ⇒ a single NULL-pad factor entry (LEFT-join
|
|
43
|
+
* semantics); else the single row.
|
|
44
|
+
*
|
|
45
|
+
* The product is emitted left-to-right (outer columns first, then branch 0,
|
|
46
|
+
* branch 1, …) with the right-most branch varying fastest — identical column
|
|
47
|
+
* order and row order to the chain of nested-loop joins this node replaces.
|
|
48
|
+
*
|
|
49
|
+
* `atMostOne-*` branch buffers must carry **at most one** row — that invariant
|
|
50
|
+
* is the caller's responsibility (both drivers assert it before composing);
|
|
51
|
+
* `cross` buffers may carry any number.
|
|
52
|
+
*
|
|
53
|
+
* Returns an empty array when any inner/cross branch dropped the outer row.
|
|
54
|
+
* Shared by {@link runFanOutLookupJoin} and {@link runFanOutLookupJoinBatched}
|
|
55
|
+
* so both compose identically.
|
|
56
|
+
*/
|
|
57
|
+
export declare function composeOuterRows(outerRow: Row, branchBuf: ReadonlyArray<ReadonlyArray<Row>>, branchDescriptors: ReadonlyArray<FanOutLookupBranchDescriptor>, padLengths: ReadonlyArray<number>): Row[];
|
|
58
|
+
/**
|
|
59
|
+
* Drive a fan-out lookup join for one runtime invocation: for each outer row,
|
|
60
|
+
* fork N independent {@link RuntimeContext} views, invoke the N branch
|
|
61
|
+
* factories concurrently via {@link ParallelDriver.drive}, collect each
|
|
62
|
+
* branch's at-most-one result row, validate the `atMostOne` invariant, and
|
|
63
|
+
* yield the composed wide row (or drop the outer row when any
|
|
64
|
+
* `atMostOne-inner` branch returned zero rows).
|
|
65
|
+
*
|
|
66
|
+
* The outer row's slot is installed on `rctx.context` *before* forking so
|
|
67
|
+
* that {@link ParallelDriver.fork}'s parent-snapshot semantics propagate the
|
|
68
|
+
* binding into every branch's forked context.
|
|
69
|
+
*
|
|
70
|
+
* Exported for direct unit testing — production callers go through
|
|
71
|
+
* {@link emitFanOutLookupJoin}.
|
|
72
|
+
*/
|
|
73
|
+
export declare function runFanOutLookupJoin(rctx: RuntimeContext, outerSource: AsyncIterable<Row>, outerRowDescriptor: number[], branchFactories: ReadonlyArray<FanOutLookupBranchFactory>, branchDescriptors: ReadonlyArray<FanOutLookupBranchDescriptor>, concurrencyCap: number, driver?: ParallelDriver): AsyncIterable<Row>;
|
|
74
|
+
/**
|
|
75
|
+
* Batched / pipelined outer driver for a fan-out lookup join: overlaps lookups
|
|
76
|
+
* *across* outer rows rather than only across branches within one row.
|
|
77
|
+
*
|
|
78
|
+
* Shape (single async generator):
|
|
79
|
+
*
|
|
80
|
+
* - **Outer pump** reads `outerSource`, assigning each row a monotonically
|
|
81
|
+
* increasing `seq`, and admits at most `R` rows *ahead of the emit frontier*
|
|
82
|
+
* (the lowest not-yet-emitted seq). Admission backpressure is measured from
|
|
83
|
+
* the consumer, so a slow consumer (or a slow head-of-line row) bounds how
|
|
84
|
+
* far the outer is drained. `R = clamp(ceil(globalCap/branchCount), 1,
|
|
85
|
+
* maxOuterReadAhead)`.
|
|
86
|
+
* - **Per-row context isolation (load-bearing correctness point).** Each
|
|
87
|
+
* admitted row forks its own `rowCtx` from `rctx` and installs its own
|
|
88
|
+
* {@link createRowSlot} (its own boxed `ref`). Branch forks snapshot
|
|
89
|
+
* `rowCtx`'s getter — a closure over *this row's* ref, which is never mutated
|
|
90
|
+
* again — so concurrently in-flight rows never share an outer binding. (The
|
|
91
|
+
* prior single-slot-on-parent approach is unsafe here: it mutates one shared
|
|
92
|
+
* ref per row, which would corrupt every in-flight fork.)
|
|
93
|
+
* - **Global in-flight budget.** A single {@link AsyncSemaphore} over
|
|
94
|
+
* `globalCap` bounds concurrent branch lookups across *all* in-flight rows.
|
|
95
|
+
* Each branch task acquires a permit **before** taking its connection lock
|
|
96
|
+
* (the lock is taken on the wrapped factory's first pull): a lock-holder then
|
|
97
|
+
* always also holds a permit, so a permit-holder blocked on a lock waits on
|
|
98
|
+
* another permit-holder that will release — no deadlock.
|
|
99
|
+
* - **Reorder buffer + in-order emit.** Each completed row lands in a `seq`-keyed
|
|
100
|
+
* map as the (possibly empty) list of wide rows it produced; the generator
|
|
101
|
+
* emits all of `seq = emitFrontier`'s rows contiguously as soon as they land,
|
|
102
|
+
* then advances the frontier (an empty list is a dropped outer row). Window
|
|
103
|
+
* accounting advances per `seq`, independent of product fan-out. Out-of-order
|
|
104
|
+
* completion, in-order emit — the external stream is identical to serial mode,
|
|
105
|
+
* so `computePhysical`'s ordering pass-through stays valid.
|
|
106
|
+
*
|
|
107
|
+
* Replay model: each admitted row re-executes its branch sub-plans against its
|
|
108
|
+
* own forked context. A cached branch shared across outer rows is a correlated
|
|
109
|
+
* lookup and is re-executed per row regardless.
|
|
110
|
+
*
|
|
111
|
+
* Exported for direct unit testing — production callers go through
|
|
112
|
+
* {@link emitFanOutLookupJoin}.
|
|
113
|
+
*/
|
|
114
|
+
export declare function runFanOutLookupJoinBatched(rctx: RuntimeContext, outerSource: AsyncIterable<Row>, outerRowDescriptor: number[], branchFactories: ReadonlyArray<FanOutLookupBranchFactory>, branchDescriptors: ReadonlyArray<FanOutLookupBranchDescriptor>, globalCap: number, maxOuterReadAhead: number, driver?: ParallelDriver): AsyncIterable<Row>;
|
|
115
|
+
/**
|
|
116
|
+
* Emit a {@link FanOutLookupJoinNode}.
|
|
117
|
+
*
|
|
118
|
+
* The outer sub-plan is emitted as a normal `AsyncIterable<Row>` source; each
|
|
119
|
+
* branch is emitted as a callable so the runtime can invoke it per outer row
|
|
120
|
+
* against a freshly-forked {@link RuntimeContext}.
|
|
121
|
+
*
|
|
122
|
+
* Supports `atMostOne-left`, `atMostOne-inner`, `cross`, and `cross-left`
|
|
123
|
+
* branch modes. `atMostOne-*` branches are validated at runtime via a
|
|
124
|
+
* `QuereusError(CONSTRAINT)` when they yield more than one row; a `cross` /
|
|
125
|
+
* `cross-left` branch may yield any number and contributes a Cartesian factor
|
|
126
|
+
* (`cross-left` additionally NULL-pads + preserves the outer row when empty).
|
|
127
|
+
* The `array` mode is deferred to a follow-up.
|
|
128
|
+
*/
|
|
129
|
+
export declare function emitFanOutLookupJoin(plan: FanOutLookupJoinNode, ctx: EmissionContext): Instruction;
|
|
130
|
+
//# sourceMappingURL=fanout-lookup-join.d.ts.map
|