diff --git a/Cargo.toml b/Cargo.toml index 130043e05..6df4ab297 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -66,7 +66,7 @@ mockito = "^1" murmur3 = "0.5.2" once_cell = "1" opendal = "0.46" -ordered-float = "4.0.0" +ordered-float = { version = "4.0.0", features = ["serde"]} parquet = "51" pilota = "0.11.0" pretty_assertions = "1.4.0" diff --git a/crates/iceberg/src/spec/values.rs b/crates/iceberg/src/spec/values.rs index d214c2b8d..79695f379 100644 --- a/crates/iceberg/src/spec/values.rs +++ b/crates/iceberg/src/spec/values.rs @@ -60,16 +60,8 @@ pub enum PrimitiveLiteral { /// Stored as 8-byte little-endian Long(i64), /// Stored as 4-byte little-endian - #[serde( - serialize_with = "serialize_ordered_float", - deserialize_with = "deserialize_ordered_float" - )] Float(OrderedFloat), /// Stored as 8-byte little-endian - #[serde( - serialize_with = "serialize_ordered_double", - deserialize_with = "deserialize_ordered_double" - )] Double(OrderedFloat), /// Stores days from the 1970-01-01 in an 4-byte little-endian int Date(i32), @@ -91,46 +83,6 @@ pub enum PrimitiveLiteral { Decimal(i128), } -fn serialize_ordered_float( - float: &OrderedFloat, - serializer: S, -) -> std::result::Result -where - S: serde::Serializer, -{ - serializer.serialize_f32(float.into_inner()) -} - -fn deserialize_ordered_float<'de, D>( - deserializer: D, -) -> std::result::Result, D::Error> -where - D: serde::Deserializer<'de>, -{ - let float = f32::deserialize(deserializer)?; - Ok(OrderedFloat(float)) -} - -fn serialize_ordered_double( - float: &OrderedFloat, - serializer: S, -) -> std::result::Result -where - S: serde::Serializer, -{ - serializer.serialize_f64(float.into_inner()) -} - -fn deserialize_ordered_double<'de, D>( - deserializer: D, -) -> std::result::Result, D::Error> -where - D: serde::Deserializer<'de>, -{ - let float = f64::deserialize(deserializer)?; - Ok(OrderedFloat(float)) -} - impl PrimitiveLiteral { /// Returns true if the Literal represents a primitive type /// that can be a NaN, and that it's value is NaN