Skip to content

Commit 5a3368c

Browse files
committed
Remove unnecessary slice, fix null handling
1 parent 306d07a commit 5a3368c

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

rust/datafusion/src/datasource/parquet.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,8 @@ pub struct ParquetFile {
8383

8484
fn create_binary_array(b: &Vec<ByteArray>, row_count: usize) -> Result<Arc<BinaryArray>> {
8585
let mut builder = BinaryBuilder::new(b.len());
86-
for j in 0..row_count {
87-
let slice = b[j].slice(0, b[j].len());
88-
builder.append_string(&String::from_utf8(slice.data().to_vec()).unwrap())?;
86+
for i in 0..row_count {
87+
builder.append_string(&String::from_utf8(b[i].data().to_vec()).unwrap())?;
8988
}
9089
Ok(Arc::new(builder.finish()))
9190
}
@@ -167,14 +166,16 @@ where
167166
&mut read_buffer,
168167
)?;
169168
let mut builder = PrimitiveBuilder::<A>::new(levels_read);
169+
let converted_buffer: Vec<A::Native> =
170+
read_buffer.into_iter().map(|v| v.into()).collect();
170171
if values_read == levels_read {
171-
let converted_buffer: Vec<A::Native> =
172-
read_buffer.into_iter().map(|v| v.into()).collect();
173172
builder.append_slice(&converted_buffer[0..values_read])?;
174173
} else {
175-
for (v, l) in read_buffer.into_iter().zip(def_levels) {
176-
if l == 0 {
177-
builder.append_value(v.into())?;
174+
let mut vi = 0;
175+
for i in 0..def_levels.len() {
176+
if def_levels[i] != 0 {
177+
builder.append_value(converted_buffer[vi].into())?;
178+
vi += 1;
178179
} else {
179180
builder.append_null()?;
180181
}

0 commit comments

Comments
 (0)