use arrow::array::ArrayRef;
use datafusion_common::{Result, ScalarValue};
use datafusion_expr_common::accumulator::Accumulator;
#[derive(Debug)]
pub struct NoopAccumulator {
evaluate_value: ScalarValue,
}
impl NoopAccumulator {
pub fn new(evaluate_value: ScalarValue) -> Self {
Self { evaluate_value }
}
}
impl Default for NoopAccumulator {
fn default() -> Self {
Self {
evaluate_value: ScalarValue::Null,
}
}
}
impl Accumulator for NoopAccumulator {
fn update_batch(&mut self, _values: &[ArrayRef]) -> Result<()> {
Ok(())
}
fn evaluate(&mut self) -> Result<ScalarValue> {
Ok(self.evaluate_value.clone())
}
fn size(&self) -> usize {
size_of_val(self)
}
fn state(&mut self) -> Result<Vec<ScalarValue>> {
Ok(vec![ScalarValue::Null])
}
fn merge_batch(&mut self, _states: &[ArrayRef]) -> Result<()> {
Ok(())
}
}