From 1130ccf203ecc94be84d48207d4f22efd41059d9 Mon Sep 17 00:00:00 2001 From: jussisaurio Date: Sun, 11 Aug 2024 19:14:36 +0300 Subject: [PATCH] mutable out parameter --- core/translate/planner.rs | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/core/translate/planner.rs b/core/translate/planner.rs index 9e494aca0..6ab00435e 100644 --- a/core/translate/planner.rs +++ b/core/translate/planner.rs @@ -43,9 +43,11 @@ pub fn prepare_select_plan<'a>(schema: &Schema, select: ast::Select) -> Result

break_predicate_at_and_boundaries(expr, vec![]), + ast::JoinConstraint::On(expr) => { + let mut predicates = vec![]; + break_predicate_at_and_boundaries(expr, &mut predicates); + predicates + } ast::JoinConstraint::Using(_) => todo!("USING joins not supported yet"), }); @@ -341,19 +347,14 @@ fn parse_join( )) } -fn break_predicate_at_and_boundaries( - predicate: ast::Expr, - mut predicates: Vec, -) -> Vec { +fn break_predicate_at_and_boundaries(predicate: ast::Expr, out_predicates: &mut Vec) { match predicate { ast::Expr::Binary(left, ast::Operator::And, right) => { - let ps = break_predicate_at_and_boundaries(*left, predicates); - let ps = break_predicate_at_and_boundaries(*right, ps); - ps + break_predicate_at_and_boundaries(*left, out_predicates); + break_predicate_at_and_boundaries(*right, out_predicates); } _ => { - predicates.push(predicate); - predicates + out_predicates.push(predicate); } } }