Skip to main content

Module column_pager

Module column_pager 

Source
Expand description

Column-aware pager. Pages Column instances out via mz_ore::pager, optionally compressing with lz4.

The pager (mz_ore::pager) deals in Vec<u64> blobs and two backends. This module adds:

  1. A PagingPolicy trait that decides whether to page out, which backend, and whether to compress. Decisions live in the policy implementation, not in the global atomic the pager exposes.
  2. A ColumnPager that drains a Column<C> into a PagedColumn and rehydrates it on demand.
  3. Lz4 frame-format compression as an optional codec.

The serialization uses the existing ContainerBytes protocol on Column<C>, so we get a single byte layout that both raw and compressed paths share. See doc/developer/design/20260504_pager.md for background.

Modules§

policy
Concrete PagingPolicy implementations.

Structs§

ColumnPager
Pages typed Columns out and back in, driven by a PagingPolicy.
Meta
Sizing metadata captured at pageout time. Stored alongside the payload so take can size buffers.
PageHint
Inputs to a pageout decision.
ResidentTicket
Drop guard that returns budget to a PagingPolicy when a PagedColumn::Resident is destroyed.

Enums§

Codec
Compression codec applied to a paged-out column.
CompressedInner
Storage location for the lz4-framed bytes inside a compressed paged column.
PageDecision
Outcome of a policy decision.
PageEvent
Notifications the column-pager sends back to the policy. Implementations typically forward to metrics counters.
PagedColumn
A column whose body may be resident, paged out, or paged out and compressed.

Traits§

PagingPolicy
Decides whether/how to page a column out, and records page events.