Skip to main content

linkrs_query/executor/streaming/
spill.rs

1//! Spill-to-disk infrastructure for blocking operators.
2//!
3//! Provides:
4//! - `SpillConfig / SpillManager`: temp-file lifecycle management
5//! - `SpilledRun / RunWriter / RunReader`: the single spill file format —
6//!   columnar v2 run (`LRSC`): versioned header, schema fingerprint,
7//!   per-section checksums, optional per-section zstd body (columns are
8//!   contiguous postcard-encoded value slices, one section per column group)
9//! - `HashPartitionSpiller`: per-partition run writers
10//! - `DiskQuota`: separate disk usage tracking for spill operations
11
12mod config;
13mod hash_partition;
14mod manager;
15mod quota;
16mod run_format;
17mod run_io;
18
19pub use config::{
20    SpillConfig, COLLECTOR_RUN_ROWS_MAX, COLLECTOR_SPILL_ROWS_DEFAULT, HASH_JOIN_MAX_DEPTH,
21    HASH_JOIN_PARTITIONS_DEFAULT,
22};
23pub use hash_partition::{
24    hash_bytes_partition, hash_column_partition, hash_row_partition, HashPartitionConfig,
25    HashPartitionSpiller, HASH_PARTITION_SEED, HASH_PARTITION_VERSION,
26};
27pub use manager::finalize_partitions_with_runtime;
28pub use manager::SpillManager;
29pub use quota::DiskQuota;
30pub use run_format::{schema_fingerprint, RunCompression, RunHeader, SpilledRun};
31pub use run_io::{RunReader, RunWriter};
32
33#[cfg(test)]
34mod tests;