diff --git a/datafusion/physical-plan/src/aggregates/group_values/group_column.rs b/datafusion/physical-plan/src/aggregates/group_values/group_column.rs index ae2e509d36b5..3206af3aa230 100644 --- a/datafusion/physical-plan/src/aggregates/group_values/group_column.rs +++ b/datafusion/physical-plan/src/aggregates/group_values/group_column.rs @@ -592,11 +592,17 @@ impl ByteViewGroupValueBuilder { let views = ScalarBuffer::from(views); - Arc::new(GenericByteViewArray::::new( - views, - completed, - null_buffer, - )) + // Safety: + // * all views were correctly made + // * (if utf8): Input was valid Utf8 so buffer contents are + // valid utf8 as well + unsafe { + Arc::new(GenericByteViewArray::::new_unchecked( + views, + completed, + null_buffer, + )) + } } fn take_n_inner(&mut self, n: usize) -> ArrayRef {