Skip to main content

Module block

Module block 

Source
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§

BlockEntry
Descriptor for a logical block within a column.

Constants§

DEFAULT_BLOCK_ROWS
Default number of rows per block when serializing v2 columns.