diff --git a/datafusion/src/logical_plan/plan.rs b/datafusion/src/logical_plan/plan.rs index b954b6a97950c..fdf94809f16e5 100644 --- a/datafusion/src/logical_plan/plan.rs +++ b/datafusion/src/logical_plan/plan.rs @@ -375,12 +375,10 @@ impl LogicalPlan { { self.using_columns.push( on.iter() - .map(|entry| { - std::iter::once(entry.0.clone()) - .chain(std::iter::once(entry.1.clone())) - }) + .map(|entry| [&entry.0, &entry.1]) .flatten() - .collect::>(), + .cloned() + .collect::>(), ); } Ok(true) diff --git a/datafusion/src/optimizer/filter_push_down.rs b/datafusion/src/optimizer/filter_push_down.rs index 76d8c05bed4c6..399923e87218b 100644 --- a/datafusion/src/optimizer/filter_push_down.rs +++ b/datafusion/src/optimizer/filter_push_down.rs @@ -97,9 +97,11 @@ fn get_join_predicates<'a>( .fields() .iter() .map(|f| { - std::iter::once(f.qualified_column()) + [ + f.qualified_column(), // we need to push down filter using unqualified column as well - .chain(std::iter::once(f.unqualified_column())) + f.unqualified_column(), + ] }) .flatten() .collect::>(); @@ -107,8 +109,11 @@ fn get_join_predicates<'a>( .fields() .iter() .map(|f| { - std::iter::once(f.qualified_column()) - .chain(std::iter::once(f.unqualified_column())) + [ + f.qualified_column(), + // we need to push down filter using unqualified column as well + f.unqualified_column(), + ] }) .flatten() .collect::>();