Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-parquet/src/arrow/read/deserialize/binview/optional_masked.rs
8507 views
1
use arrow::array::MutableBinaryViewArray;
2
use arrow::bitmap::Bitmap;
3
4
use crate::parquet::error::ParquetResult;
5
use crate::read::deserialize::binview::decode_plain_generic;
6
7
pub fn decode(
8
num_expected_values: usize,
9
values: &[u8],
10
target: &mut MutableBinaryViewArray<[u8]>,
11
12
page_validity: &Bitmap,
13
mask: &Bitmap,
14
15
verify_utf8: bool,
16
) -> ParquetResult<()> {
17
assert_eq!(page_validity.len(), mask.len());
18
19
if mask.unset_bits() == 0 {
20
return super::optional::decode(
21
num_expected_values,
22
values,
23
target,
24
page_validity,
25
verify_utf8,
26
);
27
}
28
if page_validity.unset_bits() == 0 {
29
return super::required_masked::decode(
30
num_expected_values,
31
values,
32
target,
33
mask,
34
verify_utf8,
35
);
36
}
37
38
let mut validity_iter = page_validity.iter();
39
let mut mask_iter = mask.iter();
40
decode_plain_generic(
41
values,
42
target,
43
mask.set_bits(),
44
|| Some((validity_iter.next()?, mask_iter.next()?)),
45
verify_utf8,
46
)
47
}
48
49