vortex-array 0.54.0

Vortex in memory columnar data format
Documentation
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright the Vortex contributors

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>> {
        // We only support comparing a constant array to another constant array.
        // For all other encodings, we assume the constant is on the RHS.
        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());