use vortex_error::VortexResult;
use crate::arrays::{ConstantArray, ConstantVTable};
use crate::compute::{CompareKernel, CompareKernelAdapter, Operator, scalar_cmp};
use crate::{Array, ArrayRef, IntoArray, register_kernel};
impl CompareKernel for ConstantVTable {
fn compare(
&self,
lhs: &ConstantArray,
rhs: &dyn Array,
operator: Operator,
) -> VortexResult<Option<ArrayRef>> {
if let Some(const_scalar) = rhs.as_constant() {
let lhs_scalar = lhs.scalar();
let scalar = scalar_cmp(lhs_scalar, &const_scalar, operator);
return Ok(Some(ConstantArray::new(scalar, lhs.len()).into_array()));
}
Ok(None)
}
}
register_kernel!(CompareKernelAdapter(ConstantVTable).lift());