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

philo-he 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 b1906e5f7b [GLUTEN-11635][FOLLOW-UP] Respect partial fallback configs 
when checking node support (#11988)
b1906e5f7b is described below

commit b1906e5f7bf140b2b20178e086b9677980f1b91d
Author: Wechar Yu <[email protected]>
AuthorDate: Thu Apr 30 15:15:19 2026 +0800

    [GLUTEN-11635][FOLLOW-UP] Respect partial fallback configs when checking 
node support (#11988)
---
 .../apache/gluten/extension/PartialFallback.scala  |  9 ++++--
 .../spark/sql/execution/GlutenHiveUDFSuite.scala   | 35 +++++++++++++++++-----
 2 files changed, 33 insertions(+), 11 deletions(-)

diff --git 
a/backends-velox/src/main/scala/org/apache/gluten/extension/PartialFallback.scala
 
b/backends-velox/src/main/scala/org/apache/gluten/extension/PartialFallback.scala
index 8a7da72b3e..4f15ad31e7 100644
--- 
a/backends-velox/src/main/scala/org/apache/gluten/extension/PartialFallback.scala
+++ 
b/backends-velox/src/main/scala/org/apache/gluten/extension/PartialFallback.scala
@@ -16,6 +16,8 @@
  */
 package org.apache.gluten.extension
 
+import org.apache.gluten.config.GlutenConfig
+
 import org.apache.spark.sql.catalyst.rules.{Rule, RuleExecutor}
 import org.apache.spark.sql.execution.{GenerateExec, ProjectExec, SparkPlan}
 import org.apache.spark.sql.internal.SQLConf
@@ -37,8 +39,9 @@ case class PartialFallbackRules() extends Rule[SparkPlan] {
 }
 
 object PartialFallback {
-  def supportPartialFallback(plan: SparkPlan): Boolean = {
-    plan.isInstanceOf[ProjectExec] ||
-    plan.isInstanceOf[GenerateExec]
+  def supportPartialFallback(plan: SparkPlan): Boolean = plan match {
+    case _: ProjectExec => GlutenConfig.get.enableColumnarPartialProject
+    case _: GenerateExec => GlutenConfig.get.enableColumnarPartialGenerate
+    case _ => false
   }
 }
diff --git 
a/backends-velox/src/test/scala/org/apache/spark/sql/execution/GlutenHiveUDFSuite.scala
 
b/backends-velox/src/test/scala/org/apache/spark/sql/execution/GlutenHiveUDFSuite.scala
index 296de381cd..914300069f 100644
--- 
a/backends-velox/src/test/scala/org/apache/spark/sql/execution/GlutenHiveUDFSuite.scala
+++ 
b/backends-velox/src/test/scala/org/apache/spark/sql/execution/GlutenHiveUDFSuite.scala
@@ -162,15 +162,34 @@ class GlutenHiveUDFSuite extends 
GlutenQueryComparisonTest with SQLTestUtils {
       val plusOne = udf((x: Long) => x + 1)
       spark.udf.register("plus_one", plusOne)
       sql(s"CREATE TEMPORARY FUNCTION noInputUDTF AS 
'${classOf[NoInputUDTF].getName}'")
-      runQueryAndCompare("""
-                           |select plus_one(col1) as col2, l_partkey from (
-                           | select col1, l_partkey from lineitem lateral view 
noInputUDTF() as col1
-                           |)""".stripMargin) {
-        df =>
-          {
-            checkOperatorMatch[ColumnarPartialProjectExec](df)
-            checkOperatorMatch[ColumnarPartialGenerateExec](df)
+
+      for {
+        enablePartialProject <- Seq(true, false)
+        enablePartialGenerate <- Seq(true, false)
+      } {
+        val expectPartialFallback = enablePartialProject && 
enablePartialGenerate
+        withSQLConf(
+          SQLConf.ANSI_ENABLED.key -> "false",
+          GlutenConfig.ENABLE_COLUMNAR_PARTIAL_PROJECT.key -> 
enablePartialProject.toString,
+          GlutenConfig.ENABLE_COLUMNAR_PARTIAL_GENERATE.key -> 
enablePartialGenerate.toString
+        ) {
+          runQueryAndCompare(
+            """
+              |select plus_one(col1) as col2, l_partkey from (
+              | select col1, l_partkey from lineitem lateral view 
noInputUDTF() as col1
+              |)""".stripMargin,
+            noFallBack = expectPartialFallback
+          ) {
+            df =>
+              val executedPlan = getExecutedPlan(df)
+              assert(
+                
executedPlan.exists(_.isInstanceOf[ColumnarPartialProjectExec]) ==
+                  expectPartialFallback)
+              assert(
+                
executedPlan.exists(_.isInstanceOf[ColumnarPartialGenerateExec]) ==
+                  expectPartialFallback)
           }
+        }
       }
     }
   }


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

Reply via email to