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

   ### Is your feature request related to a problem or challenge?
   
   During the fix for 
[12655](https://github.com/apache/datafusion/issues/12655), I found that the 
root cause was that we parse real number literals as `f64`. When performing 
coercion between `f32` and `f64`, it can lead to significant precision problems.
   
   As a solution, I proposed changing the default behavior to parse real number 
literals as Decimal. This not only helps avoid the precision issues between f32 
and f64, but also aligns the default behavior with `Postgres` and `DuckDB`.
   
   
   ## Postgres 
   ```
   SELECT 1.3 as real , pg_typeof(1.3) as type;  
   ```
   
   ## DuckDB
   ```
   SELECT 1.3 as real , typeof(1.3) as type;  
   ```
   
   ### DataFusion 
   ```
   SELECT 1.3 as real , arrow_typeof(1.3) as type;  
   ```
   
   Fortunately, we have excellent support for Decimal, so the only change we 
need to make is setting the default value of sql_parser.parse_float_as_decimal 
to true. However, I believe this change could be breaking, as it alters the 
current behavior.
   
   Therefore, it would be important to get broader community consensus before 
proceeding.
   
   cc @alamb @jayzhan211  @jonahgao 
   
   
   ### Describe the solution you'd like
   
   change `sql_parser.parse_float_as_decimal` to `true`
   
   ### Describe alternatives you've considered
   
   _No response_
   
   ### Additional context
   
   _No response_


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to