Skip to content

Commit 703d7bb

Browse files
authored
perf: Speed-up new streaming predicate filtering (#22179)
1 parent e6114f9 commit 703d7bb

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

crates/polars-io/src/predicates.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::fmt;
22

33
use arrow::array::Array;
4-
use arrow::bitmap::{Bitmap, MutableBitmap};
4+
use arrow::bitmap::{Bitmap, BitmapBuilder};
55
use polars_core::prelude::*;
66
#[cfg(feature = "parquet")]
77
use polars_parquet::read::expr::{ParquetColumnExpr, ParquetScalar, ParquetScalarRange};
@@ -65,7 +65,7 @@ impl ColumnPredicateExpr {
6565

6666
#[cfg(feature = "parquet")]
6767
impl ParquetColumnExpr for ColumnPredicateExpr {
68-
fn evaluate_mut(&self, values: &dyn Array, bm: &mut MutableBitmap) {
68+
fn evaluate_mut(&self, values: &dyn Array, bm: &mut BitmapBuilder) {
6969
// We should never evaluate nulls with this.
7070
assert!(values.validity().is_none_or(|v| v.set_bits() == 0));
7171

@@ -82,8 +82,8 @@ impl ParquetColumnExpr for ColumnPredicateExpr {
8282
bm.reserve(true_mask.len());
8383
for chunk in true_mask.downcast_iter() {
8484
match chunk.validity() {
85-
None => bm.extend(chunk.values()),
86-
Some(v) => bm.extend(chunk.values() & v),
85+
None => bm.extend_from_bitmap(chunk.values()),
86+
Some(v) => bm.extend_from_bitmap(&(chunk.values() & v)),
8787
}
8888
}
8989
}

crates/polars-parquet/src/arrow/read/expr.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Arc;
22

33
use arrow::array::Array;
4-
use arrow::bitmap::{Bitmap, MutableBitmap};
4+
use arrow::bitmap::{Bitmap, BitmapBuilder};
55
use arrow::types::AlignedBytes;
66

77
#[derive(Clone)]
@@ -93,11 +93,11 @@ pub enum ParquetScalarRange {
9393
pub type ParquetColumnExprRef = Arc<dyn ParquetColumnExpr>;
9494
pub trait ParquetColumnExpr: Send + Sync {
9595
fn evaluate(&self, values: &dyn Array) -> Bitmap {
96-
let mut bm = MutableBitmap::new();
96+
let mut bm = BitmapBuilder::new();
9797
self.evaluate_mut(values, &mut bm);
9898
bm.freeze()
9999
}
100-
fn evaluate_mut(&self, values: &dyn Array, bm: &mut MutableBitmap);
100+
fn evaluate_mut(&self, values: &dyn Array, bm: &mut BitmapBuilder);
101101

102102
fn evaluate_null(&self) -> bool;
103103

0 commit comments

Comments
 (0)