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

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


The following commit(s) were added to refs/heads/main by this push:
     new 3fc51ecd5 fix: TakeOrderedAndProjectExec is not reporting all fallback 
reasons (#2323)
3fc51ecd5 is described below

commit 3fc51ecd5792eea3aa6d1cc7f2d83dbc2c7d2fd6
Author: KAZUYUKI TANIMURA <ktanim...@apple.com>
AuthorDate: Mon Sep 8 09:04:53 2025 -0700

    fix: TakeOrderedAndProjectExec is not reporting all fallback reasons (#2323)
    
    ## Which issue does this PR close?
    
    Closes #2311
    
    ## Rationale for this change
    
    Adding missing reasons for falling back
    
    ## What changes are included in this PR?
    
    Added reasons
    
    ## How are these changes tested?
    
    Existing tests
---
 .../sql/comet/CometTakeOrderedAndProjectExec.scala      | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/spark/src/main/scala/org/apache/spark/sql/comet/CometTakeOrderedAndProjectExec.scala
 
b/spark/src/main/scala/org/apache/spark/sql/comet/CometTakeOrderedAndProjectExec.scala
index d6cc3602a..aa89dec13 100644
--- 
a/spark/src/main/scala/org/apache/spark/sql/comet/CometTakeOrderedAndProjectExec.scala
+++ 
b/spark/src/main/scala/org/apache/spark/sql/comet/CometTakeOrderedAndProjectExec.scala
@@ -29,6 +29,7 @@ import org.apache.spark.sql.execution.{SparkPlan, 
TakeOrderedAndProjectExec, Una
 import org.apache.spark.sql.execution.metric.{SQLMetric, SQLMetrics, 
SQLShuffleReadMetricsReporter, SQLShuffleWriteMetricsReporter}
 import org.apache.spark.sql.vectorized.ColumnarBatch
 
+import org.apache.comet.CometSparkSessionExtensions.withInfo
 import org.apache.comet.serde.QueryPlanSerde.exprToProto
 import org.apache.comet.serde.QueryPlanSerde.supportedSortType
 
@@ -133,8 +134,20 @@ case class CometTakeOrderedAndProjectExec(
 
 object CometTakeOrderedAndProjectExec {
   def isSupported(plan: TakeOrderedAndProjectExec): Boolean = {
-    val exprs = plan.projectList.map(exprToProto(_, plan.child.output))
-    val sortOrders = plan.sortOrder.map(exprToProto(_, plan.child.output))
+    val exprs = plan.projectList.map { p =>
+      val o = exprToProto(p, plan.child.output)
+      if (o.isEmpty) {
+        withInfo(plan, s"unsupported projection: $p")
+      }
+      o
+    }
+    val sortOrders = plan.sortOrder.map { s =>
+      val o = exprToProto(s, plan.child.output)
+      if (o.isEmpty) {
+        withInfo(plan, s"unsupported sort order: $s")
+      }
+      o
+    }
     exprs.forall(_.isDefined) && sortOrders.forall(_.isDefined) &&
     supportedSortType(plan, plan.sortOrder)
   }


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

Reply via email to