Skip to main content

vortex_fastlanes/delta/vtable/
validity.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::ArrayView;
5use vortex_array::VortexSessionExecute;
6use vortex_array::legacy_session;
7use vortex_array::validity::Validity;
8use vortex_array::vtable::ValidityVTable;
9use vortex_error::VortexResult;
10
11use crate::Delta;
12use crate::bit_transpose::untranspose_validity;
13use crate::delta::array::DeltaArrayExt;
14use crate::delta::array::DeltaArraySlotsExt;
15
16impl ValidityVTable<Delta> for Delta {
17    #[allow(clippy::disallowed_methods)]
18    fn validity(array: ArrayView<'_, Delta>) -> VortexResult<Validity> {
19        let start = array.offset();
20        let end = start + array.len();
21
22        let validity = untranspose_validity(
23            &array.deltas().validity()?,
24            &mut legacy_session().create_execution_ctx(),
25        )?;
26        validity.slice(start..end)
27    }
28}