himadripal opened a new issue, #13492:
URL: https://github.com/apache/datafusion/issues/13492

   ### Describe the bug
   
   This cast throws an error
   
   ```scala 
   select  cast(12345.6789 as decimal(6,2));
   Arrow error: Invalid argument error: 1234568 is too large to store in a 
Decimal128 of precision 6. Max is 999999
   ```
   But if we cast it to a larger decimal and then cast it down to (6,2), then 
DataFusion cast works fine and looses precision. As shown below
   
   ```scala
   > select cast( cast(12345.6789 as decimal(24,2)) as  decimal(6,2));
   +---------------------+
   | Float64(12345.6789) |
   +---------------------+
   | 1234.56             |
   +---------------------+
   1 row(s) fetched. 
   Elapsed 0.001 seconds.
   ```
   
   ### To Reproduce
   
   try the above select query in datafusion-cli
   
   ### Expected behavior
   
   It should return null or throw an error as in this example
   
   ```scala
   select  cast(12345.6789 as decimal(6,2));
   Arrow error: Invalid argument error: 1234568 is too large to store in a 
Decimal128 of precision 6. Max is 999999
   ```
   
   ### Additional context
   
   while trying to enable decimal support in comet, Spark returns null in this 
cast but DataFusion returns a lowered precision value loosing the value of the 
decimal.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to