diff --git a/datafusion/core/src/physical_optimizer/join_selection.rs b/datafusion/core/src/physical_optimizer/join_selection.rs index 876a464257cc..a7ecd1ca655c 100644 --- a/datafusion/core/src/physical_optimizer/join_selection.rs +++ b/datafusion/core/src/physical_optimizer/join_selection.rs @@ -95,6 +95,7 @@ fn supports_collect_by_size( let Ok(stats) = plan.statistics() else { return false; }; + if let Some(size) = stats.total_byte_size.get_value() { *size != 0 && *size < collection_size_threshold } else if let Some(row_count) = stats.num_rows.get_value() { diff --git a/datafusion/physical-plan/src/filter.rs b/datafusion/physical-plan/src/filter.rs index 52bff880b127..597e1d523a24 100644 --- a/datafusion/physical-plan/src/filter.rs +++ b/datafusion/physical-plan/src/filter.rs @@ -277,16 +277,10 @@ fn collect_new_statistics( ) }; ColumnStatistics { - null_count: match input_column_stats[idx].null_count.get_value() { - Some(nc) => Precision::Inexact(*nc), - None => Precision::Absent, - }, + null_count: input_column_stats[idx].null_count.clone().to_inexact(), max_value, min_value, - distinct_count: match distinct_count.get_value() { - Some(dc) => Precision::Inexact(*dc), - None => Precision::Absent, - }, + distinct_count: distinct_count.to_inexact(), } }, )