Skip to main content

try_spill_ref

Function try_spill_ref 

Source
pub fn try_spill_ref<C: Columnar>(
    body: &ColumnBody<C>,
    depth: u8,
) -> Option<ChunkHandle>
Expand description

Spill a serialized copy of body into the process pool, leaving body untouched, or None when the body stays resident.

A body stays resident when the gate set_sink_spill_enabled sets is off, when no pool is installed, or when it is smaller than SPILL_MIN_BYTES. depth is the body’s generational depth: it selects the stored codec and the pool’s eviction band.

For consumers that keep their own chunk representation and so cannot use ColumnChunk; the two share the spill decision through spill_target. The encode writes straight into the pool slot, so a spilled body costs no intermediate allocation and the caller can ColumnBody::clear and keep its allocation. A caller that gets None back still owns the body and must keep it resident itself.