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::IntoArray;
6use vortex_array::builtins::ArrayBuiltins;
7use vortex_array::expr::FillNullReduce;
8use vortex_array::scalar::Scalar;
9use vortex_error::VortexResult;
10
11use crate::RunEndArray;
12use crate::RunEndArrayParts;
13use crate::RunEndVTable;
14
15impl FillNullReduce for RunEndVTable {
16    fn fill_null(array: &RunEndArray, fill_value: &Scalar) -> VortexResult<Option<ArrayRef>> {
17        let RunEndArrayParts { values, ends } = array.clone().into_parts();
18        let new_values = values.fill_null(fill_value.clone())?;
19        // SAFETY: modifying values only, does not affect ends
20        Ok(Some(
21            unsafe { RunEndArray::new_unchecked(ends, new_values, array.offset(), array.len()) }
22                .into_array(),
23        ))
24    }
25}