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

zml1206 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 8ca75e4041 [MINOR][CORE] Make ColumnarInputAdapter inherit from 
GlutenPlan (#12973)
8ca75e4041 is described below

commit 8ca75e404125bf7562dce8e1bb94111dde508e67
Author: Kaifei Yi <[email protected]>
AuthorDate: Mon Sep 21 09:01:40 2026 +0800

    [MINOR][CORE] Make ColumnarInputAdapter inherit from GlutenPlan (#12973)
---
 .../metrics/GlutenClickHouseTPCDSMetricsSuite.scala     |  7 +++++--
 .../metrics/GlutenClickHouseTPCHMetricsSuite.scala      | 10 ++++++++--
 .../sql/execution/ColumnarCollapseTransformStages.scala | 17 ++++++-----------
 3 files changed, 19 insertions(+), 15 deletions(-)

diff --git 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCDSMetricsSuite.scala
 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCDSMetricsSuite.scala
index af025d8084..42093f3ff5 100644
--- 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCDSMetricsSuite.scala
+++ 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCDSMetricsSuite.scala
@@ -21,7 +21,7 @@ import org.apache.gluten.execution.GlutenPlan
 
 import org.apache.spark.SparkConf
 import org.apache.spark.sql.catalyst.expressions.Attribute
-import org.apache.spark.sql.execution.InputIteratorTransformer
+import org.apache.spark.sql.execution.{ColumnarInputAdapter, 
InputIteratorTransformer}
 import org.apache.spark.task.TaskResources
 
 import scala.collection.JavaConverters._
@@ -87,7 +87,10 @@ class GlutenClickHouseTPCDSMetricsSuite extends 
GlutenClickHouseTPCDSAbstractSui
     ) {
       () =>
         val allGlutenPlans = wholeStageTransformer.collect {
-          case g: GlutenPlan if !g.isInstanceOf[InputIteratorTransformer] => g
+          case g: GlutenPlan
+              if !g.isInstanceOf[InputIteratorTransformer] &&
+                !g.isInstanceOf[ColumnarInputAdapter] =>
+            g
         }
 
         assert(allGlutenPlans.size == 30)
diff --git 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCHMetricsSuite.scala
 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCHMetricsSuite.scala
index f5a70731d5..021ea6ae0d 100644
--- 
a/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCHMetricsSuite.scala
+++ 
b/backends-clickhouse/src/test/scala/org/apache/gluten/execution/metrics/GlutenClickHouseTPCHMetricsSuite.scala
@@ -246,7 +246,10 @@ class GlutenClickHouseTPCHMetricsSuite extends 
ParquetTPCHSuite {
         ) {
           () =>
             val allGlutenPlans = wholeStageTransformer1.collect {
-              case g: GlutenPlan if !g.isInstanceOf[InputIteratorTransformer] 
=> g
+              case g: GlutenPlan
+                  if !g.isInstanceOf[InputIteratorTransformer] &&
+                    !g.isInstanceOf[ColumnarInputAdapter] =>
+                g
             }
 
             val scanPlan = allGlutenPlans(9)
@@ -283,7 +286,10 @@ class GlutenClickHouseTPCHMetricsSuite extends 
ParquetTPCHSuite {
         ) {
           () =>
             val allGlutenPlans = wholeStageTransformer2.collect {
-              case g: GlutenPlan if !g.isInstanceOf[InputIteratorTransformer] 
=> g
+              case g: GlutenPlan
+                  if !g.isInstanceOf[InputIteratorTransformer] &&
+                    !g.isInstanceOf[ColumnarInputAdapter] =>
+                g
             }
 
             assert(allGlutenPlans.size == 58)
diff --git 
a/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/ColumnarCollapseTransformStages.scala
 
b/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/ColumnarCollapseTransformStages.scala
index cf9fcdfd97..1cfca3f27e 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/ColumnarCollapseTransformStages.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/spark/sql/execution/ColumnarCollapseTransformStages.scala
@@ -20,7 +20,7 @@ import org.apache.gluten.backendsapi.BackendsApiManager
 import org.apache.gluten.config.GlutenConfig
 import org.apache.gluten.execution._
 import org.apache.gluten.extension.ApplyStageInputStatsRule
-import org.apache.gluten.extension.columnar.transition.{Convention, 
ConventionReq}
+import org.apache.gluten.extension.columnar.transition.Convention
 import org.apache.gluten.metrics.MetricsUpdater
 import org.apache.gluten.substrait.SubstraitContext
 import org.apache.gluten.substrait.rel.{InputIteratorRelNode, RelBuilder}
@@ -215,21 +215,16 @@ case class ColumnarCollapseTransformStages(glutenConf: 
GlutenConfig) extends Rul
   }
 }
 
-// TODO: Make this inherit from GlutenPlan.
 case class ColumnarInputAdapter(child: SparkPlan)
-  extends InputAdapterGenerateTreeStringShim
-  with Convention.KnownBatchType
-  with Convention.KnownRowType
-  with ConventionReq.KnownChildConvention {
+  extends GlutenPlan
+  with InputAdapterGenerateTreeStringShim {
   override def output: Seq[Attribute] = child.output
-  final override val supportsColumnar: Boolean = true
-  final override val supportsRowBased: Boolean = false
+  // Row output is unsupported, so GlutenPlan derives supportsRowBased = false.
   override def rowType(): Convention.RowType = Convention.RowType.None
+  // Columnar output only, so GlutenPlan derives supportsColumnar = true. 
GlutenPlan's default
+  // requiredChildConvention then requires the same batch type from the child.
   override def batchType(): Convention.BatchType =
     BackendsApiManager.getSettings.primaryBatchType
-  override def requiredChildConvention(): Seq[ConventionReq] = Seq(
-    ConventionReq.ofBatch(
-      
ConventionReq.BatchType.Is(BackendsApiManager.getSettings.primaryBatchType)))
   override protected def doExecute(): RDD[InternalRow] = throw new 
UnsupportedOperationException()
   override protected def doExecuteColumnar(): RDD[ColumnarBatch] = 
child.executeColumnar()
   override def outputPartitioning: Partitioning = child.outputPartitioning


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

Reply via email to