vortex_array/arrays/constant/compute/
compare.rs

1use vortex_error::VortexResult;
2
3use crate::arrays::{ConstantArray, ConstantVTable};
4use crate::compute::{CompareKernel, CompareKernelAdapter, Operator, scalar_cmp};
5use crate::{Array, ArrayRef, IntoArray, register_kernel};
6
7impl CompareKernel for ConstantVTable {
8    fn compare(
9        &self,
10        lhs: &ConstantArray,
11        rhs: &dyn Array,
12        operator: Operator,
13    ) -> VortexResult<Option<ArrayRef>> {
14        // We only support comparing a constant array to another constant array.
15        // For all other encodings, we assume the constant is on the RHS.
16        if let Some(const_scalar) = rhs.as_constant() {
17            let lhs_scalar = lhs.scalar();
18            let scalar = scalar_cmp(lhs_scalar, &const_scalar, operator);
19            return Ok(Some(ConstantArray::new(scalar, lhs.len()).into_array()));
20        }
21
22        Ok(None)
23    }
24}
25
26register_kernel!(CompareKernelAdapter(ConstantVTable).lift());