vortex_runend/compute/
fill_null.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::ArrayRef;
5use vortex_array::IntoArray;
6use vortex_array::compute::FillNullKernel;
7use vortex_array::compute::FillNullKernelAdapter;
8use vortex_array::compute::fill_null;
9use vortex_array::register_kernel;
10use vortex_error::VortexResult;
11use vortex_scalar::Scalar;
12
13use crate::RunEndArray;
14use crate::RunEndVTable;
15
16impl FillNullKernel for RunEndVTable {
17    fn fill_null(&self, array: &RunEndArray, fill_value: &Scalar) -> VortexResult<ArrayRef> {
18        // SAFETY: modifying values only, does not affect ends
19        unsafe {
20            Ok(RunEndArray::new_unchecked(
21                array.ends().clone(),
22                fill_null(array.values(), fill_value)?,
23                array.offset(),
24                array.len(),
25            )
26            .into_array())
27        }
28    }
29}
30
31register_kernel!(FillNullKernelAdapter(RunEndVTable).lift());