From fa0dff9843731a388e3b78352ec2432a7208d835 Mon Sep 17 00:00:00 2001 From: pedrocarlo Date: Thu, 29 May 2025 15:15:17 -0300 Subject: [PATCH] Fix rebase changes --- core/translate/optimizer/mod.rs | 5 +++++ core/translate/plan.rs | 28 ++++++++++++++++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/core/translate/optimizer/mod.rs b/core/translate/optimizer/mod.rs index 21dadf535..9072f327b 100644 --- a/core/translate/optimizer/mod.rs +++ b/core/translate/optimizer/mod.rs @@ -52,6 +52,11 @@ pub fn optimize_plan(plan: &mut Plan, schema: &Schema) -> Result<()> { target = "optimized_plan", plan_sql = plan.to_sql_string(&crate::translate::plan::PlanContext(&[])) ); + dbg!(&plan); + println!( + "{}", + plan.to_sql_string(&crate::translate::plan::PlanContext(&[])) + ); Ok(()) } diff --git a/core/translate/plan.rs b/core/translate/plan.rs index 2d7deaed5..049743d6d 100644 --- a/core/translate/plan.rs +++ b/core/translate/plan.rs @@ -1395,7 +1395,7 @@ impl fmt::Display for UpdatePlan { } } -pub struct PlanContext<'a>(pub &'a [&'a TableReference]); +pub struct PlanContext<'a>(pub &'a [&'a JoinedTable]); // Definitely not perfect yet impl ToSqlContext for PlanContext<'_> { @@ -1424,7 +1424,11 @@ impl ToSqlString for Plan { // Make the Plans pass their own context match self { Self::Select(select) => select.to_sql_string(&PlanContext( - &select.table_references.iter().collect::>(), + &select + .table_references + .joined_tables + .iter() + .collect::>(), )), Self::CompoundSelect { first, @@ -1435,10 +1439,11 @@ impl ToSqlString for Plan { } => { let all_refs = first .table_references + .joined_tables .iter() .chain( rest.iter() - .flat_map(|(plan, _)| plan.table_references.iter()), + .flat_map(|(plan, _)| plan.table_references.joined_tables.iter()), ) .collect::>(); let context = &PlanContext(all_refs.as_slice()); @@ -1479,7 +1484,7 @@ impl ToSqlString for Plan { } } -impl ToSqlString for TableReference { +impl ToSqlString for JoinedTable { fn to_sql_string( &self, _context: &C, @@ -1496,6 +1501,7 @@ impl ToSqlString for TableReference { &from_clause_subquery .plan .table_references + .joined_tables .iter() .collect::>() )) @@ -1563,7 +1569,11 @@ impl ToSqlString for SelectPlan { ret.push("FROM".to_string()); ret.extend(self.join_order.iter().enumerate().map(|(idx, order)| { - let table_ref = self.table_references.get(order.original_idx).unwrap(); + let table_ref = self + .table_references + .joined_tables + .get(order.original_idx) + .unwrap(); if idx == 0 { table_ref.to_sql_string(context) } else { @@ -1637,6 +1647,7 @@ impl ToSqlString for DeletePlan { fn to_sql_string(&self, _context: &C) -> String { let table_ref = self .table_references + .joined_tables .first() .expect("Delete Plan should have only one table reference"); let context = &[table_ref]; @@ -1683,9 +1694,14 @@ impl ToSqlString for UpdatePlan { fn to_sql_string(&self, _context: &C) -> String { let table_ref = self .table_references + .joined_tables .first() .expect("UPDATE Plan should have only one table reference"); - let context = &self.table_references.iter().collect::>(); + let context = &self + .table_references + .joined_tables + .iter() + .collect::>(); let context = &PlanContext(context); let mut ret = Vec::new();