This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/main by this push:
new fa6d5e171b avoid redundant parsing of repeated value in RleDecoder
(#6834)
fa6d5e171b is described below
commit fa6d5e171b12cf7cc20fe64744afcc5e7f28b82e
Author: Jinpeng <[email protected]>
AuthorDate: Thu Dec 5 05:41:54 2024 -0500
avoid redundant parsing of repeated value in RleDecoder (#6834)
Co-authored-by: jp0317 <[email protected]>
---
parquet/src/encodings/rle.rs | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/parquet/src/encodings/rle.rs b/parquet/src/encodings/rle.rs
index 0c708c1265..d089ba7836 100644
--- a/parquet/src/encodings/rle.rs
+++ b/parquet/src/encodings/rle.rs
@@ -369,17 +369,17 @@ impl RleDecoder {
}
#[inline(never)]
- pub fn get_batch<T: FromBytes>(&mut self, buffer: &mut [T]) ->
Result<usize> {
+ pub fn get_batch<T: FromBytes + Clone>(&mut self, buffer: &mut [T]) ->
Result<usize> {
assert!(size_of::<T>() <= 8);
let mut values_read = 0;
while values_read < buffer.len() {
if self.rle_left > 0 {
let num_values = cmp::min(buffer.len() - values_read,
self.rle_left as usize);
+ let repeated_value =
+
T::try_from_le_slice(&self.current_value.as_mut().unwrap().to_ne_bytes())?;
for i in 0..num_values {
- let repeated_value =
-
T::try_from_le_slice(&self.current_value.as_mut().unwrap().to_ne_bytes())?;
- buffer[values_read + i] = repeated_value;
+ buffer[values_read + i] = repeated_value.clone();
}
self.rle_left -= num_values as u32;
values_read += num_values;