@@ -26,6 +26,7 @@ use databend_common_expression::Column;
26
26
use databend_common_expression:: ColumnBuilder ;
27
27
use databend_common_expression:: ProjectedBlock ;
28
28
use databend_common_expression:: Scalar ;
29
+ use databend_common_expression:: ScalarRef ;
29
30
use databend_common_expression:: StateSerdeItem ;
30
31
31
32
use super :: StateAddr ;
@@ -54,20 +55,18 @@ impl AggregateIfCombinator {
54
55
sort_descs : Vec < AggregateFunctionSortDesc > ,
55
56
nested_creator : & AggregateFunctionCreator ,
56
57
) -> Result < AggregateFunctionRef > {
57
- let name = format ! ( "IfCombinator({})" , nested_name ) ;
58
+ let name = format ! ( "IfCombinator({nested_name })" ) ;
58
59
let argument_len = arguments. len ( ) ;
59
60
60
61
if argument_len == 0 {
61
62
return Err ( ErrorCode :: NumberArgumentsNotMatch ( format ! (
62
- "{} expect to have more than one argument" ,
63
- name
63
+ "{name} expect to have more than one argument" ,
64
64
) ) ) ;
65
65
}
66
66
67
67
if !matches ! ( & arguments[ argument_len - 1 ] , DataType :: Boolean ) {
68
68
return Err ( ErrorCode :: BadArguments ( format ! (
69
- "The type of the last argument for {} must be boolean type, but got {:?}" ,
70
- name,
69
+ "The type of the last argument for {name} must be boolean type, but got {:?}" ,
71
70
& arguments[ argument_len - 1 ]
72
71
) ) ) ;
73
72
}
@@ -157,15 +156,23 @@ impl AggregateFunction for AggregateIfCombinator {
157
156
}
158
157
159
158
fn serialize_type ( & self ) -> Vec < StateSerdeItem > {
160
- vec ! [ StateSerdeItem :: Binary ( None ) ]
159
+ self . nested . serialize_type ( )
161
160
}
162
161
163
- fn serialize_binary ( & self , place : AggrState , writer : & mut Vec < u8 > ) -> Result < ( ) > {
164
- self . nested . serialize_binary ( place, writer )
162
+ fn serialize ( & self , place : AggrState , builders : & mut [ ColumnBuilder ] ) -> Result < ( ) > {
163
+ self . nested . serialize ( place, builders )
165
164
}
166
165
167
- fn merge_binary ( & self , place : AggrState , reader : & mut & [ u8 ] ) -> Result < ( ) > {
168
- self . nested . merge_binary ( place, reader)
166
+ fn serialize_binary ( & self , _: AggrState , _: & mut Vec < u8 > ) -> Result < ( ) > {
167
+ unreachable ! ( )
168
+ }
169
+
170
+ fn merge ( & self , place : AggrState , data : & [ ScalarRef ] ) -> Result < ( ) > {
171
+ self . nested . merge ( place, data)
172
+ }
173
+
174
+ fn merge_binary ( & self , _: AggrState , _: & mut & [ u8 ] ) -> Result < ( ) > {
175
+ unreachable ! ( )
169
176
}
170
177
171
178
fn merge_states ( & self , place : AggrState , rhs : AggrState ) -> Result < ( ) > {
0 commit comments