@@ -19,9 +19,10 @@ use crate::error::{ConvertError, Error};
1919use crate :: value:: geo:: convert_geometry;
2020use arrow_array:: {
2121 Array as ArrowArray , BinaryArray , BooleanArray , Date32Array , Decimal128Array , Decimal256Array ,
22- Float32Array , Float64Array , Int16Array , Int32Array , Int64Array , Int8Array , LargeBinaryArray ,
23- LargeListArray , LargeStringArray , ListArray , MapArray , StringArray , StringViewArray ,
24- StructArray , TimestampMicrosecondArray , UInt16Array , UInt32Array , UInt64Array , UInt8Array ,
22+ Decimal64Array , Float32Array , Float64Array , Int16Array , Int32Array , Int64Array , Int8Array ,
23+ LargeBinaryArray , LargeListArray , LargeStringArray , ListArray , MapArray , StringArray ,
24+ StringViewArray , StructArray , TimestampMicrosecondArray , UInt16Array , UInt32Array , UInt64Array ,
25+ UInt8Array ,
2526} ;
2627use arrow_schema:: { DataType as ArrowDataType , Field as ArrowField , TimeUnit } ;
2728use databend_client:: schema:: {
@@ -291,7 +292,18 @@ impl
291292 Some ( array) => Ok ( Value :: Number ( NumberValue :: Float64 ( array. value ( seq) ) ) ) ,
292293 None => Err ( ConvertError :: new ( "float64" , format ! ( "{array:?}" ) ) . into ( ) ) ,
293294 } ,
294-
295+ ArrowDataType :: Decimal64 ( p, s) => {
296+ match array. as_any ( ) . downcast_ref :: < Decimal64Array > ( ) {
297+ Some ( array) => Ok ( Value :: Number ( NumberValue :: Decimal64 (
298+ array. value ( seq) ,
299+ DecimalSize {
300+ precision : * p,
301+ scale : * s as u8 ,
302+ } ,
303+ ) ) ) ,
304+ None => Err ( ConvertError :: new ( "Decimal64" , format ! ( "{array:?}" ) ) . into ( ) ) ,
305+ }
306+ }
295307 ArrowDataType :: Decimal128 ( p, s) => {
296308 match array. as_any ( ) . downcast_ref :: < Decimal128Array > ( ) {
297309 Some ( array) => Ok ( Value :: Number ( NumberValue :: Decimal128 (
0 commit comments