diff --git a/src/io/parquet/read/file.rs b/src/io/parquet/read/file.rs index effb5c1c948..2bcf7b3e9ed 100644 --- a/src/io/parquet/read/file.rs +++ b/src/io/parquet/read/file.rs @@ -80,7 +80,7 @@ impl FileReader { metadata: schema_metadata, }; - let row_groups = RowGroupReader::new( + let mut row_groups = RowGroupReader::new( reader, schema, groups_filter, @@ -88,12 +88,13 @@ impl FileReader { chunk_size, limit, ); + let current_row_group = row_groups.next().transpose()?; Ok(Self { row_groups, metadata, remaining_rows: limit.unwrap_or(usize::MAX), - current_row_group: None, + current_row_group, }) } diff --git a/src/io/parquet/read/row_group.rs b/src/io/parquet/read/row_group.rs index b53e60f271f..754b3528bb0 100644 --- a/src/io/parquet/read/row_group.rs +++ b/src/io/parquet/read/row_group.rs @@ -78,10 +78,11 @@ impl Iterator for RowGroupDeserializer { }) .collect::>>() .map(Chunk::new); - self.remaining_rows -= chunk + self.remaining_rows = self.remaining_rows.saturating_sub(chunk .as_ref() .map(|x| x.len()) - .unwrap_or(self.remaining_rows); + .unwrap_or(self.remaining_rows) + ); Some(chunk) }