Skip to main content

vortex_array/arrow/executor/
null.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use std::sync::Arc;
5
6use arrow_array::ArrayRef as ArrowArrayRef;
7use arrow_array::NullArray as ArrowNullArray;
8use vortex_error::VortexResult;
9
10use crate::ArrayRef;
11use crate::ExecutionCtx;
12use crate::arrays::NullArray;
13
14/// Convert a canonical NullArray directly to Arrow.
15pub fn canonical_null_to_arrow(array: &NullArray) -> ArrowArrayRef {
16    Arc::new(ArrowNullArray::new(array.len()))
17}
18
19pub(super) fn to_arrow_null(
20    array: ArrayRef,
21    ctx: &mut ExecutionCtx,
22) -> VortexResult<ArrowArrayRef> {
23    let null_array = array.execute::<NullArray>(ctx)?;
24    Ok(canonical_null_to_arrow(&null_array))
25}