Function comparison_coercion

Source
pub fn comparison_coercion(
    lhs_type: &DataType,
    rhs_type: &DataType,
) -> Option<DataType>
Expand description

Coerce lhs_type and rhs_type to a common type for the purposes of a comparison operation

Example comparison operations are lhs = rhs and lhs > rhs

Binary comparison kernels require the two arguments to be the (exact) same data type. However, users can write queries where the two arguments are different data types. In such cases, the data types are automatically cast (coerced) to a single data type to pass to the kernels.

§Numeric comparisons

When comparing numeric values, the lower precision type is coerced to the higher precision type to avoid losing data. For example when comparing Int32 to Int64 the coerced type is Int64 so the Int32 argument will be cast.

§Numeric / String comparisons

When comparing numeric values and strings, both values will be coerced to strings. For example when comparing '2' > 1, the arguments will be coerced to Utf8 for comparison