diff --git a/datafusion/src/physical_plan/mod.rs b/datafusion/src/physical_plan/mod.rs index c053229bc000b..5ae898c575c80 100644 --- a/datafusion/src/physical_plan/mod.rs +++ b/datafusion/src/physical_plan/mod.rs @@ -296,19 +296,18 @@ pub fn visit_execution_plan( } /// Execute the [ExecutionPlan] and collect the results in memory -pub async fn collect(plan: Arc) -> Result> { +pub async fn collect(plan: Arc) -> Result { match plan.output_partitioning().partition_count() { 0 => Ok(vec![]), 1 => { - let it = plan.execute(0).await?; - common::collect(it).await + plan.execute(0).await } _ => { // merge into a single partition let plan = MergeExec::new(plan.clone()); // MergeExec must produce a single partition assert_eq!(1, plan.output_partitioning().partition_count()); - common::collect(plan.execute(0).await?).await + plan.execute(0).await } } }