jonahgao commented on code in PR #14223:
URL: https://github.com/apache/datafusion/pull/14223#discussion_r1923866675


##########
datafusion/expr-common/src/type_coercion/binary.rs:
##########
@@ -777,29 +777,20 @@ pub fn binary_numeric_coercion(
         (_, Float32) | (Float32, _) => Some(Float32),
         // The following match arms encode the following logic: Given the two
         // integral types, we choose the narrowest possible integral type that
-        // accommodates all values of both types. Note that some information
-        // loss is inevitable when we have a signed type and a `UInt64`, in
-        // which case we use `Int64`;i.e. the widest signed integral type.
-
-        // TODO: For i64 and u64, we can use decimal or float64
-        // Postgres has no unsigned type :(
-        // DuckDB v.0.10.0 has double (double precision floating-point number 
(8 bytes))
-        // for largest signed (signed sixteen-byte integer) and unsigned 
integer (unsigned sixteen-byte integer)
+        // accommodates all values of both types. Note that to avoid 
information
+        // loss when combining UInt64 with signed integers we use 
Decimal128(20, 0).
+        (Decimal128(20, 0), _)
+        | (_, Decimal128(20, 0))

Review Comment:
   This looks not correct. For example, combining `Decimal128(20, 0)` with 
`Decimal128(30, 0)`  should not result in `Decimal128(20, 0)`



-- 
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

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