From eca2a07de47358949cfb39abc80228691e176262 Mon Sep 17 00:00:00 2001 From: liurenjie1024 Date: Tue, 13 Aug 2024 22:20:17 +0800 Subject: [PATCH] Fix main branch building break --- crates/iceberg/src/arrow/schema.rs | 34 ++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/crates/iceberg/src/arrow/schema.rs b/crates/iceberg/src/arrow/schema.rs index 6215982d42..43875bf672 100644 --- a/crates/iceberg/src/arrow/schema.rs +++ b/crates/iceberg/src/arrow/schema.rs @@ -608,26 +608,38 @@ pub fn schema_to_arrow_schema(schema: &crate::spec::Schema) -> crate::Result Result> { - match datum.literal() { - PrimitiveLiteral::Boolean(value) => Ok(Box::new(BooleanArray::new_scalar(*value))), - PrimitiveLiteral::Int(value) => Ok(Box::new(Int32Array::new_scalar(*value))), - PrimitiveLiteral::Long(value) => Ok(Box::new(Int64Array::new_scalar(*value))), - PrimitiveLiteral::Float(value) => Ok(Box::new(Float32Array::new_scalar(value.as_f32()))), - PrimitiveLiteral::Double(value) => Ok(Box::new(Float64Array::new_scalar(value.as_f64()))), - PrimitiveLiteral::String(value) => Ok(Box::new(StringArray::new_scalar(value.as_str()))), - PrimitiveLiteral::Timestamp(value) => { + match (datum.data_type(), datum.literal()) { + (PrimitiveType::Boolean, PrimitiveLiteral::Boolean(value)) => { + Ok(Box::new(BooleanArray::new_scalar(*value))) + } + (PrimitiveType::Int, PrimitiveLiteral::Int(value)) => { + Ok(Box::new(Int32Array::new_scalar(*value))) + } + (PrimitiveType::Long, PrimitiveLiteral::Long(value)) => { + Ok(Box::new(Int64Array::new_scalar(*value))) + } + (PrimitiveType::Float, PrimitiveLiteral::Float(value)) => { + Ok(Box::new(Float32Array::new_scalar(value.as_f32()))) + } + (PrimitiveType::Double, PrimitiveLiteral::Double(value)) => { + Ok(Box::new(Float64Array::new_scalar(value.as_f64()))) + } + (PrimitiveType::String, PrimitiveLiteral::String(value)) => { + Ok(Box::new(StringArray::new_scalar(value.as_str()))) + } + (PrimitiveType::Timestamp, PrimitiveLiteral::Long(value)) => { Ok(Box::new(TimestampMicrosecondArray::new_scalar(*value))) } - PrimitiveLiteral::Timestamptz(value) => Ok(Box::new(Scalar::new( + (PrimitiveType::Timestamptz, PrimitiveLiteral::Long(value)) => Ok(Box::new(Scalar::new( PrimitiveArray::::new(vec![*value; 1].into(), None) .with_timezone("UTC"), ))), - l => Err(Error::new( + (typ, _) => Err(Error::new( ErrorKind::FeatureUnsupported, format!( "Converting datum from type {:?} to arrow not supported yet.", - l + typ ), )), }