What query processing forbids
What this mechanism forbids, and what each escape costs
| Forbidden | Escape | Price |
|---|---|---|
| Emitting output before a semantically blocking operator has seen its last input | None 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 scanned | Runtime filters, sampled adaptivity, mid-flight re-planning | A barrier between pipelines that were independent, plus wasted work when the guess is wrong |
| Parallelism within a single key | Replicate the other side s ways (salt, skew split, partial broadcast) | s times duplicated work; no escape at all for two-sided skew, where the output is genuinely quadratic |
| Exact holistic aggregates in bounded mergeable state | Sketches, or sort by (group, value) for positional exactness | Error with no meter, or a sort |
| Reordering across outer joins and three-valued predicates | None: the constraint is semantic | Plans that cannot be expressed, and rewrites that look valid and are not |
| Reasoning about a UDF | None inside the engine; the function must be made transparent or declared | Every optimization that depended on purity stops at its boundary |
| Bounding memory for a final dedup | Sort-based dedup | A 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.