vortex_array/arrays/extension/compute/
compare.rs1use vortex_error::VortexResult;
2
3use crate::arrays::{ConstantArray, ExtensionArray, ExtensionVTable};
4use crate::compute::{CompareKernel, CompareKernelAdapter, Operator, compare};
5use crate::{Array, ArrayRef, register_kernel};
6
7impl CompareKernel for ExtensionVTable {
8 fn compare(
9 &self,
10 lhs: &ExtensionArray,
11 rhs: &dyn Array,
12 operator: Operator,
13 ) -> VortexResult<Option<ArrayRef>> {
14 if let Some(const_ext) = rhs.as_constant() {
16 let storage_scalar = const_ext.as_extension().storage();
17 return compare(
18 lhs.storage(),
19 ConstantArray::new(storage_scalar, lhs.len()).as_ref(),
20 operator,
21 )
22 .map(Some);
23 }
24
25 if let Some(rhs_ext) = rhs.as_opt::<ExtensionVTable>() {
27 return compare(lhs.storage(), rhs_ext.storage(), operator).map(Some);
28 }
29
30 Ok(None)
32 }
33}
34
35register_kernel!(CompareKernelAdapter(ExtensionVTable).lift());