@@ -502,12 +502,6 @@ impl AggregateFunctionDefinition {
502502 AggregateFunctionDefinition :: Name ( func_name) => func_name. as_ref ( ) ,
503503 }
504504 }
505-
506- pub fn new_builtin (
507- fun : aggregate_function:: AggregateFunction ,
508- ) -> AggregateFunctionDefinition {
509- Self :: BuiltIn ( fun)
510- }
511505}
512506
513507/// Aggregate function
@@ -534,7 +528,7 @@ impl AggregateFunction {
534528 order_by : Option < Vec < Expr > > ,
535529 ) -> Self {
536530 Self {
537- func_def : AggregateFunctionDefinition :: new_builtin ( fun) ,
531+ func_def : AggregateFunctionDefinition :: BuiltIn ( fun) ,
538532 args,
539533 distinct,
540534 filter,
@@ -1611,7 +1605,7 @@ fn create_name(e: &Expr) -> Result<String> {
16111605 filter,
16121606 order_by,
16131607 } ) => {
1614- let mut name = match func_def {
1608+ let name = match func_def {
16151609 AggregateFunctionDefinition :: BuiltIn ( ..)
16161610 | AggregateFunctionDefinition :: Name ( ..) => {
16171611 create_function_name ( func_def. name ( ) , * distinct, args) ?
@@ -1624,13 +1618,20 @@ fn create_name(e: &Expr) -> Result<String> {
16241618 names. join ( "," )
16251619 }
16261620 } ;
1621+ let mut info = name. clone ( ) ;
16271622 if let Some ( fe) = filter {
1628- name = format ! ( "{name} FILTER (WHERE {fe})" ) ;
1623+ info += & format ! ( " FILTER (WHERE {fe})" ) ;
16291624 } ;
16301625 if let Some ( order_by) = order_by {
1631- name = format ! ( "{name} ORDER BY [{}]" , expr_vec_fmt!( order_by) ) ;
1626+ info += & format ! ( " ORDER BY [{}]" , expr_vec_fmt!( order_by) ) ;
16321627 } ;
1633- Ok ( name)
1628+ match func_def {
1629+ AggregateFunctionDefinition :: BuiltIn ( ..)
1630+ | AggregateFunctionDefinition :: Name ( ..) => Ok ( info) ,
1631+ AggregateFunctionDefinition :: UDF ( fun) => {
1632+ Ok ( format ! ( "{}({}){}" , fun. name( ) , name, info) )
1633+ }
1634+ }
16341635 }
16351636 Expr :: GroupingSet ( grouping_set) => match grouping_set {
16361637 GroupingSet :: Rollup ( exprs) => {
0 commit comments