xsys created SPARK-40616:
----------------------------

             Summary: Loss of precision using SparkSQL shell on high-precision 
DECIMAL types
                 Key: SPARK-40616
                 URL: https://issues.apache.org/jira/browse/SPARK-40616
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 3.2.1
            Reporter: xsys


h3. Describe the bug

We are trying to save {{DECIMAL}} values with high precision in a table using 
the SparkSQL shell.
When we {{INSERT}} decimal values with precision higher than the standard 
double precision.

This seems to be caused by type inference at shell parsing inferring that the 
value is a double type.
h3. To reproduce

On Spark 3.2.1 (commit {{{}4f25b3f712{}}}), using {{{}spark-sql{}}}:

 
{code:java}
$SPARK_HOME/bin/spark-sql{code}
 

In the shell:
{code:java}
CREATE TABLE t(c0 DECIMAL(20,10));         
INSERT INTO t VALUES (8.8888888888888888888e9);                             
SELECT * FROM t;{code}
Executing the above gives this:

 
{code:java}
spark-sql> CREATE TABLE t(c0 DECIMAL(20,10));
22/09/29 11:28:41 WARN ResolveSessionCatalog: A Hive serde table will be 
created as there is no table provider specified. You can set 
spark.sql.legacy.createHiveTableByDefault to false so that native data source 
table will be created instead.
Time taken: 0.118 seconds
spark-sql> INSERT INTO t VALUES (8.8888888888888888888e9);
Time taken: 0.392 seconds
spark-sql> SELECT * FROM t;
8888888888.8888900000
Time taken: 0.197 seconds, Fetched 1 row(s){code}
 
 
h3. Expected behavior

We expect the inserted value to retain the precision as determined by the 
parameters for the {{DECIMAL}} type. For example, we expect the example above 
to return {{{}8888888888.8888888888{}}}.

 

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to