File tree 1 file changed +25
-7
lines changed
datafusion/physical-plan/src/aggregates/group_values
1 file changed +25
-7
lines changed Original file line number Diff line number Diff line change @@ -680,14 +680,32 @@ impl<B: ByteViewType> ByteViewGroupValueBuilder<B> {
680
680
681
681
// Build array and return
682
682
let views = ScalarBuffer :: from ( first_n_views) ;
683
- Arc :: new ( GenericByteViewArray :: < B > :: new ( views, buffers, null_buffer) )
683
+
684
+ // Safety:
685
+ // * all views were correctly made
686
+ // * (if utf8): Input was valid Utf8 so buffer contents are
687
+ // valid utf8 as well
688
+ unsafe {
689
+ Arc :: new ( GenericByteViewArray :: < B > :: new_unchecked (
690
+ views,
691
+ buffers,
692
+ null_buffer,
693
+ ) )
694
+ }
684
695
} else {
685
696
let views = ScalarBuffer :: from ( first_n_views) ;
686
- Arc :: new ( GenericByteViewArray :: < B > :: new (
687
- views,
688
- Vec :: new ( ) ,
689
- null_buffer,
690
- ) )
697
+
698
+ // Safety:
699
+ // * all views were correctly made
700
+ // * (if utf8): Input was valid Utf8 so buffer contents are
701
+ // valid utf8 as well
702
+ unsafe {
703
+ Arc :: new ( GenericByteViewArray :: < B > :: new_unchecked (
704
+ views,
705
+ Vec :: new ( ) ,
706
+ null_buffer,
707
+ ) )
708
+ }
691
709
}
692
710
}
693
711
@@ -1090,7 +1108,7 @@ mod tests {
1090
1108
// 3. Take non-inlined + partial last buffer in `completed`
1091
1109
// 4. Take non-inlined + whole last buffer in `completed`
1092
1110
// 5. Take non-inlined + partial last `in_progress`
1093
- // 6. Take non-inlined + while last buffer in `` in_progress`
1111
+ // 6. Take non-inlined + while last buffer in `in_progress`
1094
1112
// 7. Take all views at once
1095
1113
1096
1114
let mut builder =
You can’t perform that action at this time.
0 commit comments