vortex_array/array/bool/compute/
to_arrow.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use std::sync::Arc;

use arrow_array::{ArrayRef, BooleanArray as ArrowBoolArray};
use arrow_schema::DataType;
use vortex_error::{vortex_bail, VortexResult};

use crate::array::{BoolArray, BoolEncoding};
use crate::compute::ToArrowFn;

impl ToArrowFn<BoolArray> for BoolEncoding {
    fn to_arrow(&self, array: &BoolArray, data_type: &DataType) -> VortexResult<Option<ArrayRef>> {
        if data_type != &DataType::Boolean {
            vortex_bail!("Unsupported data type: {data_type}");
        }

        Ok(Some(Arc::new(ArrowBoolArray::new(
            array.boolean_buffer(),
            array.logical_validity()?.to_null_buffer(),
        ))))
    }
}