vortex_fastlanes/delta/vtable/
validity.rs1use 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}