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