This is an automated email from the ASF dual-hosted git repository.

mbutrovich pushed a commit to branch branch-0.10
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/branch-0.10 by this push:
     new 357d6c488 perf: Improve BroadcastExchangeExec conversion (#2417) 
(#2501)
357d6c488 is described below

commit 357d6c4883990f40b9cef44de8654dbb1f6c3179
Author: Andy Grove <[email protected]>
AuthorDate: Tue Sep 30 06:38:39 2025 -0600

    perf: Improve BroadcastExchangeExec conversion (#2417) (#2501)
    
    Co-authored-by: Zhen Wang <[email protected]>
---
 spark/src/main/scala/org/apache/comet/rules/CometExecRule.scala | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/spark/src/main/scala/org/apache/comet/rules/CometExecRule.scala 
b/spark/src/main/scala/org/apache/comet/rules/CometExecRule.scala
index a71eed6c8..091f70fdc 100644
--- a/spark/src/main/scala/org/apache/comet/rules/CometExecRule.scala
+++ b/spark/src/main/scala/org/apache/comet/rules/CometExecRule.scala
@@ -154,7 +154,7 @@ case class CometExecRule(session: SparkSession) extends 
Rule[SparkPlan] {
       operator2Proto(op).map(fun).getOrElse(op)
     }
 
-    plan.transformUp {
+    def convertNode(op: SparkPlan): SparkPlan = op match {
       // Fully native scan for V1
       case scan: CometScanExec if scan.scanImpl == 
CometConf.SCAN_NATIVE_DATAFUSION =>
         val nativeOp = QueryPlanSerde.operator2Proto(scan).get
@@ -446,7 +446,7 @@ case class CometExecRule(session: SparkSession) extends 
Rule[SparkPlan] {
           case other => other
         }
         if (!newChildren.exists(_.isInstanceOf[BroadcastExchangeExec])) {
-          val newPlan = apply(plan.withNewChildren(newChildren))
+          val newPlan = convertNode(plan.withNewChildren(newChildren))
           if (isCometNative(newPlan) || isCometBroadCastForceEnabled(conf)) {
             newPlan
           } else {
@@ -554,6 +554,10 @@ case class CometExecRule(session: SparkSession) extends 
Rule[SparkPlan] {
             }
         }
     }
+
+    plan.transformUp { case op =>
+      convertNode(op)
+    }
   }
 
   private def normalizePlan(plan: SparkPlan): SparkPlan = {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to