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]