From 28344d96dbcc1eae935335d12da2e661b97ed4c7 Mon Sep 17 00:00:00 2001 From: Igor Izvekov Date: Fri, 24 Feb 2023 15:02:56 +0300 Subject: [PATCH] Optimization of the function "intersect" --- datafusion/optimizer/src/eliminate_cross_join.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/datafusion/optimizer/src/eliminate_cross_join.rs b/datafusion/optimizer/src/eliminate_cross_join.rs index c19b43d297e3..29827a3557ff 100644 --- a/datafusion/optimizer/src/eliminate_cross_join.rs +++ b/datafusion/optimizer/src/eliminate_cross_join.rs @@ -247,10 +247,12 @@ fn intersect( vec1: &[(Expr, Expr)], vec2: &[(Expr, Expr)], ) { - for x1 in vec1.iter() { - for x2 in vec2.iter() { - if x1.0 == x2.0 && x1.1 == x2.1 || x1.1 == x2.0 && x1.0 == x2.1 { - accum.push((x1.0.clone(), x1.1.clone())); + if !(vec1.is_empty() || vec2.is_empty()) { + for x1 in vec1.iter() { + for x2 in vec2.iter() { + if x1.0 == x2.0 && x1.1 == x2.1 || x1.1 == x2.0 && x1.0 == x2.1 { + accum.push((x1.0.clone(), x1.1.clone())); + } } } }