@@ -616,7 +616,8 @@ fn min_batch(values: &ArrayRef) -> Result<ScalarValue> {
616616 min_binary_view
617617 )
618618 }
619- DataType :: Struct ( _) => min_max_batch_struct ( values, Ordering :: Greater ) ?,
619+ DataType :: Struct ( _) => min_max_batch_generic ( values, Ordering :: Greater ) ?,
620+ DataType :: List ( _) => min_max_batch_generic ( values, Ordering :: Greater ) ?,
620621 DataType :: Dictionary ( _, _) => {
621622 let values = values. as_any_dictionary ( ) . values ( ) ;
622623 min_batch ( values) ?
@@ -625,7 +626,7 @@ fn min_batch(values: &ArrayRef) -> Result<ScalarValue> {
625626 } )
626627}
627628
628- fn min_max_batch_struct ( array : & ArrayRef , ordering : Ordering ) -> Result < ScalarValue > {
629+ fn min_max_batch_generic ( array : & ArrayRef , ordering : Ordering ) -> Result < ScalarValue > {
629630 if array. len ( ) == array. null_count ( ) {
630631 return ScalarValue :: try_from ( array. data_type ( ) ) ;
631632 }
@@ -649,7 +650,7 @@ fn min_max_batch_struct(array: &ArrayRef, ordering: Ordering) -> Result<ScalarVa
649650 Ok ( extreme. force_clone ( ) )
650651}
651652
652- macro_rules! min_max_struct {
653+ macro_rules! min_max_generic {
653654 ( $VALUE: expr, $DELTA: expr, $OP: ident) => { {
654655 if $VALUE. is_null( ) {
655656 $DELTA. clone( )
@@ -703,7 +704,8 @@ pub fn max_batch(values: &ArrayRef) -> Result<ScalarValue> {
703704 max_binary
704705 )
705706 }
706- DataType :: Struct ( _) => min_max_batch_struct ( values, Ordering :: Less ) ?,
707+ DataType :: Struct ( _) => min_max_batch_generic ( values, Ordering :: Less ) ?,
708+ DataType :: List ( _) => min_max_batch_generic ( values, Ordering :: Less ) ?,
707709 DataType :: Dictionary ( _, _) => {
708710 let values = values. as_any_dictionary ( ) . values ( ) ;
709711 max_batch ( values) ?
@@ -983,7 +985,14 @@ macro_rules! min_max {
983985 lhs @ ScalarValue :: Struct ( _) ,
984986 rhs @ ScalarValue :: Struct ( _) ,
985987 ) => {
986- min_max_struct!( lhs, rhs, $OP)
988+ min_max_generic!( lhs, rhs, $OP)
989+ }
990+
991+ (
992+ lhs @ ScalarValue :: List ( _) ,
993+ rhs @ ScalarValue :: List ( _) ,
994+ ) => {
995+ min_max_generic!( lhs, rhs, $OP)
987996 }
988997 e => {
989998 return internal_err!(
0 commit comments