Skip to content
About
Main content

What query processing forbids

What this mechanism forbids, and what each escape costs

ForbiddenEscapePrice
Emitting output before a semantically operator has seen its last inputNone within the engine. Only changing the question (approximate, incremental, bounded)The answer is no longer the one that was asked
Knowing anything about data not yet scannedRuntime filters, sampled adaptivity, mid-flight re-planningA barrier between pipelines that were independent, plus wasted work when the guess is wrong
Parallelism within a single keyReplicate the other side s ways (salt, split, partial broadcast)s times duplicated work; no escape at all for two-sided skew, where the output is genuinely quadratic
Exact in bounded mergeable state, or sort by (group, value) for positional exactnessError with no meter, or a sort
Reordering across and three-valued predicatesNone: the constraint is semanticPlans that cannot be expressed, and rewrites that look valid and are not
Reasoning about a None inside the engine; the function must be made transparent or declaredEvery optimization that depended on purity stops at its boundary
Bounding memory for a final dedupSort-based dedupA sort

Two of these seven have no escape at all. That is unusual: most areas of systems are catalogues of escapes with prices. Here there are genuine walls, and both are logical, not physical. You cannot know the future of a stream, and you cannot reorder around NULL-generating semantics. Everything else is a purchase.