Expand description
Row→vnode routing shared by the cluster shuffle paths (the aggregate
row-shuffle, the lookup-enrich key-shuffle, and ClusterRepartitionExec).
Hashing matches crate::state::VnodeRegistry::vnode_for_key so every stage agrees on a
key’s vnode.
Functions§
- row_
vnodes - Vnode for each row, hashing
columns(by index) with the engine’sarrow-row+ xxh3 encoding.columnsmust be non-empty. - slice_
batch_ by_ targets - Slices a
RecordBatchby targets. Remote rows are grouped byNodeId, and the metadata column__laminar_vnodeis appended to the batch. Local rows are grouped by vnode. - slice_
batch_ by_ vnode - The sub-batch of
batchwhoserow_vnodes[i] == target, orNoneif no row maps totarget. - slice_
batch_ by_ vnodes - Slice batch by vnodes in a single pass, returning a vector of (vnode,
RecordBatch). Avoids the $O(V \times R)$ loop and allocations of vnode-by-vnode slicing.