vortex_array/arrays/chunked/vtable/
validity.rs1use vortex_mask::Mask;
5
6use crate::Array;
7use crate::arrays::{ChunkedArray, ChunkedVTable};
8use crate::vtable::ValidityVTable;
9
10impl ValidityVTable<ChunkedVTable> for ChunkedVTable {
11 fn is_valid(array: &ChunkedArray, index: usize) -> bool {
12 if !array.dtype.is_nullable() {
13 return true;
14 }
15 let (chunk, offset_in_chunk) = array.find_chunk_idx(index);
16 array.chunk(chunk).is_valid(offset_in_chunk)
17 }
18
19 fn all_valid(array: &ChunkedArray) -> bool {
20 if !array.dtype().is_nullable() {
21 return true;
22 }
23 for chunk in array.non_empty_chunks() {
24 if !chunk.all_valid() {
25 return false;
26 }
27 }
28 true
29 }
30
31 fn all_invalid(array: &ChunkedArray) -> bool {
32 if !array.dtype().is_nullable() {
33 return false;
34 }
35 for chunk in array.non_empty_chunks() {
36 if !chunk.all_invalid() {
37 return false;
38 }
39 }
40 true
41 }
42
43 fn validity_mask(array: &ChunkedArray) -> Mask {
44 array.chunks().iter().map(|a| a.validity_mask()).collect()
45 }
46}