Latest Results
feat(scan): run the V2 executor on the segment IO protocol
Switches the planner-driven scan from the byte-range `vortex_io::request`
protocol to `vortex_io::segments`, and serves it with a session-wide
`FileSegmentIo` that reads through files' v1 segment sources.
- vortex-scan: `Planner` and `Morsel` drop the `IoConsumer` supertrait,
publish `NeedsIO(Vec<IoRequest>)`, and receive `deliver(key, result)` once
per successful fetch. `Run`/`Driver` submit each root's requests to its
`SegmentIoSession` and hold the handles; each item's fetches finish through
its own `FuturesUnordered`, so a `poll_ready` report yields exactly the
finished fetches. Fetches in flight are counted per session, since spawned
roots share one. `Run::poll_io` replaces `Run::complete`. The scripted
harness is a recording `SegmentIoSession`.
- vortex-layout: `ScanAdaptor` fetches each segment once by `IoKey::segment`
while any scan read of it is outstanding, and hands the result to every
waiting read. Prune and filter hints name segment keys. `ScanFile` and
`PreparedScan` carry the file's `RegisteredSource`, and `PreparedScan::io`
is its service. `SegmentScanIo` and the cached byte-range index it needed
are removed.
- vortex-file: `FileSegmentIo`, one per `VortexSession`. Size requests are
answered at submit; segment requests call `SegmentSource::request`, so they
share the file's segment cache, request sharing and coalescing read driver.
`VortexFile::scan_file` registers the file's segment source, and a caching
file keeps one registration in its scan cache, renewed with its segment
source. The V2 scan driver reads through `SegmentIoSession`.
- vortex-datafusion, vortex-duckdb: their V2 drivers read through
`SegmentIoSession`; the DataFusion opener shares a file's segment source
across partitions through `VortexFile::with_segment_source`.
- vortex-io: `request` is removed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4PmceDHg8rFe5bgkhGFU9
Signed-off-by: Claude <noreply@anthropic.com> feat(scan): run the V2 executor on the segment IO protocol
Switches the planner-driven scan from the byte-range `vortex_io::request`
protocol to `vortex_io::segments`, and serves it with a session-wide
`FileSegmentIo` that reads through files' v1 segment sources.
- vortex-scan: `Planner` and `Morsel` drop the `IoConsumer` supertrait,
publish `NeedsIO(Vec<IoRequest>)`, and receive `deliver(key, result)` once
per successful fetch. `Run`/`Driver` submit each root's requests to its
`SegmentIoSession` and hold the handles; each item's fetches finish through
its own `FuturesUnordered`, so a `poll_ready` report yields exactly the
finished fetches. Fetches in flight are counted per session, since spawned
roots share one. `Run::poll_io` replaces `Run::complete`. The scripted
harness is a recording `SegmentIoSession`.
- vortex-layout: `ScanAdaptor` fetches each segment once by `IoKey::segment`
while any scan read of it is outstanding, and hands the result to every
waiting read. Prune and filter hints name segment keys. `ScanFile` and
`PreparedScan` carry the file's `RegisteredSource`, and `PreparedScan::io`
is its service. `SegmentScanIo` and the cached byte-range index it needed
are removed.
- vortex-file: `FileSegmentIo`, one per `VortexSession`. Size requests are
answered at submit; segment requests call `SegmentSource::request`, so they
share the file's segment cache, request sharing and coalescing read driver.
`VortexFile::scan_file` registers the file's segment source, and a caching
file keeps one registration in its scan cache, renewed with its segment
source. The V2 scan driver reads through `SegmentIoSession`.
- vortex-datafusion, vortex-duckdb: their V2 drivers read through
`SegmentIoSession`; the DataFusion opener shares a file's segment source
across partitions through `VortexFile::with_segment_source`.
- vortex-io: `request` is removed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4PmceDHg8rFe5bgkhGFU9
Signed-off-by: Claude <noreply@anthropic.com> Latest Branches
0%
ji/decimal-storage-contract +12%
+47%
ji/scan-v2-clickbench-tpcds © 2026 CodSpeed Technology