Skip to main content

Module columnar_upsert_key

Module columnar_upsert_key 

Source
Expand description

Columnar (the columnar crate, distinct from columnation) support for UpsertKey, so the upsert-v2 source stash can use a paged columnar merge batcher keyed natively by UpsertKey (no Row packing). UpsertKey is a POD [u8; 32] newtype, so the container is a fixed-stride byte column.

This is hand-rolled rather than #[derive(Columnar)]d for one load-bearing reason: the reference type must be &UpsertKey. &UpsertKey is Copy + Ord (the lexicographic [u8; 32] order the persist-feedback trace is keyed on), which both satisfies the merge batcher’s Ref: Copy + Ord requirement and — crucially — matches the read item of the feedback arrangement’s ColumnationStack<UpsertKey> key container, so the paged ValRow builder can reconcile the Column input against the spine (its BuilderInput bound is ReadItem: PartialEq<Ref<UpsertKey>>). A derived impl would yield a generated UpsertKeyReference (and route [u8; 32] through the generic, non-fixed-stride array container), breaking that reconciliation.

Structs§

UpsertKeys
A newtype wrapper for a vector of UpsertKey values.