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§
- Upsert
Keys - A newtype wrapper for a vector of
UpsertKeyvalues.