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

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


The following commit(s) were added to refs/heads/main by this push:
     new 49ccdbde3 [GLUTEN-7213][CORE] Make fallback reason for 
CheckOverflowInTableInsert clearer (#7248)
49ccdbde3 is described below

commit 49ccdbde349338c87ccc37fa9fc68e8ae4570030
Author: Zhen Wang <[email protected]>
AuthorDate: Sat Sep 14 22:33:03 2024 +0800

    [GLUTEN-7213][CORE] Make fallback reason for CheckOverflowInTableInsert 
clearer (#7248)
---
 .../apache/gluten/expression/ExpressionConverter.scala   |  4 ++++
 .../expressions/GlutenExpressionMappingSuite.scala       | 16 ++++++++++++++++
 .../org/apache/gluten/expression/ExpressionNames.scala   |  1 +
 .../apache/gluten/sql/shims/spark34/Spark34Shims.scala   |  3 ++-
 .../apache/gluten/sql/shims/spark35/Spark35Shims.scala   |  3 ++-
 5 files changed, 25 insertions(+), 2 deletions(-)

diff --git 
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
 
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
index 98a556c11..0aa676158 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ExpressionConverter.scala
@@ -481,6 +481,10 @@ object ExpressionConverter extends SQLConfHelper with 
Logging {
           substraitExprName,
           replaceWithExpressionTransformer0(c.child, attributeSeq, 
expressionsMap),
           c)
+      case c if c.getClass.getSimpleName.equals("CheckOverflowInTableInsert") 
=>
+        throw new GlutenNotSupportException(
+          "CheckOverflowInTableInsert is used in ansi mode, but gluten does 
not support ANSI mode."
+        )
       case b: BinaryArithmetic if DecimalArithmeticUtil.isDecimalArithmetic(b) 
=>
         DecimalArithmeticUtil.checkAllowDecimalArithmetic()
         if (!BackendsApiManager.getSettings.transformCheckOverflow) {
diff --git 
a/gluten-ut/test/src/test/scala/org/apache/gluten/expressions/GlutenExpressionMappingSuite.scala
 
b/gluten-ut/test/src/test/scala/org/apache/gluten/expressions/GlutenExpressionMappingSuite.scala
index 18f2baf6a..3b52721fe 100644
--- 
a/gluten-ut/test/src/test/scala/org/apache/gluten/expressions/GlutenExpressionMappingSuite.scala
+++ 
b/gluten-ut/test/src/test/scala/org/apache/gluten/expressions/GlutenExpressionMappingSuite.scala
@@ -94,4 +94,20 @@ class GlutenExpressionMappingSuite
       }
     }
   }
+
+  testWithSpecifiedSparkVersion(
+    "GLUTEN-7213: Check fallback reason with CheckOverflowInTableInsert",
+    Some("3.4")) {
+    withTable("t1", "t2") {
+      sql("create table t1 (a float) using parquet")
+      sql("insert into t1 values(1.1)")
+      sql("create table t2 (b decimal(10,4)) using parquet")
+
+      val msg =
+        "CheckOverflowInTableInsert is used in ansi mode, but gluten does not 
support ANSI mode."
+      import org.apache.spark.sql.execution.GlutenImplicits._
+      val fallbackSummary = sql("insert overwrite t2 select * from 
t1").fallbackSummary
+      
assert(fallbackSummary.fallbackNodeToReason.flatMap(_.values).exists(_.contains(msg)))
+    }
+  }
 }
diff --git 
a/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
 
b/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
index c45f0b2d4..0e08e013c 100644
--- 
a/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
+++ 
b/shims/common/src/main/scala/org/apache/gluten/expression/ExpressionNames.scala
@@ -314,6 +314,7 @@ object ExpressionNames {
   final val INLINE = "inline"
   final val POSEXPLODE = "posexplode"
   final val CHECK_OVERFLOW = "check_overflow"
+  final val CHECK_OVERFLOW_IN_TABLE_INSERT = "check_overflow_in_table_insert"
   final val MAKE_DECIMAL = "make_decimal"
   final val PROMOTE_PRECISION = "promote_precision"
   final val SPARK_PARTITION_ID = "spark_partition_id"
diff --git 
a/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
 
b/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
index 5e42f66ba..558d7f60d 100644
--- 
a/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
+++ 
b/shims/spark34/src/main/scala/org/apache/gluten/sql/shims/spark34/Spark34Shims.scala
@@ -82,7 +82,8 @@ class Spark34Shims extends SparkShims {
       Sig[RoundFloor](ExpressionNames.FLOOR),
       Sig[RoundCeil](ExpressionNames.CEIL),
       Sig[Mask](ExpressionNames.MASK),
-      Sig[ArrayInsert](ExpressionNames.ARRAY_INSERT)
+      Sig[ArrayInsert](ExpressionNames.ARRAY_INSERT),
+      
Sig[CheckOverflowInTableInsert](ExpressionNames.CHECK_OVERFLOW_IN_TABLE_INSERT)
     )
   }
 
diff --git 
a/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
 
b/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
index ddb023b5a..4a6590161 100644
--- 
a/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
+++ 
b/shims/spark35/src/main/scala/org/apache/gluten/sql/shims/spark35/Spark35Shims.scala
@@ -82,7 +82,8 @@ class Spark35Shims extends SparkShims {
       Sig[TimestampAdd](ExpressionNames.TIMESTAMP_ADD),
       Sig[RoundFloor](ExpressionNames.FLOOR),
       Sig[RoundCeil](ExpressionNames.CEIL),
-      Sig[ArrayInsert](ExpressionNames.ARRAY_INSERT)
+      Sig[ArrayInsert](ExpressionNames.ARRAY_INSERT),
+      
Sig[CheckOverflowInTableInsert](ExpressionNames.CHECK_OVERFLOW_IN_TABLE_INSERT)
     )
   }
 


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

Reply via email to