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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]