From c860368bad21923425e4d6ec778e74a711b8f0d4 Mon Sep 17 00:00:00 2001 From: Ning Sun Date: Wed, 27 Aug 2025 11:08:08 +0800 Subject: [PATCH] refactor: optimise logicalplan before execution --- datafusion-postgres/src/handlers.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/datafusion-postgres/src/handlers.rs b/datafusion-postgres/src/handlers.rs index 664f41f..66e6ebe 100644 --- a/datafusion-postgres/src/handlers.rs +++ b/datafusion-postgres/src/handlers.rs @@ -505,8 +505,15 @@ impl ExtendedQueryHandler for DfSessionService { let plan = plan .clone() .replace_params_with_values(¶m_values) - .map_err(|e| PgWireError::ApiError(Box::new(e)))?; // Fixed: Use ¶m_values - let dataframe = match self.session_context.execute_logical_plan(plan).await { + .map_err(|e| PgWireError::ApiError(Box::new(e)))?; // Fixed: Use + // ¶m_values + let optimised = self + .session_context + .state() + .optimize(&plan) + .map_err(|e| PgWireError::ApiError(Box::new(e)))?; + + let dataframe = match self.session_context.execute_logical_plan(optimised).await { Ok(df) => df, Err(e) => { return Err(PgWireError::ApiError(Box::new(e))); @@ -538,10 +545,7 @@ impl QueryParser for Parser { .create_logical_plan(sql) .await .map_err(|e| PgWireError::ApiError(Box::new(e)))?; - let optimised = state - .optimize(&logical_plan) - .map_err(|e| PgWireError::ApiError(Box::new(e)))?; - Ok((sql.to_string(), optimised)) + Ok((sql.to_string(), logical_plan)) } }