Skip to content

Commit 3cc048e

Browse files
committed
fix[fuzz]: apply mask to validity in baseline
Signed-off-by: Joe Isaacs <[email protected]>
1 parent 4796478 commit 3cc048e

File tree

1 file changed

+7
-25
lines changed

1 file changed

+7
-25
lines changed

fuzz/src/array/mask.rs

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult<A
2525
array.into_array()
2626
}
2727
Canonical::Bool(array) => {
28-
let new_validity = apply_mask_to_validity(array.validity(), mask);
28+
let new_validity = array.validity().mask(mask);
2929
BoolArray::from_bit_buffer(array.bit_buffer().clone(), new_validity).into_array()
3030
}
3131
Canonical::Primitive(array) => {
32-
let new_validity = apply_mask_to_validity(array.validity(), mask);
32+
let new_validity = array.validity().mask(mask);
3333
PrimitiveArray::from_byte_buffer(
3434
array.byte_buffer().clone(),
3535
array.ptype(),
@@ -38,14 +38,14 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult<A
3838
.into_array()
3939
}
4040
Canonical::Decimal(array) => {
41-
let new_validity = apply_mask_to_validity(array.validity(), mask);
41+
let new_validity = array.validity().mask(mask);
4242
match_each_decimal_value_type!(array.values_type(), |D| {
4343
DecimalArray::new(array.buffer::<D>(), array.decimal_dtype(), new_validity)
4444
.into_array()
4545
})
4646
}
4747
Canonical::VarBinView(array) => {
48-
let new_validity = apply_mask_to_validity(array.validity(), mask);
48+
let new_validity = array.validity().mask(mask);
4949
VarBinViewArray::new(
5050
array.views().clone(),
5151
array.buffers().clone(),
@@ -55,7 +55,7 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult<A
5555
.into_array()
5656
}
5757
Canonical::List(array) => {
58-
let new_validity = apply_mask_to_validity(array.validity(), mask);
58+
let new_validity = array.validity().mask(mask);
5959

6060
// SAFETY: Since we are only masking the validity and everything else comes from an
6161
// already valid `ListViewArray`, all of the invariants are still upheld.
@@ -71,7 +71,7 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult<A
7171
.into_array()
7272
}
7373
Canonical::FixedSizeList(array) => {
74-
let new_validity = apply_mask_to_validity(array.validity(), mask);
74+
let new_validity = array.validity().mask(mask);
7575
FixedSizeListArray::new(
7676
array.elements().clone(),
7777
array.list_size(),
@@ -81,7 +81,7 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult<A
8181
.into_array()
8282
}
8383
Canonical::Struct(array) => {
84-
let new_validity = apply_mask_to_validity(array.validity(), mask);
84+
let new_validity = array.validity().mask(mask);
8585
StructArray::try_new_with_dtype(
8686
array.fields().clone(),
8787
array.struct_fields().clone(),
@@ -113,24 +113,6 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult<A
113113
})
114114
}
115115

116-
fn apply_mask_to_validity(validity: &Validity, mask: &Mask) -> Validity {
117-
match mask.bit_buffer() {
118-
AllOr::All => Validity::AllInvalid,
119-
AllOr::None => validity.clone(),
120-
AllOr::Some(make_invalid) => match validity {
121-
Validity::NonNullable | Validity::AllValid => {
122-
Validity::Array(BoolArray::from(make_invalid.not()).into_array())
123-
}
124-
Validity::AllInvalid => Validity::AllInvalid,
125-
Validity::Array(is_valid) => {
126-
let is_valid = is_valid.to_bool();
127-
let keep_valid = make_invalid.not();
128-
Validity::from(is_valid.bit_buffer() & &keep_valid)
129-
}
130-
},
131-
}
132-
}
133-
134116
#[cfg(test)]
135117
mod tests {
136118
use vortex_array::arrays::{

0 commit comments

Comments
 (0)