get_repartition_requirement_status

Function get_repartition_requirement_status 

Source
fn get_repartition_requirement_status(
    plan: &Arc<dyn ExecutionPlan>,
    batch_size: usize,
    should_use_estimates: bool,
) -> Result<Vec<RepartitionRequirementStatus>>
Expand description

Calculates the RepartitionRequirementStatus for each children to generate consistent and sensible (in terms of performance) distribution requirements. As an example, a hash join’s left (build) child might produce

RepartitionRequirementStatus {
    ..,
    hash_necessary: true
}

while its right (probe) child might have very few rows and produce:

RepartitionRequirementStatus {
    ..,
    hash_necessary: false
}

These statuses are not consistent as all children should agree on hash partitioning. This function aligns the statuses to generate consistent hash partitions for each children. After alignment, the right child’s status would turn into:

RepartitionRequirementStatus {
    ..,
    hash_necessary: true
}