vortex_array/arrays/extension/compute/
min_max.rs1use std::sync::Arc;
5
6use vortex_dtype::Nullability;
7use vortex_error::VortexResult;
8use vortex_scalar::Scalar;
9
10use crate::arrays::{ExtensionArray, ExtensionVTable};
11use crate::compute::{self, MinMaxKernel, MinMaxKernelAdapter, MinMaxResult};
12use crate::register_kernel;
13
14impl MinMaxKernel for ExtensionVTable {
15 fn min_max(&self, array: &ExtensionArray) -> VortexResult<Option<MinMaxResult>> {
16 let non_nullable_ext_dtype =
17 Arc::new(array.ext_dtype().with_nullability(Nullability::NonNullable));
18 Ok(
19 compute::min_max(array.storage())?.map(|MinMaxResult { min, max }| MinMaxResult {
20 min: Scalar::extension(non_nullable_ext_dtype.clone(), min),
21 max: Scalar::extension(non_nullable_ext_dtype, max),
22 }),
23 )
24 }
25}
26
27register_kernel!(MinMaxKernelAdapter(ExtensionVTable).lift());