Skip to content

Commit 1851358

Browse files
committed
more correct root-level null checking
1 parent 13ca5c2 commit 1851358

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

vortex-tui/src/convert.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use arrow_array::StructArray as ArrowStructArray;
99
use futures_util::Stream;
1010
use indicatif::ProgressBar;
1111
use parquet::arrow::ParquetRecordBatchStreamBuilder;
12+
use parquet::arrow::arrow_reader::{ArrowReaderMetadata, ArrowReaderOptions};
1213
use pin_project::pin_project;
1314
use tokio::fs::File;
1415
use vortex::arrays::ChunkedArray;
@@ -36,14 +37,19 @@ pub async fn exec_convert(input_path: impl AsRef<Path>, flags: Flags) -> VortexR
3637
let wall_start = Instant::now();
3738

3839
let output_path = input_path.as_ref().with_extension("vortex");
39-
let file = File::open(input_path).await?;
40+
let mut file = File::open(input_path).await?;
41+
42+
let metadata =
43+
ArrowReaderMetadata::load_async(&mut file, ArrowReaderOptions::default()).await?;
44+
let has_root_level_nulls = metadata.parquet_schema().root_schema().is_optional();
45+
4046
let mut reader = ParquetRecordBatchStreamBuilder::new(file).await?.build()?;
4147
let mut chunks = Vec::new();
4248

4349
while let Some(mut reader) = reader.next_row_group().await? {
4450
for batch in reader.by_ref() {
4551
let batch = ArrowStructArray::from(batch?);
46-
let next_chunk = ArrayRef::from_arrow(&batch, true);
52+
let next_chunk = ArrayRef::from_arrow(&batch, has_root_level_nulls);
4753
chunks.push(next_chunk);
4854
}
4955
}

0 commit comments

Comments
 (0)