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