adriangb commented on code in PR #17028:
URL: https://github.com/apache/datafusion/pull/17028#discussion_r2252648667


##########
datafusion/physical-plan/src/execution_plan.rs:
##########
@@ -194,6 +194,31 @@ pub trait ExecutionPlan: Debug + DisplayAs + Send + Sync {
         children: Vec<Arc<dyn ExecutionPlan>>,
     ) -> Result<Arc<dyn ExecutionPlan>>;
 
+    /// Reset any internal state within this [`ExecutionPlan`].
+    ///
+    /// This method is called when an [`ExecutionPlan`] needs to be 
re-executed,
+    /// such as in recursive queries. Unlike 
[`ExecutionPlan::with_new_children`], this method
+    /// ensures that any stateful components (e.g., 
[`DynamicFilterPhysicalExpr`])
+    /// are reset to their initial state.
+    ///
+    /// The default implementation simply calls 
[`ExecutionPlan::with_new_children`] with the existing children,
+    /// effectively creating a new instance of the [`ExecutionPlan`] with the 
same children but without
+    /// necessarily resetting any internal state. Implementations that require 
resetting of some
+    /// internal state should override this method to provide the necessary 
logic.
+    ///
+    /// This method should *not* reset state recursively for children, as it 
is expected that
+    /// it will be called from within a walk of the execution plan tree so 
that it will be called on each child later
+    /// or was already called on each child.
+    ///
+    /// Note to implementers: unlike [`ExecutionPlan::with_new_children`] this 
method does not accept new children as an argument,
+    /// thus it is expected that any cached plan properties will remain valid 
after the reset.
+    ///
+    /// [`DynamicFilterPhysicalExpr`]: 
datafusion_physical_expr::expressions::DynamicFilterPhysicalExpr

Review Comment:
   98b5a7240



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to