vortex_dict/compute/
like.rs1use vortex_array::arrays::ConstantArray;
2use vortex_array::compute::{LikeFn, LikeOptions, like};
3use vortex_array::{Array, ArrayRef};
4use vortex_error::VortexResult;
5
6use crate::{DictArray, DictEncoding};
7
8impl LikeFn<&DictArray> for DictEncoding {
9 fn like(
10 &self,
11 array: &DictArray,
12 pattern: &dyn Array,
13 options: LikeOptions,
14 ) -> VortexResult<Option<ArrayRef>> {
15 if let Some(pattern) = pattern.as_constant() {
16 let pattern = ConstantArray::new(pattern, array.values().len()).into_array();
17 let values = like(array.values(), &pattern, options)?;
18 Ok(Some(
19 DictArray::try_new(array.codes().clone(), values)?.into_array(),
20 ))
21 } else {
22 Ok(None)
23 }
24 }
25}