Ted-Jiang commented on code in PR #2158:
URL: https://github.com/apache/arrow-rs/pull/2158#discussion_r929886358
##########
parquet/src/arrow/record_reader/mod.rs:
##########
@@ -184,11 +185,24 @@ where
/// # Returns
///
/// Number of records skipped
- pub fn skip_records(&mut self, num_records: usize) -> Result<usize> {
+ pub fn skip_records(
+ &mut self,
+ num_records: usize,
+ pages: &mut dyn PageIterator,
+ ) -> Result<usize> {
// First need to clear the buffer
let end_of_column = match self.column_reader.as_mut() {
Some(reader) => !reader.has_next()?,
- None => return Ok(0),
+ None => {
+ // If we skip records before all read operation
+ // we need set `column_reader` by `set_page_reader`
+ if let Some(page_reader) = pages.next() {
+ self.set_page_reader(page_reader?)?;
+ false
Review Comment:
@tustvold i move it out to
```
fn skip_records(&mut self, num_records: usize) -> Result<usize> {
if self.record_reader.column_reader().is_none() {
// If we skip records before all read operation
// we need set `column_reader` by `set_page_reader`
if let Some(page_reader) = self.pages.next() {
self.record_reader.set_page_reader(page_reader?)?;
} else {
return Ok(0);
}
}
self.record_reader.skip_records(num_records)
}
```
I think in this situation , only skip the first page without read any record
the `column_reader` is none. related #2171 if
we create it in colchunk, then we will remove this check.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]