@@ -59,7 +59,8 @@ use ordered_float::OrderedFloat;
5959use pin_project_lite:: pin_project;
6060
6161use arrow:: array:: {
62- TimestampMicrosecondArray , TimestampMillisecondArray , TimestampNanosecondArray ,
62+ LargeStringArray , TimestampMicrosecondArray , TimestampMillisecondArray ,
63+ TimestampNanosecondArray ,
6364} ;
6465use async_trait:: async_trait;
6566
@@ -540,6 +541,14 @@ fn create_key_for_col(col: &ArrayRef, row: usize, vec: &mut Vec<u8>) -> Result<(
540541 // store the string value
541542 vec. extend_from_slice ( value. as_bytes ( ) ) ;
542543 }
544+ DataType :: LargeUtf8 => {
545+ let array = col. as_any ( ) . downcast_ref :: < LargeStringArray > ( ) . unwrap ( ) ;
546+ let value = array. value ( row) ;
547+ // store the size
548+ vec. extend_from_slice ( & value. len ( ) . to_le_bytes ( ) ) ;
549+ // store the string value
550+ vec. extend_from_slice ( value. as_bytes ( ) ) ;
551+ }
543552 DataType :: Date32 => {
544553 let array = col. as_any ( ) . downcast_ref :: < Date32Array > ( ) . unwrap ( ) ;
545554 vec. extend_from_slice ( & array. value ( row) . to_le_bytes ( ) ) ;
@@ -953,6 +962,9 @@ fn create_batch_from_map(
953962 GroupByScalar :: Utf8 ( str) => {
954963 Arc :: new ( StringArray :: from ( vec ! [ & * * * str ] ) )
955964 }
965+ GroupByScalar :: LargeUtf8 ( str) => {
966+ Arc :: new ( LargeStringArray :: from ( vec ! [ & * * * str ] ) )
967+ }
956968 GroupByScalar :: Boolean ( b) => Arc :: new ( BooleanArray :: from ( vec ! [ * b] ) ) ,
957969 GroupByScalar :: TimeMillisecond ( n) => {
958970 Arc :: new ( TimestampMillisecondArray :: from ( vec ! [ * n] ) )
@@ -1103,6 +1115,10 @@ fn create_group_by_value(col: &ArrayRef, row: usize) -> Result<GroupByScalar> {
11031115 let array = col. as_any ( ) . downcast_ref :: < StringArray > ( ) . unwrap ( ) ;
11041116 Ok ( GroupByScalar :: Utf8 ( Box :: new ( array. value ( row) . into ( ) ) ) )
11051117 }
1118+ DataType :: LargeUtf8 => {
1119+ let array = col. as_any ( ) . downcast_ref :: < LargeStringArray > ( ) . unwrap ( ) ;
1120+ Ok ( GroupByScalar :: Utf8 ( Box :: new ( array. value ( row) . into ( ) ) ) )
1121+ }
11061122 DataType :: Boolean => {
11071123 let array = col. as_any ( ) . downcast_ref :: < BooleanArray > ( ) . unwrap ( ) ;
11081124 Ok ( GroupByScalar :: Boolean ( array. value ( row) ) )
0 commit comments