Goal
Allow ZonedLayout to store and evaluate multiple zone maps with independent partitioning. This lets cheap, fine-grained stats such as min/max run at small zones while larger or more expensive stats such as Bloom filters run at coarser zones, without stacking ZonedLayout nodes in the layout tree.
Direction
Make zone maps first-class entries owned by a single ZonedLayout. The layout should have one data child plus one or more auxiliary zone-map children. Each zone map should describe its own partitioning and stored aggregate descriptors, and the reader should evaluate zone maps in configured order so cheap maps can prune before more expensive maps are loaded or evaluated.
This work is orthogonal to #7707. The aggregate-stats work should continue to model stored zone stats as aggregate-function descriptors; this epic changes how zone maps are partitioned, stored, and coordinated by ZonedLayout.
Phase 1: Writer-Owned Fixed Partitioning
Phase 2: Zone-Map Partitioning Metadata
Phase 3: Variable Zones From Input Chunks
Phase 4: Multiple Zone Maps In One ZonedLayout
Phase 5: Ordered Pruning Execution
Phase 6: Bloom-Ready Integration
Status
Proposed.
Goal
Allow
ZonedLayoutto store and evaluate multiple zone maps with independent partitioning. This lets cheap, fine-grained stats such as min/max run at small zones while larger or more expensive stats such as Bloom filters run at coarser zones, without stackingZonedLayoutnodes in the layout tree.Direction
Make zone maps first-class entries owned by a single
ZonedLayout. The layout should have one data child plus one or more auxiliary zone-map children. Each zone map should describe its own partitioning and stored aggregate descriptors, and the reader should evaluate zone maps in configured order so cheap maps can prune before more expensive maps are loaded or evaluated.This work is orthogonal to #7707. The aggregate-stats work should continue to model stored zone stats as aggregate-function descriptors; this epic changes how zone maps are partitioned, stored, and coordinated by
ZonedLayout.Phase 1: Writer-Owned Fixed Partitioning
ZonedStrategyto partition stats internally for fixed-size zones.Phase 2: Zone-Map Partitioning Metadata
zone_len.ZonedLayoutstate and into each zone-map descriptor.ZoneMapand reader helpers to derive row-to-zone mapping from zone-map metadata.Phase 3: Variable Zones From Input Chunks
Some(zone_len)partitions internally into fixed-size zones.Noneuses input chunk boundaries as zones.zone_lenis not specified.Phase 4: Multiple Zone Maps In One ZonedLayout
zone_maps: repeated ZoneMapMetadata.ZonedLayoutchildren from exactly two children to one data child plus one child per zone map.Phase 5: Ordered Pruning Execution
ZonedReaderto evaluate multiple zone maps in metadata/configuration order.Phase 6: Bloom-Ready Integration
Status
Proposed.