Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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._
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -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
Expand Down