@@ -117,6 +117,8 @@ pub enum BuiltinScalarFunction {
117117 Cot ,
118118
119119 // array functions
120+ /// array_aggregate
121+ ArrayAggregate ,
120122 /// array_append
121123 ArrayAppend ,
122124 /// array_concat
@@ -350,6 +352,7 @@ impl BuiltinScalarFunction {
350352 BuiltinScalarFunction :: Tanh => Volatility :: Immutable ,
351353 BuiltinScalarFunction :: Trunc => Volatility :: Immutable ,
352354 BuiltinScalarFunction :: ArrayAppend => Volatility :: Immutable ,
355+ BuiltinScalarFunction :: ArrayAggregate => Volatility :: Immutable ,
353356 BuiltinScalarFunction :: ArrayConcat => Volatility :: Immutable ,
354357 BuiltinScalarFunction :: ArrayHasAll => Volatility :: Immutable ,
355358 BuiltinScalarFunction :: ArrayHasAny => Volatility :: Immutable ,
@@ -503,6 +506,10 @@ impl BuiltinScalarFunction {
503506 // Some built-in functions' return type depends on the incoming type.
504507 match self {
505508 BuiltinScalarFunction :: ArrayAppend => Ok ( input_expr_types[ 0 ] . clone ( ) ) ,
509+ BuiltinScalarFunction :: ArrayAggregate => {
510+ // TODO: Fix this
511+ Ok ( Int64 )
512+ }
506513 BuiltinScalarFunction :: ArrayConcat => {
507514 let mut expr_type = Null ;
508515 let mut max_dims = 0 ;
@@ -839,15 +846,16 @@ impl BuiltinScalarFunction {
839846
840847 // for now, the list is small, as we do not have many built-in functions.
841848 match self {
842- BuiltinScalarFunction :: ArrayAppend => Signature :: any ( 2 , self . volatility ( ) ) ,
843849 BuiltinScalarFunction :: ArrayConcat => {
844850 Signature :: variadic_any ( self . volatility ( ) )
845851 }
846- BuiltinScalarFunction :: ArrayHasAll
852+ BuiltinScalarFunction :: ArrayAggregate
853+ | BuiltinScalarFunction :: ArrayAppend
854+ | BuiltinScalarFunction :: ArrayElement
855+ | BuiltinScalarFunction :: ArrayHasAll
847856 | BuiltinScalarFunction :: ArrayHasAny
848857 | BuiltinScalarFunction :: ArrayHas => Signature :: any ( 2 , self . volatility ( ) ) ,
849858 BuiltinScalarFunction :: ArrayDims => Signature :: any ( 1 , self . volatility ( ) ) ,
850- BuiltinScalarFunction :: ArrayElement => Signature :: any ( 2 , self . volatility ( ) ) ,
851859 BuiltinScalarFunction :: ArrayLength => {
852860 Signature :: variadic_any ( self . volatility ( ) )
853861 }
@@ -1316,6 +1324,12 @@ fn aliases(func: &BuiltinScalarFunction) -> &'static [&'static str] {
13161324 BuiltinScalarFunction :: ArrowTypeof => & [ "arrow_typeof" ] ,
13171325
13181326 // array functions
1327+ BuiltinScalarFunction :: ArrayAggregate => & [
1328+ "array_aggregate" ,
1329+ "list_aggregate" ,
1330+ "array_aggr" ,
1331+ "list_aggr" ,
1332+ ] ,
13191333 BuiltinScalarFunction :: ArrayAppend => & [
13201334 "array_append" ,
13211335 "list_append" ,
0 commit comments