Expand description
Block descriptors for columnar storage.
A “block” is a logical chunk of a column’s rows that can be skipped or processed as a unit. Blocks bridge raw codec output (bit-packed integers, dictionary-encoded strings, boolean bitmaps, etc.) and higher-level scan operators that want to prune work using per-block summary statistics.
This module lives in codec rather than under any particular store
because both graph::compact::ColumnCodec
(the read-only columnar base) and the LPG store’s PropertyColumn
(the mutable in-memory store, modernized later in Phase 2) describe
their data using the same block descriptors.
§Phasing
Phase 2a introduces the descriptor type and the enumeration API on
ColumnCodec; every column today reports a single block covering
all rows. Phase 2b will introduce multi-block serialization, and
Phase 2c will add per-block statistics (min/max/null/row counts,
optional bloom) so range scans can skip blocks whose stats prove
no match. Phase 2d/2e extend the same descriptors to LpgStore.
The split is deliberate: Phase 2a keeps the data layout untouched so upstream readers can be extended block-aware before any on-disk format changes.
Structs§
- Block
Entry - Descriptor for a logical block within a column.
Constants§
- DEFAULT_
BLOCK_ ROWS - Default number of rows per block when serializing v2 columns.