From 54d0a6f66b28b0638b3ecaa23368e88cd40a6546 Mon Sep 17 00:00:00 2001 From: lifulong Date: Fri, 3 Jan 2025 16:22:43 +0800 Subject: [PATCH] [GLUTEN-8414][VL] Override doCanonicalize in ColumnarPartialProjectExec node --- .../gluten/execution/ColumnarPartialProjectExec.scala | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backends-velox/src/main/scala/org/apache/gluten/execution/ColumnarPartialProjectExec.scala b/backends-velox/src/main/scala/org/apache/gluten/execution/ColumnarPartialProjectExec.scala index 256983d70c55..5e6187db3ed3 100644 --- a/backends-velox/src/main/scala/org/apache/gluten/execution/ColumnarPartialProjectExec.scala +++ b/backends-velox/src/main/scala/org/apache/gluten/execution/ColumnarPartialProjectExec.scala @@ -30,6 +30,7 @@ import org.apache.gluten.vectorized.{ArrowColumnarRow, ArrowWritableColumnVector import org.apache.spark.rdd.RDD import org.apache.spark.sql.catalyst.InternalRow import org.apache.spark.sql.catalyst.expressions.{Alias, Attribute, AttributeReference, CaseWhen, Coalesce, Expression, If, LambdaFunction, NamedExpression, NaNvl, ScalaUDF} +import org.apache.spark.sql.catalyst.plans.QueryPlan import org.apache.spark.sql.execution.{ExplainUtils, ProjectExec, SparkPlan, UnaryExecNode} import org.apache.spark.sql.execution.metric.{SQLMetric, SQLMetrics} import org.apache.spark.sql.hive.HiveUdfUtil @@ -75,6 +76,14 @@ case class ColumnarPartialProjectExec(original: ProjectExec, child: SparkPlan)( override def output: Seq[Attribute] = child.output ++ replacedAliasUdf.map(_.toAttribute) + override def doCanonicalize(): ColumnarPartialProjectExec = { + val canonicalized = original.canonicalized.asInstanceOf[ProjectExec] + this.copy( + original = canonicalized, + child = child.canonicalized + )(replacedAliasUdf.map(QueryPlan.normalizeExpressions(_, child.output))) + } + override def batchType(): Convention.BatchType = BackendsApiManager.getSettings.primaryBatchType override def rowType0(): Convention.RowType = Convention.RowType.None