diff --git a/src/common/src/array/arrow/arrow_impl.rs b/src/common/src/array/arrow/arrow_impl.rs index 10ea6b6e6ec4..50611fdd3ceb 100644 --- a/src/common/src/array/arrow/arrow_impl.rs +++ b/src/common/src/array/arrow/arrow_impl.rs @@ -519,6 +519,7 @@ pub trait FromArrow { Int16 => self.from_int16_array(array.as_any().downcast_ref().unwrap()), Int32 => self.from_int32_array(array.as_any().downcast_ref().unwrap()), Int64 => self.from_int64_array(array.as_any().downcast_ref().unwrap()), + Decimal128(_, _) => self.from_decimal128_array(array.as_any().downcast_ref().unwrap()), Decimal256(_, _) => self.from_int256_array(array.as_any().downcast_ref().unwrap()), Float32 => self.from_float32_array(array.as_any().downcast_ref().unwrap()), Float64 => self.from_float64_array(array.as_any().downcast_ref().unwrap()), @@ -596,6 +597,13 @@ pub trait FromArrow { Ok(ArrayImpl::Int256(array.into())) } + fn from_decimal128_array( + &self, + array: &arrow_array::Decimal128Array, + ) -> Result { + Ok(ArrayImpl::Decimal(array.try_into()?)) + } + fn from_float32_array( &self, array: &arrow_array::Float32Array,