This is an automated email from the ASF dual-hosted git repository.

mbutrovich pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/main by this push:
     new d4537bc0d chore: remove some dead cast code (#3513)
d4537bc0d is described below

commit d4537bc0d816487168f26e6e3f64adbd79f3b780
Author: Andy Grove <[email protected]>
AuthorDate: Fri Feb 13 10:35:36 2026 -0700

    chore: remove some dead cast code (#3513)
---
 native/spark-expr/src/conversion_funcs/cast.rs | 226 -------------------------
 1 file changed, 226 deletions(-)

diff --git a/native/spark-expr/src/conversion_funcs/cast.rs 
b/native/spark-expr/src/conversion_funcs/cast.rs
index be5257477..2809104f2 100644
--- a/native/spark-expr/src/conversion_funcs/cast.rs
+++ b/native/spark-expr/src/conversion_funcs/cast.rs
@@ -163,232 +163,6 @@ impl Hash for Cast {
     }
 }
 
-/// Determine if Comet supports a cast, taking options such as EvalMode and 
Timezone into account.
-pub fn cast_supported(
-    from_type: &DataType,
-    to_type: &DataType,
-    options: &SparkCastOptions,
-) -> bool {
-    use DataType::*;
-
-    let from_type = if let Dictionary(_, dt) = from_type {
-        dt
-    } else {
-        from_type
-    };
-
-    let to_type = if let Dictionary(_, dt) = to_type {
-        dt
-    } else {
-        to_type
-    };
-
-    if from_type == to_type {
-        return true;
-    }
-
-    match (from_type, to_type) {
-        (Boolean, _) => can_cast_from_boolean(to_type, options),
-        (UInt8 | UInt16 | UInt32 | UInt64, Int8 | Int16 | Int32 | Int64)
-            if options.allow_cast_unsigned_ints =>
-        {
-            true
-        }
-        (Int8, _) => can_cast_from_byte(to_type, options),
-        (Int16, _) => can_cast_from_short(to_type, options),
-        (Int32, _) => can_cast_from_int(to_type, options),
-        (Int64, _) => can_cast_from_long(to_type, options),
-        (Float32, _) => can_cast_from_float(to_type, options),
-        (Float64, _) => can_cast_from_double(to_type, options),
-        (Decimal128(p, s), _) => can_cast_from_decimal(p, s, to_type, options),
-        (Timestamp(_, None), _) => can_cast_from_timestamp_ntz(to_type, 
options),
-        (Timestamp(_, Some(_)), _) => can_cast_from_timestamp(to_type, 
options),
-        (Utf8 | LargeUtf8, _) => can_cast_from_string(to_type, options),
-        (_, Utf8 | LargeUtf8) => can_cast_to_string(from_type, options),
-        (Struct(from_fields), Struct(to_fields)) => from_fields
-            .iter()
-            .zip(to_fields.iter())
-            .all(|(a, b)| cast_supported(a.data_type(), b.data_type(), 
options)),
-        _ => false,
-    }
-}
-
-fn can_cast_from_string(to_type: &DataType, options: &SparkCastOptions) -> 
bool {
-    use DataType::*;
-    match to_type {
-        Boolean | Int8 | Int16 | Int32 | Int64 | Binary => true,
-        Float32 | Float64 => true,
-        Decimal128(_, _) => {
-            // https://github.com/apache/datafusion-comet/issues/325
-            // Does not support fullwidth digits and null byte handling.
-            options.allow_incompat
-        }
-        Date32 | Date64 => {
-            // https://github.com/apache/datafusion-comet/issues/327
-            // Only supports years between 262143 BC and 262142 AD
-            options.allow_incompat
-        }
-        Timestamp(_, _) if options.eval_mode == EvalMode::Ansi => {
-            // ANSI mode not supported
-            false
-        }
-        Timestamp(_, Some(tz)) if tz.as_ref() != "UTC" => {
-            // Cast will use UTC instead of $timeZoneId
-            options.allow_incompat
-        }
-        Timestamp(_, _) => {
-            // https://github.com/apache/datafusion-comet/issues/328
-            // Not all valid formats are supported
-            options.allow_incompat
-        }
-        _ => false,
-    }
-}
-
-fn can_cast_to_string(from_type: &DataType, _options: &SparkCastOptions) -> 
bool {
-    use DataType::*;
-    match from_type {
-        Boolean | Int8 | Int16 | Int32 | Int64 | Date32 | Date64 | 
Timestamp(_, _) => true,
-        Float32 | Float64 => {
-            // There can be differences in precision.
-            // For example, the input \"1.4E-45\" will produce 1.0E-45 " +
-            // instead of 1.4E-45"))
-            true
-        }
-        Decimal128(_, _) => {
-            // https://github.com/apache/datafusion-comet/issues/1068
-            // There can be formatting differences in some case due to Spark 
using
-            // scientific notation where Comet does not
-            true
-        }
-        Binary => true,
-        Struct(fields) => fields
-            .iter()
-            .all(|f| can_cast_to_string(f.data_type(), _options)),
-        _ => false,
-    }
-}
-
-fn can_cast_from_timestamp_ntz(to_type: &DataType, options: &SparkCastOptions) 
-> bool {
-    use DataType::*;
-    match to_type {
-        Timestamp(_, _) | Date32 | Date64 | Utf8 => {
-            // incompatible
-            options.allow_incompat
-        }
-        _ => {
-            // unsupported
-            false
-        }
-    }
-}
-
-fn can_cast_from_timestamp(to_type: &DataType, _options: &SparkCastOptions) -> 
bool {
-    use DataType::*;
-    match to_type {
-        Boolean | Int8 | Int16 => {
-            // https://github.com/apache/datafusion-comet/issues/352
-            // this seems like an edge case that isn't important for us to 
support
-            false
-        }
-        Int64 => {
-            // https://github.com/apache/datafusion-comet/issues/352
-            true
-        }
-        Date32 | Date64 | Utf8 | Decimal128(_, _) => true,
-        _ => {
-            // unsupported
-            false
-        }
-    }
-}
-
-fn can_cast_from_boolean(to_type: &DataType, _: &SparkCastOptions) -> bool {
-    use DataType::*;
-    matches!(
-        to_type,
-        Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | Decimal128(_, _)
-    )
-}
-
-fn can_cast_from_byte(to_type: &DataType, _: &SparkCastOptions) -> bool {
-    use DataType::*;
-    matches!(
-        to_type,
-        Boolean | Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | 
Decimal128(_, _) | Binary
-    )
-}
-
-fn can_cast_from_short(to_type: &DataType, _: &SparkCastOptions) -> bool {
-    use DataType::*;
-    matches!(
-        to_type,
-        Boolean | Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | 
Decimal128(_, _) | Binary
-    )
-}
-
-fn can_cast_from_int(to_type: &DataType, options: &SparkCastOptions) -> bool {
-    use DataType::*;
-    match to_type {
-        Boolean | Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | Utf8 | 
Binary => true,
-        Decimal128(_, _) => {
-            // incompatible: no overflow check
-            options.allow_incompat
-        }
-        _ => false,
-    }
-}
-
-fn can_cast_from_long(to_type: &DataType, options: &SparkCastOptions) -> bool {
-    use DataType::*;
-    match to_type {
-        Boolean | Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | Binary => 
true,
-        Decimal128(_, _) => {
-            // incompatible: no overflow check
-            options.allow_incompat
-        }
-        _ => false,
-    }
-}
-
-fn can_cast_from_float(to_type: &DataType, _: &SparkCastOptions) -> bool {
-    use DataType::*;
-    matches!(
-        to_type,
-        Boolean | Int8 | Int16 | Int32 | Int64 | Float64 | Decimal128(_, _)
-    )
-}
-
-fn can_cast_from_double(to_type: &DataType, _: &SparkCastOptions) -> bool {
-    use DataType::*;
-    matches!(
-        to_type,
-        Boolean | Int8 | Int16 | Int32 | Int64 | Float32 | Decimal128(_, _)
-    )
-}
-
-fn can_cast_from_decimal(
-    p1: &u8,
-    _s1: &i8,
-    to_type: &DataType,
-    options: &SparkCastOptions,
-) -> bool {
-    use DataType::*;
-    match to_type {
-        Int8 | Int16 | Int32 | Int64 | Float32 | Float64 => true,
-        Decimal128(p2, _) => {
-            if p2 < p1 {
-                // https://github.com/apache/datafusion/issues/13492
-                // Incompatible(Some("Casting to smaller precision is not 
supported"))
-                options.allow_incompat
-            } else {
-                true
-            }
-        }
-        _ => false,
-    }
-}
-
 macro_rules! cast_utf8_to_int {
     ($array:expr, $array_type:ty, $parse_fn:expr) => {{
         let len = $array.len();


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

Reply via email to