This is an automated email from the ASF dual-hosted git repository.
tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push:
new e8b9dad74 Add RowSelection::skipped_row_count (#6429)
e8b9dad74 is described below
commit e8b9dad7439ac97bd08fc3bbb41f0a3e85a29703
Author: Val Lorentz <[email protected]>
AuthorDate: Fri Sep 20 23:27:11 2024 +0200
Add RowSelection::skipped_row_count (#6429)
---
parquet/src/arrow/arrow_reader/selection.rs | 33 +++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/parquet/src/arrow/arrow_reader/selection.rs
b/parquet/src/arrow/arrow_reader/selection.rs
index ce3fbbf4f..378d2253f 100644
--- a/parquet/src/arrow/arrow_reader/selection.rs
+++ b/parquet/src/arrow/arrow_reader/selection.rs
@@ -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 {
@@ -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);
+ }
}