vortex_array/arrays/constant/vtable/
validity.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_error::VortexResult;
5use vortex_mask::Mask;
6
7use crate::arrays::ConstantArray;
8use crate::arrays::ConstantVTable;
9use crate::validity::Validity;
10use crate::vtable::ValidityVTable;
11
12impl ValidityVTable<ConstantVTable> for ConstantVTable {
13    fn is_valid(array: &ConstantArray, _index: usize) -> bool {
14        !array.scalar().is_null()
15    }
16
17    fn all_valid(array: &ConstantArray) -> bool {
18        !array.scalar().is_null()
19    }
20
21    fn all_invalid(array: &ConstantArray) -> bool {
22        array.scalar().is_null()
23    }
24
25    fn validity(array: &ConstantArray) -> VortexResult<Validity> {
26        Ok(if array.scalar().is_null() {
27            Validity::AllInvalid
28        } else {
29            Validity::AllValid
30        })
31    }
32
33    fn validity_mask(array: &ConstantArray) -> Mask {
34        match array.scalar().is_null() {
35            true => Mask::AllFalse(array.len),
36            false => Mask::AllTrue(array.len),
37        }
38    }
39}