Skip to content

Commit

Permalink
Add RowSelection::skipped_row_count (#6429)
Browse files Browse the repository at this point in the history
  • Loading branch information
progval authored Sep 20, 2024
1 parent 0a708e5 commit e8b9dad
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions parquet/src/arrow/arrow_reader/selection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,11 @@ impl RowSelection {
pub fn row_count(&self) -> usize {
self.iter().filter(|s| !s.skip).map(|s| s.row_count).sum()
}

/// Returns the number of de-selected rows
pub fn skipped_row_count(&self) -> usize {
self.iter().filter(|s| s.skip).map(|s| s.row_count).sum()
}
}

impl From<Vec<RowSelector>> for RowSelection {
Expand Down Expand Up @@ -1345,4 +1350,32 @@ mod tests {
]
);
}

#[test]
fn test_row_count() {
let selection = RowSelection::from(vec![
RowSelector::skip(34),
RowSelector::select(12),
RowSelector::skip(3),
RowSelector::select(35),
]);

assert_eq!(selection.row_count(), 12 + 35);
assert_eq!(selection.skipped_row_count(), 34 + 3);

let selection = RowSelection::from(vec![RowSelector::select(12), RowSelector::select(35)]);

assert_eq!(selection.row_count(), 12 + 35);
assert_eq!(selection.skipped_row_count(), 0);

let selection = RowSelection::from(vec![RowSelector::skip(34), RowSelector::skip(3)]);

assert_eq!(selection.row_count(), 0);
assert_eq!(selection.skipped_row_count(), 34 + 3);

let selection = RowSelection::from(vec![]);

assert_eq!(selection.row_count(), 0);
assert_eq!(selection.skipped_row_count(), 0);
}
}

0 comments on commit e8b9dad

Please sign in to comment.