Problem
Partitioning::Range now exists as a physical partitioning model, but optimizer and planning code still need to preserve and use range metadata consistently. The goal of this epic is to make range-partitioned plans avoid unnecessary repartitioning while keeping multi-input correctness explicit.
Related discussion: #21992.
Primary implementation order
Optimizer and integration follow-ups
These are related but do not need to block the primary join and distribution-satisfaction path.
Problem
Partitioning::Rangenow exists as a physical partitioning model, but optimizer and planning code still need to preserve and use range metadata consistently. The goal of this epic is to make range-partitioned plans avoid unnecessary repartitioning while keeping multi-input correctness explicit.Related discussion: #21992.
Primary implementation order
Partitioning::Rangeto satisfy aggregationDistribution::KeyPartitionedrequirements #23191Partitioning::Rangeto satisfy PartitionedTopKDistribution::KeyPartitionedrequirements #23290Partitioning::Rangeto satisfy windowDistribution::KeyPartitionedrequirements #23289Distribution::KeyPartitionedrequirements before general Range satisfaction #23451 , Allow co-partitionedPartitioning::Rangeinputs for sort merge joins #23478 , Allow co-partitionedPartitioning::Rangeinputs for symmetric hash joins #23479 (these were decided to be put into one PR)Partitioning::Rangeinputs for left-side hash joins #23452Partitioning::Rangeinputs for right-side hash joins #23453Partitioning::Rangeinputs for full hash joins #23454Partitioning::Rangeto satisfyDistribution::KeyPartitionedgenerally #23266Partitioning::Rangeoutput partitioning through joins #23450InterleaveExecto preservePartitioning::Range#23455Optimizer and integration follow-ups
These are related but do not need to block the primary join and distribution-satisfaction path.