[
https://issues.apache.org/jira/browse/SPARK-29000?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
feiwang updated SPARK-29000:
----------------------------
Description:
When we set spark.sql.decimalOperations.allowPrecisionLoss=false.
For the sql below, the result will overflow and return null.
select case when 1=2 then 1 else 100.000000000000000000000000 end * 1
However, this sql will return correct result.
select case when 1=2 then 1 else 100.000000000000000000000000 end * 1.0
!screenshot-1.png!
The reason is that, there are some issues for the binaryOperator between
nonDecimal and decimal.
In fact, there is a nondecimalAndDecimal method in DecimalPrecision class.
I copy its implementation into the body of ImplicitTypeCasts.coerceTypes()
method.
was:
When we set spark.sql.decimalOperations.allowPrecisionLoss=false.
For the sql below, the result will overflow and return null.
select case when 1=2 then 1 else 100.000000000000000000000000 end * 1
However, this sql will return correct result.
select case when 1=2 then 1 else 100.000000000000000000000000 end * 1.0
image
The reason is that, there are some issues for the binaryOperator between
nonDecimal and decimal.
In fact, there is a nondecimalAndDecimal method in DecimalPrecision class.
I copy its implementation into the body of ImplicitTypeCasts.coerceTypes()
method.
> [SQL] Decimal precision overflow when don't allow precision loss
> ----------------------------------------------------------------
>
> Key: SPARK-29000
> URL: https://issues.apache.org/jira/browse/SPARK-29000
> Project: Spark
> Issue Type: Bug
> Components: SQL
> Affects Versions: 2.4.4
> Reporter: feiwang
> Priority: Major
> Attachments: screenshot-1.png
>
>
> When we set spark.sql.decimalOperations.allowPrecisionLoss=false.
> For the sql below, the result will overflow and return null.
> select case when 1=2 then 1 else 100.000000000000000000000000 end * 1
> However, this sql will return correct result.
> select case when 1=2 then 1 else 100.000000000000000000000000 end * 1.0
> !screenshot-1.png!
> The reason is that, there are some issues for the binaryOperator between
> nonDecimal and decimal.
> In fact, there is a nondecimalAndDecimal method in DecimalPrecision class.
> I copy its implementation into the body of ImplicitTypeCasts.coerceTypes()
> method.
--
This message was sent by Atlassian Jira
(v8.3.2#803003)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]