Repository navigation
Commit 75184f0
feat(layout): add the ExecNode trait and push-based exec graph
Add `plan::exec`, a push-based executor interface for physical plans.
`ExecNode` is the per-operator trait: a single `compute` that takes the
events that arrived for the node (child pieces, child closes, segment
deliveries) through a `StepCx`, and spawns children, requests segments,
and emits row-tagged `Piece`s through it. It reports `Wait`, `Yield`, or
`Done`.
`ExecGraph` is the flat node arena. It wires nodes child-to-parent, routes
IO deliveries to the leaves that requested them, and hands its owner the
root's pieces and batches of `IoRequest`s from `compute`. Nodes never talk
to the IO service; the owner answers requests with `set_io_result`.
`PlanVTable::exec` builds the node for an operator, reached through
`PlanRef::exec`. No operator implements it yet; the default bails.
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWYmfHTFtaEdhdyd3u5hv31 parent 1557fb0 commit 75184f0
6 files changed
Lines changed: 636 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| 38 | + | |
38 | 39 | | |
39 | 40 | | |
40 | 41 | | |
| |||
0 commit comments