Skip to content

Commit 3fc51ec

Browse files
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
1 parent 22eb447 commit 3fc51ec

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

spark/src/main/scala/org/apache/spark/sql/comet/CometTakeOrderedAndProjectExec.scala

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import org.apache.spark.sql.execution.{SparkPlan, TakeOrderedAndProjectExec, Una
2929
import org.apache.spark.sql.execution.metric.{SQLMetric, SQLMetrics, SQLShuffleReadMetricsReporter, SQLShuffleWriteMetricsReporter}
3030
import org.apache.spark.sql.vectorized.ColumnarBatch
3131

32+
import org.apache.comet.CometSparkSessionExtensions.withInfo
3233
import org.apache.comet.serde.QueryPlanSerde.exprToProto
3334
import org.apache.comet.serde.QueryPlanSerde.supportedSortType
3435

@@ -133,8 +134,20 @@ case class CometTakeOrderedAndProjectExec(
133134

134135
object CometTakeOrderedAndProjectExec {
135136
def isSupported(plan: TakeOrderedAndProjectExec): Boolean = {
136-
val exprs = plan.projectList.map(exprToProto(_, plan.child.output))
137-
val sortOrders = plan.sortOrder.map(exprToProto(_, plan.child.output))
137+
val exprs = plan.projectList.map { p =>
138+
val o = exprToProto(p, plan.child.output)
139+
if (o.isEmpty) {
140+
withInfo(plan, s"unsupported projection: $p")
141+
}
142+
o
143+
}
144+
val sortOrders = plan.sortOrder.map { s =>
145+
val o = exprToProto(s, plan.child.output)
146+
if (o.isEmpty) {
147+
withInfo(plan, s"unsupported sort order: $s")
148+
}
149+
o
150+
}
138151
exprs.forall(_.isDefined) && sortOrders.forall(_.isDefined) &&
139152
supportedSortType(plan, plan.sortOrder)
140153
}

0 commit comments

Comments
 (0)