vortex_runend/compute/
fill_null.rs

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