Skip to content

Commit 828da4a

Browse files
committed
if
1 parent 5b16525 commit 828da4a

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

src/query/functions/src/aggregates/aggregate_combinator_if.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ use databend_common_expression::Column;
2626
use databend_common_expression::ColumnBuilder;
2727
use databend_common_expression::ProjectedBlock;
2828
use databend_common_expression::Scalar;
29+
use databend_common_expression::ScalarRef;
2930
use databend_common_expression::StateSerdeItem;
3031

3132
use super::StateAddr;
@@ -54,20 +55,18 @@ impl AggregateIfCombinator {
5455
sort_descs: Vec<AggregateFunctionSortDesc>,
5556
nested_creator: &AggregateFunctionCreator,
5657
) -> Result<AggregateFunctionRef> {
57-
let name = format!("IfCombinator({})", nested_name);
58+
let name = format!("IfCombinator({nested_name})");
5859
let argument_len = arguments.len();
5960

6061
if argument_len == 0 {
6162
return Err(ErrorCode::NumberArgumentsNotMatch(format!(
62-
"{} expect to have more than one argument",
63-
name
63+
"{name} expect to have more than one argument",
6464
)));
6565
}
6666

6767
if !matches!(&arguments[argument_len - 1], DataType::Boolean) {
6868
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 {:?}",
7170
&arguments[argument_len - 1]
7271
)));
7372
}
@@ -157,15 +156,23 @@ impl AggregateFunction for AggregateIfCombinator {
157156
}
158157

159158
fn serialize_type(&self) -> Vec<StateSerdeItem> {
160-
vec![StateSerdeItem::Binary(None)]
159+
self.nested.serialize_type()
161160
}
162161

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)
165164
}
166165

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!()
169176
}
170177

171178
fn merge_states(&self, place: AggrState, rhs: AggrState) -> Result<()> {

0 commit comments

Comments
 (0)