vortex_array/arrays/chunked/compute/
binary_numeric.rs1use vortex_error::VortexResult;
2use vortex_scalar::BinaryNumericOperator;
3
4use crate::arrays::{ChunkedArray, ChunkedEncoding};
5use crate::compute::{BinaryNumericFn, binary_numeric, slice};
6use crate::{Array, ArrayRef};
7
8impl BinaryNumericFn<&ChunkedArray> for ChunkedEncoding {
9 fn binary_numeric(
10 &self,
11 array: &ChunkedArray,
12 rhs: &dyn Array,
13 op: BinaryNumericOperator,
14 ) -> VortexResult<Option<ArrayRef>> {
15 let mut start = 0;
16
17 let mut new_chunks = Vec::with_capacity(array.nchunks());
18 for chunk in array.non_empty_chunks() {
19 let end = start + chunk.len();
20 new_chunks.push(binary_numeric(chunk, &slice(rhs, start, end)?, op)?);
21 start = end;
22 }
23
24 ChunkedArray::try_new(new_chunks, array.dtype().clone())
25 .map(|c| c.into_array())
26 .map(Some)
27 }
28}