@@ -30,9 +30,11 @@ use arrow::datatypes::{
3030 FieldRef ,
3131} ;
3232use datafusion_common:: cast:: { as_int64_array, as_large_list_array, as_list_array} ;
33+ use datafusion_common:: utils:: ListCoercion ;
3334use datafusion_common:: { exec_err, internal_datafusion_err, Result , ScalarValue } ;
3435use datafusion_expr:: {
35- ColumnarValue , Documentation , ScalarUDFImpl , Signature , Volatility ,
36+ ArrayFunctionArgument , ArrayFunctionSignature , ColumnarValue , Documentation ,
37+ ScalarUDFImpl , Signature , TypeSignature , Volatility ,
3638} ;
3739use datafusion_macros:: user_doc;
3840use std:: any:: Any ;
@@ -83,7 +85,26 @@ impl Default for ArrayResize {
8385impl ArrayResize {
8486 pub fn new ( ) -> Self {
8587 Self {
86- signature : Signature :: variadic_any ( Volatility :: Immutable ) ,
88+ signature : Signature :: one_of (
89+ vec ! [
90+ TypeSignature :: ArraySignature ( ArrayFunctionSignature :: Array {
91+ arguments: vec![
92+ ArrayFunctionArgument :: Array ,
93+ ArrayFunctionArgument :: Index ,
94+ ] ,
95+ array_coercion: Some ( ListCoercion :: FixedSizedListToList ) ,
96+ } ) ,
97+ TypeSignature :: ArraySignature ( ArrayFunctionSignature :: Array {
98+ arguments: vec![
99+ ArrayFunctionArgument :: Array ,
100+ ArrayFunctionArgument :: Index ,
101+ ArrayFunctionArgument :: Element ,
102+ ] ,
103+ array_coercion: Some ( ListCoercion :: FixedSizedListToList ) ,
104+ } ) ,
105+ ] ,
106+ Volatility :: Immutable ,
107+ ) ,
87108 aliases : vec ! [ "list_resize" . to_string( ) ] ,
88109 }
89110 }
0 commit comments