Skip to content

Commit 5fed4eb

Browse files
committed
use let else to make the codes clearer.
1 parent 34918cb commit 5fed4eb

File tree

1 file changed

+50
-48
lines changed

1 file changed

+50
-48
lines changed

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

+50-48
Original file line numberDiff line numberDiff line change
@@ -643,42 +643,8 @@ impl<B: ByteViewType> ByteViewGroupValueBuilder<B> {
643643
.rev()
644644
.find(|view| ((**view) as u32) > 12);
645645

646-
if let Some(view) = last_non_inlined_view {
647-
let view = ByteView::from(*view);
648-
let last_remaining_buffer_index = view.buffer_index as usize;
649-
650-
// Check should we take the whole `last_remaining_buffer_index` buffer
651-
let take_whole_last_buffer = self.should_take_whole_buffer(
652-
last_remaining_buffer_index,
653-
(view.offset + view.length) as usize,
654-
);
655-
656-
// Take related buffers
657-
let buffers = if take_whole_last_buffer {
658-
self.take_buffers_with_whole_last(last_remaining_buffer_index)
659-
} else {
660-
self.take_buffers_with_partial_last(
661-
last_remaining_buffer_index,
662-
(view.offset + view.length) as usize,
663-
)
664-
};
665-
666-
// Shift `buffer index`s finally
667-
let shifts = if take_whole_last_buffer {
668-
last_remaining_buffer_index + 1
669-
} else {
670-
last_remaining_buffer_index
671-
};
672-
673-
self.views.iter_mut().for_each(|view| {
674-
if (*view as u32) > 12 {
675-
let mut byte_view = ByteView::from(*view);
676-
byte_view.buffer_index -= shifts as u32;
677-
*view = byte_view.as_u128();
678-
}
679-
});
680-
681-
// Build array and return
646+
// All taken views inlined
647+
let Some(view) = last_non_inlined_view else {
682648
let views = ScalarBuffer::from(first_n_views);
683649

684650
// Safety:
@@ -688,24 +654,60 @@ impl<B: ByteViewType> ByteViewGroupValueBuilder<B> {
688654
unsafe {
689655
Arc::new(GenericByteViewArray::<B>::new_unchecked(
690656
views,
691-
buffers,
657+
Vec::new(),
692658
null_buffer,
693659
))
694660
}
661+
};
662+
663+
// Unfortunately, some taken views non-inlined
664+
let view = ByteView::from(*view);
665+
let last_remaining_buffer_index = view.buffer_index as usize;
666+
667+
// Check should we take the whole `last_remaining_buffer_index` buffer
668+
let take_whole_last_buffer = self.should_take_whole_buffer(
669+
last_remaining_buffer_index,
670+
(view.offset + view.length) as usize,
671+
);
672+
673+
// Take related buffers
674+
let buffers = if take_whole_last_buffer {
675+
self.take_buffers_with_whole_last(last_remaining_buffer_index)
695676
} else {
696-
let views = ScalarBuffer::from(first_n_views);
677+
self.take_buffers_with_partial_last(
678+
last_remaining_buffer_index,
679+
(view.offset + view.length) as usize,
680+
)
681+
};
697682

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-
))
683+
// Shift `buffer index`s finally
684+
let shifts = if take_whole_last_buffer {
685+
last_remaining_buffer_index + 1
686+
} else {
687+
last_remaining_buffer_index
688+
};
689+
690+
self.views.iter_mut().for_each(|view| {
691+
if (*view as u32) > 12 {
692+
let mut byte_view = ByteView::from(*view);
693+
byte_view.buffer_index -= shifts as u32;
694+
*view = byte_view.as_u128();
708695
}
696+
});
697+
698+
// Build array and return
699+
let views = ScalarBuffer::from(first_n_views);
700+
701+
// Safety:
702+
// * all views were correctly made
703+
// * (if utf8): Input was valid Utf8 so buffer contents are
704+
// valid utf8 as well
705+
unsafe {
706+
Arc::new(GenericByteViewArray::<B>::new_unchecked(
707+
views,
708+
buffers,
709+
null_buffer,
710+
))
709711
}
710712
}
711713

0 commit comments

Comments
 (0)