Expand description
A ContainerBuilder that consolidates (D, T, R) updates and emits columnar containers.
Two-level buffering:
- AoS staging
Vec<(D, T, R)>with a small cap soconsolidate_updates’n log ncost stays bounded. Cancellations and same-key updates collapse here before reaching the column-shaped storage. A drain-multiple-of-half-cap trick keeps the leftover in staging, so cross-batch keys with the same(D, T)continue consolidating on the next sort. - SoA accumulator: one sub-container per column (
D::Container,T::Container,R::Container). Drains push in fixed-size chunks (DRAIN_CHUNK_ROWS) with three sequential per-column passes per chunk, so the inner pushes autovectorize. After each chunk, check the serialized size; once the accumulator reaches the flush threshold (90% ofOUTPUT_TARGET_WORDS), serialize into an alignedVec<u64>(no zero-fill — written byindexed::encode) and ship asColumn::Align. Per-chunk granularity bounds overshoot toK * row_words. The trailing partial onfinishships asColumn::Typed.
Generic over (D, T, R): Columnar via the columnar tuple decomposition
<(D, T, R) as Columnar>::Container = (D::Container, T::Container, R::Container).
Structs§
- Consolidating
Column Builder - A container builder that consolidates
(D, T, R)updates and emitsColumn<(D, T, R)>.