use std::any::Any;
use vortex_error::VortexResult;
use crate::ArrayRef;
use crate::LEGACY_SESSION;
use crate::VortexSessionExecute;
use crate::compute::Options;
#[deprecated(note = "Use crate::aggregate_fn::fns::is_constant::is_constant instead")]
pub fn is_constant(array: &ArrayRef) -> VortexResult<Option<bool>> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
Ok(Some(crate::aggregate_fn::fns::is_constant::is_constant(
array, &mut ctx,
)?))
}
#[deprecated(note = "Use crate::aggregate_fn::fns::is_constant::is_constant instead")]
pub fn is_constant_opts(array: &ArrayRef, _opts: &IsConstantOpts) -> VortexResult<Option<bool>> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
Ok(Some(crate::aggregate_fn::fns::is_constant::is_constant(
array, &mut ctx,
)?))
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Cost {
Negligible,
Specialized,
Canonicalize,
}
#[derive(Clone, Debug)]
pub struct IsConstantOpts {
pub cost: Cost,
}
impl Default for IsConstantOpts {
fn default() -> Self {
Self {
cost: Cost::Canonicalize,
}
}
}
impl Options for IsConstantOpts {
fn as_any(&self) -> &dyn Any {
self
}
}
impl IsConstantOpts {
pub fn is_negligible_cost(&self) -> bool {
self.cost == Cost::Negligible
}
}