Skip to main content

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::ArrayView;
6use vortex_array::IntoArray;
7use vortex_array::builtins::ArrayBuiltins;
8use vortex_array::scalar::Scalar;
9use vortex_array::scalar_fn::fns::fill_null::FillNullReduce;
10use vortex_error::VortexResult;
11
12use crate::RunEnd;
13use crate::array::RunEndArrayExt;
14
15impl FillNullReduce for RunEnd {
16    fn fill_null(
17        array: ArrayView<'_, Self>,
18        fill_value: &Scalar,
19    ) -> VortexResult<Option<ArrayRef>> {
20        let new_values = array.values().fill_null(fill_value.clone())?;
21        // SAFETY: modifying values only, does not affect ends
22        Ok(Some(
23            unsafe {
24                RunEnd::new_unchecked(
25                    array.ends().clone(),
26                    new_values,
27                    array.offset(),
28                    array.len(),
29                )
30            }
31            .into_array(),
32        ))
33    }
34}