From 440ee8d14d96e0e5076731bea130bd860a06be74 Mon Sep 17 00:00:00 2001 From: Vinay Mehta <14790730+vimeh@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:07:01 -0800 Subject: [PATCH] fix(sql): apply table-scan rewrite before EXPLAIN display The EXPLAIN display path in VirtualExecutionPlan::fmt_as was generating SQL from the pre-rewrite plan, causing EXPLAIN output to not reflect the actual pushed-down query. Apply RewriteTableScanAnalyzer::rewrite before SQL rendering so EXPLAIN output matches final_sql(). --- datafusion-federation/src/sql/mod.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/datafusion-federation/src/sql/mod.rs b/datafusion-federation/src/sql/mod.rs index f0f1ce6..f506bae 100644 --- a/datafusion-federation/src/sql/mod.rs +++ b/datafusion-federation/src/sql/mod.rs @@ -281,9 +281,12 @@ impl DisplayAs for VirtualExecutionPlan { if let Some(ctx) = self.executor.compute_context() { write!(f, " compute_context={ctx}")?; }; - let mut plan = self.plan.clone(); + let mut plan = match RewriteTableScanAnalyzer::rewrite(self.plan.clone()) { + Ok(plan) => plan, + Err(_) => self.plan.clone(), + }; if let Ok(statement) = self.plan_to_statement(&plan) { - write!(f, " initial_sql={statement}")?; + write!(f, " base_sql={statement}")?; } let (logical_optimizers, ast_analyzers) = match gather_analyzers(&plan) {