Skip to content

Commit c0432e6

Browse files
committed
simplify reading metadata
1 parent 997c3f9 commit c0432e6

File tree

1 file changed

+9
-25
lines changed

1 file changed

+9
-25
lines changed

parquet/src/file/serialized_reader.rs

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use crate::bloom_filter::Sbbf;
2727
use crate::column::page::{Page, PageMetadata, PageReader};
2828
use crate::compression::{create_codec, Codec};
2929
use crate::errors::{ParquetError, Result};
30-
use crate::file::page_index::index_reader;
3130
use crate::file::page_index::offset_index::OffsetIndexMetaData;
3231
use crate::file::{
3332
metadata::*,
@@ -192,37 +191,22 @@ impl<R: 'static + ChunkReader> SerializedFileReader<R> {
192191
/// Returns error if Parquet file does not exist or is corrupt.
193192
pub fn new_with_options(chunk_reader: R, options: ReadOptions) -> Result<Self> {
194193
let mut metadata_builder = ParquetMetaDataReader::new()
194+
.with_page_indexes(options.enable_page_index)
195195
.parse_and_finish(&chunk_reader)?
196196
.into_builder();
197+
197198
let mut predicates = options.predicates;
198199

199200
// Filter row groups based on the predicates
200-
for (i, rg_meta) in metadata_builder.take_row_groups().into_iter().enumerate() {
201-
let mut keep = true;
202-
for predicate in &mut predicates {
203-
if !predicate(&rg_meta, i) {
204-
keep = false;
205-
break;
201+
if !predicates.is_empty() {
202+
for (i, rg_meta) in metadata_builder.take_row_groups().into_iter().enumerate() {
203+
if predicates
204+
.iter_mut()
205+
.all(|predicate| predicate(&rg_meta, i))
206+
{
207+
metadata_builder = metadata_builder.add_row_group(rg_meta);
206208
}
207209
}
208-
if keep {
209-
metadata_builder = metadata_builder.add_row_group(rg_meta);
210-
}
211-
}
212-
213-
if options.enable_page_index {
214-
let mut columns_indexes = vec![];
215-
let mut offset_indexes = vec![];
216-
217-
for rg in metadata_builder.row_groups().iter() {
218-
let column_index = index_reader::read_columns_indexes(&chunk_reader, rg.columns())?;
219-
let offset_index = index_reader::read_offset_indexes(&chunk_reader, rg.columns())?;
220-
columns_indexes.push(column_index);
221-
offset_indexes.push(offset_index);
222-
}
223-
metadata_builder = metadata_builder
224-
.set_column_index(Some(columns_indexes))
225-
.set_offset_index(Some(offset_indexes));
226210
}
227211

228212
Ok(Self {

0 commit comments

Comments
 (0)