From df74a153eb8a40cc6b6594b6ceb85e927acaf332 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sat, 10 Jul 2021 14:32:53 -0700 Subject: [PATCH 1/2] replace once iter chain with array::IntoIter --- datafusion/src/logical_plan/plan.rs | 8 +++----- datafusion/src/optimizer/filter_push_down.rs | 13 +++++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/datafusion/src/logical_plan/plan.rs b/datafusion/src/logical_plan/plan.rs index b954b6a97950..87fc64a010a6 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| std::array::IntoIter::new([&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 76d8c05bed4c..2d87b5a44c8f 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()) + std::array::IntoIter::new([ + 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())) + std::array::IntoIter::new([ + f.qualified_column(), + // we need to push down filter using unqualified column as well + f.unqualified_column(), + ]) }) .flatten() .collect::>(); From 8e8b2e740a04ca69cebd186e9cbfc66ecb65b04f Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 12 Jul 2021 22:14:15 -0700 Subject: [PATCH 2/2] use new array IntoIter implementation from rust 1.53 --- datafusion/src/logical_plan/plan.rs | 2 +- datafusion/src/optimizer/filter_push_down.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/datafusion/src/logical_plan/plan.rs b/datafusion/src/logical_plan/plan.rs index 87fc64a010a6..fdf94809f16e 100644 --- a/datafusion/src/logical_plan/plan.rs +++ b/datafusion/src/logical_plan/plan.rs @@ -375,7 +375,7 @@ impl LogicalPlan { { self.using_columns.push( on.iter() - .map(|entry| std::array::IntoIter::new([&entry.0, &entry.1])) + .map(|entry| [&entry.0, &entry.1]) .flatten() .cloned() .collect::>(), diff --git a/datafusion/src/optimizer/filter_push_down.rs b/datafusion/src/optimizer/filter_push_down.rs index 2d87b5a44c8f..399923e87218 100644 --- a/datafusion/src/optimizer/filter_push_down.rs +++ b/datafusion/src/optimizer/filter_push_down.rs @@ -97,11 +97,11 @@ fn get_join_predicates<'a>( .fields() .iter() .map(|f| { - std::array::IntoIter::new([ + [ f.qualified_column(), // we need to push down filter using unqualified column as well f.unqualified_column(), - ]) + ] }) .flatten() .collect::>(); @@ -109,11 +109,11 @@ fn get_join_predicates<'a>( .fields() .iter() .map(|f| { - std::array::IntoIter::new([ + [ f.qualified_column(), // we need to push down filter using unqualified column as well f.unqualified_column(), - ]) + ] }) .flatten() .collect::>();