Path: blob/main/crates/polars-parquet/src/arrow/read/deserialize/binview/optional_masked.rs
8507 views
use arrow::array::MutableBinaryViewArray;1use arrow::bitmap::Bitmap;23use crate::parquet::error::ParquetResult;4use crate::read::deserialize::binview::decode_plain_generic;56pub fn decode(7num_expected_values: usize,8values: &[u8],9target: &mut MutableBinaryViewArray<[u8]>,1011page_validity: &Bitmap,12mask: &Bitmap,1314verify_utf8: bool,15) -> ParquetResult<()> {16assert_eq!(page_validity.len(), mask.len());1718if mask.unset_bits() == 0 {19return super::optional::decode(20num_expected_values,21values,22target,23page_validity,24verify_utf8,25);26}27if page_validity.unset_bits() == 0 {28return super::required_masked::decode(29num_expected_values,30values,31target,32mask,33verify_utf8,34);35}3637let mut validity_iter = page_validity.iter();38let mut mask_iter = mask.iter();39decode_plain_generic(40values,41target,42mask.set_bits(),43|| Some((validity_iter.next()?, mask_iter.next()?)),44verify_utf8,45)46}474849