Skip to content

Commit 04af0c6

Browse files
ashdnazgalamb
andauthored
perf: Implement boolean group values (#17726)
* chore: fix typos in group_values. * perf: add support for boolean columns in single and multi group by values. * remove extra finish --------- Co-authored-by: Andrew Lamb <[email protected]>
1 parent 82cd7f3 commit 04af0c6

File tree

8 files changed

+657
-14
lines changed

8 files changed

+657
-14
lines changed

datafusion/physical-plan/src/aggregates/group_values/mod.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ pub(crate) use single_group_by::primitive::HashValue;
4040

4141
use crate::aggregates::{
4242
group_values::single_group_by::{
43-
bytes::GroupValuesByes, bytes_view::GroupValuesBytesView,
44-
primitive::GroupValuesPrimitive,
43+
boolean::GroupValuesBoolean, bytes::GroupValuesBytes,
44+
bytes_view::GroupValuesBytesView, primitive::GroupValuesPrimitive,
4545
},
4646
order::GroupOrdering,
4747
};
@@ -119,7 +119,7 @@ pub trait GroupValues: Send {
119119
/// - If group by single column, and type of this column has
120120
/// the specific [`GroupValues`] implementation, such implementation
121121
/// will be chosen.
122-
///
122+
///
123123
/// - If group by multiple columns, and all column types have the specific
124124
/// `GroupColumn` implementations, `GroupValuesColumn` will be chosen.
125125
///
@@ -174,23 +174,26 @@ pub fn new_group_values(
174174
downcast_helper!(Decimal128Type, d);
175175
}
176176
DataType::Utf8 => {
177-
return Ok(Box::new(GroupValuesByes::<i32>::new(OutputType::Utf8)));
177+
return Ok(Box::new(GroupValuesBytes::<i32>::new(OutputType::Utf8)));
178178
}
179179
DataType::LargeUtf8 => {
180-
return Ok(Box::new(GroupValuesByes::<i64>::new(OutputType::Utf8)));
180+
return Ok(Box::new(GroupValuesBytes::<i64>::new(OutputType::Utf8)));
181181
}
182182
DataType::Utf8View => {
183183
return Ok(Box::new(GroupValuesBytesView::new(OutputType::Utf8View)));
184184
}
185185
DataType::Binary => {
186-
return Ok(Box::new(GroupValuesByes::<i32>::new(OutputType::Binary)));
186+
return Ok(Box::new(GroupValuesBytes::<i32>::new(OutputType::Binary)));
187187
}
188188
DataType::LargeBinary => {
189-
return Ok(Box::new(GroupValuesByes::<i64>::new(OutputType::Binary)));
189+
return Ok(Box::new(GroupValuesBytes::<i64>::new(OutputType::Binary)));
190190
}
191191
DataType::BinaryView => {
192192
return Ok(Box::new(GroupValuesBytesView::new(OutputType::BinaryView)));
193193
}
194+
DataType::Boolean => {
195+
return Ok(Box::new(GroupValuesBoolean::new()));
196+
}
194197
_ => {}
195198
}
196199
}

0 commit comments

Comments
 (0)