Skip to content
Open
8 changes: 4 additions & 4 deletions common/utils/src/main/resources/error/error-conditions.json
Original file line number Diff line number Diff line change
Expand Up @@ -5026,14 +5026,14 @@
""
],
"subClass" : {
"WITHOUT_SUGGESTION" : {
"DEFAULT" : {
"message" : [
"The <roundedValue> rounded half up from <originalValue> cannot be represented as Decimal(<precision>, <scale>)."
"<value> cannot be represented as Decimal(<precision>, <scale>)."
]
},
"WITH_SUGGESTION" : {
"WITH_ROUND_ATTEMPT" : {
"message" : [
"<value> cannot be represented as Decimal(<precision>, <scale>). If necessary set <config> to \"false\" to bypass this error, and return NULL instead."
"The <roundedValue> rounded half up from <originalValue> cannot be represented as Decimal(<precision>, <scale>)."
]
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -439,12 +439,11 @@ abstract class AvroLogicalTypeSuite extends QueryTest with SharedSparkSession {
assert(ex.getCondition.startsWith("FAILED_READ_FILE"))
checkError(
exception = ex.getCause.asInstanceOf[SparkArithmeticException],
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
parameters = Map(
"value" -> "0",
"precision" -> "4",
"scale" -> "2",
"config" -> "\"spark.sql.ansi.enabled\"")
"scale" -> "2")
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,12 +187,11 @@ private[sql] object DataTypeErrors extends DataTypeErrorsBase {
decimalScale: Int,
context: QueryContext): ArithmeticException = {
new SparkArithmeticException(
errorClass = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
errorClass = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
messageParameters = Map(
"value" -> value.toPlainString,
"precision" -> decimalPrecision.toString,
"scale" -> decimalScale.toString,
"config" -> toSQLConf("spark.sql.ansi.enabled")),
"scale" -> decimalScale.toString),
context = getQueryContext(context),
summary = getSummary(context))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ final class Decimal extends Ordered[Decimal] with Serializable {
this.decimalVal = decimal.setScale(scale, ROUND_HALF_UP)
if (decimalVal.precision > precision) {
throw new SparkArithmeticException(
errorClass = "NUMERIC_VALUE_OUT_OF_RANGE.WITHOUT_SUGGESTION",
errorClass = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_ROUND_ATTEMPT",
messageParameters = Map(
"roundedValue" -> decimalVal.toString,
"originalValue" -> decimal.toString,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,11 @@ private[sql] object QueryExecutionErrors extends QueryErrorsBase with ExecutionE
decimalScale: Int,
context: QueryContext = null): ArithmeticException = {
new SparkArithmeticException(
errorClass = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
errorClass = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
messageParameters = Map(
"value" -> value.toPlainString,
"precision" -> decimalPrecision.toString,
"scale" -> decimalScale.toString,
"config" -> toSQLConf(SQLConf.ANSI_ENABLED.key)),
"scale" -> decimalScale.toString),
context = getQueryContext(context),
summary = getSummary(context))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -860,12 +860,11 @@ class CastWithAnsiOnSuite extends CastSuiteBase with QueryErrorsBase {
exception = intercept[SparkArithmeticException](
cast(largeTime, DecimalType(2, 0)).eval()
),
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
parameters = Map(
"value" -> "86399.123456000",
"precision" -> "2",
"scale" -> "0",
"config" -> """"spark.sql.ansi.enabled""""
"scale" -> "0"
),
queryContext = Array(ExpectedContext(fragment = "", start = -1, stop = -1))
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,44 +66,41 @@ class DecimalSuite extends SparkFunSuite with PrivateMethodTester with SQLHelper

checkError(
exception = intercept[SparkArithmeticException](Decimal(170L, 2, 1)),
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
parameters = Map(
"value" -> "0",
"precision" -> "2",
"scale" -> "1",
"config" -> "\"spark.sql.ansi.enabled\""))
"scale" -> "1"))
checkError(
exception = intercept[SparkArithmeticException](Decimal(170L, 2, 0)),
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
parameters = Map(
"value" -> "0",
"precision" -> "2",
"scale" -> "0",
"config" -> "\"spark.sql.ansi.enabled\""))
"scale" -> "0"))
checkError(
exception = intercept[SparkArithmeticException](Decimal(BigDecimal("10.030"), 2, 1)),
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITHOUT_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_ROUND_ATTEMPT",
parameters = Map(
"roundedValue" -> "10.0",
"originalValue" -> "10.030",
"precision" -> "2",
"scale" -> "1"))
checkError(
exception = intercept[SparkArithmeticException](Decimal(BigDecimal("-9.95"), 2, 1)),
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITHOUT_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_ROUND_ATTEMPT",
parameters = Map(
"roundedValue" -> "-10.0",
"originalValue" -> "-9.95",
"precision" -> "2",
"scale" -> "1"))
checkError(
exception = intercept[SparkArithmeticException](Decimal(1e17.toLong, 17, 0)),
condition = "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
condition = "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
parameters = Map(
"value" -> "0",
"precision" -> "17",
"scale" -> "0",
"config" -> "\"spark.sql.ansi.enabled\""))
"scale" -> "0"))
checkError(
exception = intercept[AnalysisException](Decimal(BigDecimal("10"), 2, -5)),
condition = "NEGATIVE_SCALE_DISALLOWED",
Expand Down
15 changes: 5 additions & 10 deletions sql/core/src/test/resources/sql-tests/results/cast.sql.out
Original file line number Diff line number Diff line change
Expand Up @@ -1146,10 +1146,9 @@ struct<>
-- !query output
org.apache.spark.SparkArithmeticException
{
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
"sqlState" : "22003",
"messageParameters" : {
"config" : "\"spark.sql.ansi.enabled\"",
"precision" : "4",
"scale" : "2",
"value" : "123.45"
Expand Down Expand Up @@ -1611,10 +1610,9 @@ struct<>
-- !query output
org.apache.spark.SparkArithmeticException
{
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
"sqlState" : "22003",
"messageParameters" : {
"config" : "\"spark.sql.ansi.enabled\"",
"precision" : "1",
"scale" : "0",
"value" : "10.123000"
Expand Down Expand Up @@ -2299,10 +2297,9 @@ struct<>
-- !query output
org.apache.spark.SparkArithmeticException
{
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
"sqlState" : "22003",
"messageParameters" : {
"config" : "\"spark.sql.ansi.enabled\"",
"precision" : "1",
"scale" : "0",
"value" : "60.000000000"
Expand All @@ -2324,10 +2321,9 @@ struct<>
-- !query output
org.apache.spark.SparkArithmeticException
{
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
"sqlState" : "22003",
"messageParameters" : {
"config" : "\"spark.sql.ansi.enabled\"",
"precision" : "3",
"scale" : "0",
"value" : "3600.000000000"
Expand All @@ -2349,10 +2345,9 @@ struct<>
-- !query output
org.apache.spark.SparkArithmeticException
{
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.WITH_SUGGESTION",
"errorClass" : "NUMERIC_VALUE_OUT_OF_RANGE.DEFAULT",
"sqlState" : "22003",
"messageParameters" : {
"config" : "\"spark.sql.ansi.enabled\"",
"precision" : "5",
"scale" : "2",
"value" : "36000.000000000"
Expand Down
Loading