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

Yicong-Huang pushed a commit to branch branch-4.3
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/branch-4.3 by this push:
     new 54db1a2c2770 [SPARK-58350][SQL] Assign a name to the error condition 
_LEGACY_ERROR_TEMP_1228
54db1a2c2770 is described below

commit 54db1a2c27702238e8aacf9334a65cbf18ed8404
Author: Xiao Li <[email protected]>
AuthorDate: Thu Aug 6 16:44:48 2026 +0000

    [SPARK-58350][SQL] Assign a name to the error condition 
_LEGACY_ERROR_TEMP_1228
    
    ### What changes were proposed in this pull request?
    
    Assign the name `DECIMAL_SCALE_EXCEEDS_PRECISION` to the legacy error 
condition
    `_LEGACY_ERROR_TEMP_1228`. This error is raised by
    `DataTypeErrors.decimalCannotGreaterThanPrecisionError` when a 
`DecimalType` is
    constructed with scale greater than precision. The new condition is given 
SQLSTATE
    `22003` (matching the sibling `DECIMAL_PRECISION_EXCEEDS_MAX_PRECISION`); 
the message
    text and the `scale`/`precision` parameters are unchanged.
    
    ### Why are the changes needed?
    
    The error conditions 
[README](https://github.com/apache/spark/blob/master/common/utils/src/main/resources/error/README.md)
    disallows new `_LEGACY_ERROR_TEMP_*` entries and asks existing ones to be 
assigned
    proper names. This resolves one of them, under the umbrella
    [SPARK-37935](https://issues.apache.org/jira/browse/SPARK-37935).
    
    ### Does this PR introduce _any_ user-facing change?
    
    No. The `_LEGACY_ERROR_TEMP_*` names are not part of the public API. The 
error
    condition name changes to `DECIMAL_SCALE_EXCEEDS_PRECISION` and now reports 
SQLSTATE
    `22003`; the rendered message ("Decimal scale (`<scale>`) cannot be greater 
than
    precision (`<precision>`).") is unchanged.
    
    ### How was this patch tested?
    
    Added a `checkError` test in `DataTypeSuite` that constructs 
`DecimalType(2, 3)` and
    asserts the `DECIMAL_SCALE_EXCEEDS_PRECISION` condition. 
`SparkThrowableSuite`
    validates error-file formatting/sorting and that non-legacy conditions 
carry a
    SQLSTATE.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Yes
    
    Closes #57538 from gatorsmile/SPARK-58350-decimal-scale-precision.
    
    Authored-by: Xiao Li <[email protected]>
    Signed-off-by: Yicong-Huang <[email protected]>
    (cherry picked from commit 06eb04c0eb50d6a113b692ffb01aeae4a58317bc)
    Signed-off-by: Yicong-Huang <[email protected]>
---
 common/utils/src/main/resources/error/error-conditions.json   | 11 ++++++-----
 .../scala/org/apache/spark/sql/errors/DataTypeErrors.scala    |  2 +-
 .../test/scala/org/apache/spark/sql/types/DataTypeSuite.scala | 11 +++++++++++
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/common/utils/src/main/resources/error/error-conditions.json 
b/common/utils/src/main/resources/error/error-conditions.json
index dd43b76ca403..02db974afcea 100644
--- a/common/utils/src/main/resources/error/error-conditions.json
+++ b/common/utils/src/main/resources/error/error-conditions.json
@@ -2279,6 +2279,12 @@
     ],
     "sqlState" : "22003"
   },
+  "DECIMAL_SCALE_EXCEEDS_PRECISION" : {
+    "message" : [
+      "Decimal scale (<scale>) cannot be greater than precision (<precision>)."
+    ],
+    "sqlState" : "22003"
+  },
   "DEFAULT_DATABASE_NOT_EXISTS" : {
     "message" : [
       "Default database <defaultDatabase> does not exist, please create it 
first or change default database to `<defaultDatabase>`."
@@ -10279,11 +10285,6 @@
       "The SQL config '<configName>' was removed in the version <version>. 
<comment>"
     ]
   },
-  "_LEGACY_ERROR_TEMP_1228" : {
-    "message" : [
-      "Decimal scale (<scale>) cannot be greater than precision (<precision>)."
-    ]
-  },
   "_LEGACY_ERROR_TEMP_1232" : {
     "message" : [
       "Partition spec is invalid. The spec (<specKeys>) must match the 
partition spec (<partitionColumnNames>) defined in table '<tableName>'."
diff --git 
a/sql/api/src/main/scala/org/apache/spark/sql/errors/DataTypeErrors.scala 
b/sql/api/src/main/scala/org/apache/spark/sql/errors/DataTypeErrors.scala
index 326d918f2486..f59470c1f1b3 100644
--- a/sql/api/src/main/scala/org/apache/spark/sql/errors/DataTypeErrors.scala
+++ b/sql/api/src/main/scala/org/apache/spark/sql/errors/DataTypeErrors.scala
@@ -139,7 +139,7 @@ private[sql] object DataTypeErrors extends 
DataTypeErrorsBase {
 
   def decimalCannotGreaterThanPrecisionError(scale: Int, precision: Int): 
Throwable = {
     new AnalysisException(
-      errorClass = "_LEGACY_ERROR_TEMP_1228",
+      errorClass = "DECIMAL_SCALE_EXCEEDS_PRECISION",
       messageParameters = Map("scale" -> scale.toString, "precision" -> 
precision.toString))
   }
 
diff --git 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
index 6403e1509858..6aae5047395d 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
@@ -24,6 +24,7 @@ import org.json4s.jackson.JsonMethods
 
 import org.apache.spark.{SparkClassNotFoundException, SparkException, 
SparkFunSuite}
 import org.apache.spark.SparkIllegalArgumentException
+import org.apache.spark.sql.AnalysisException
 import org.apache.spark.sql.catalyst.analysis.{caseInsensitiveResolution, 
caseSensitiveResolution}
 import org.apache.spark.sql.catalyst.parser.{CatalystSqlParser, ParseException}
 import org.apache.spark.sql.catalyst.plans.SQLHelper
@@ -1734,4 +1735,14 @@ class DataTypeSuite extends SparkFunSuite with SQLHelper 
{
         s"${clazz.getSimpleName}: PhysicalDataType should recognize 
non-singleton instance")
     }
   }
+
+  test("SPARK-58350: DecimalType with scale greater than precision throws " +
+    "DECIMAL_SCALE_EXCEEDS_PRECISION") {
+    checkError(
+      exception = intercept[AnalysisException] {
+        DecimalType(2, 3)
+      },
+      condition = "DECIMAL_SCALE_EXCEEDS_PRECISION",
+      parameters = Map("scale" -> "3", "precision" -> "2"))
+  }
 }


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

Reply via email to