in gluten-substrait/src/main/scala/org/apache/gluten/extension/columnar/validator/Validators.scala [147:195]
override def validate(plan: SparkPlan): Validator.OutCome = plan match {
case p: SortExec if !glutenConf.enableColumnarSort => fail(p)
case p: WindowExec if !glutenConf.enableColumnarWindow => fail(p)
case p: SortMergeJoinExec if !glutenConf.enableColumnarSortMergeJoin => fail(p)
case p: BatchScanExec if !glutenConf.enableColumnarBatchScan => fail(p)
case p: FileSourceScanExec if !glutenConf.enableColumnarFileScan => fail(p)
case p: ProjectExec if !glutenConf.enableColumnarProject => fail(p)
case p: FilterExec if !glutenConf.enableColumnarFilter => fail(p)
case p: UnionExec if !glutenConf.enableColumnarUnion => fail(p)
case p: ExpandExec if !glutenConf.enableColumnarExpand => fail(p)
case p: SortAggregateExec if !glutenConf.forceToUseHashAgg => fail(p)
case p: ShuffledHashJoinExec if !glutenConf.enableColumnarShuffledHashJoin => fail(p)
case p: ShuffleExchangeExec if !glutenConf.enableColumnarShuffle => fail(p)
case p: BroadcastExchangeExec if !glutenConf.enableColumnarBroadcastExchange => fail(p)
case p @ (_: LocalLimitExec | _: GlobalLimitExec) if !glutenConf.enableColumnarLimit =>
fail(p)
case p: GenerateExec if !glutenConf.enableColumnarGenerate => fail(p)
case p: CoalesceExec if !glutenConf.enableColumnarCoalesce => fail(p)
case p: CartesianProductExec if !glutenConf.cartesianProductTransformerEnabled => fail(p)
case p: TakeOrderedAndProjectExec
if !(glutenConf.enableTakeOrderedAndProject && glutenConf.enableColumnarSort &&
glutenConf.enableColumnarShuffle && glutenConf.enableColumnarProject) =>
fail(p)
case p: BroadcastHashJoinExec if !glutenConf.enableColumnarBroadcastJoin =>
fail(p)
case p: BroadcastNestedLoopJoinExec
if !(glutenConf.enableColumnarBroadcastJoin &&
glutenConf.broadcastNestedLoopJoinTransformerTransformerEnabled) =>
fail(p)
case p @ (_: HashAggregateExec | _: SortAggregateExec | _: ObjectHashAggregateExec)
if !glutenConf.enableColumnarHashAgg =>
fail(p)
case p
if SparkShimLoader.getSparkShims.isWindowGroupLimitExec(
plan) && !glutenConf.enableColumnarWindowGroupLimit =>
fail(p)
case p
if HiveTableScanExecTransformer.isHiveTableScan(
p) && !glutenConf.enableColumnarHiveTableScan =>
fail(p)
case p: SampleExec
if !(glutenConf.enableColumnarSample && BackendsApiManager.getSettings
.supportSampleExec()) =>
fail(p)
case p: RangeExec if !glutenConf.enableColumnarRange => fail(p)
case p: CollectLimitExec if !glutenConf.enableColumnarCollectLimit => fail(p)
case p: CollectTailExec if !glutenConf.enableColumnarCollectTail => fail(p)
case _ => pass()
}