Skip to main content

AggregateUdfTester

Struct AggregateUdfTester 

Source
pub struct AggregateUdfTester { /* private fields */ }
Expand description

Low-level tester for aggregate functions

This struct provides a means by which to run a simple check of an aggregate implementation by approximating one method DataFusion might use to perform the aggregation. Whereas DataFusion may arrange various calls to accumulate, state, and update_batch to optimize for different cases, this tester is always created by aggregating states that were in turn created from accumulating one batch.

This is not a replacement for testing at a higher level using DataFusion’s actual aggregate implementation but provides a useful mechanism to ensure all the pieces of an accumulator are plugged in.

Implementations§

Source§

impl AggregateUdfTester

Source

pub fn new(udf: AggregateUDF, arg_types: Vec<SedonaType>) -> Self

Create a new tester

Source

pub fn return_type(&self) -> Result<SedonaType>

Compute the return type

Source

pub fn aggregate_wkt( &self, batches: Vec<Vec<Option<&str>>>, ) -> Result<ScalarValue>

Perform a simple aggregation using WKT as geometry input

Source

pub fn aggregate(&self, batches: &Vec<ArrayRef>) -> Result<ScalarValue>

Perform a simple aggregation

Each batch in batches is accumulated with its own accumulator and serialized into its own state, after which the states are accumulated in batches of one. This has the effect of testing all the pieces of an aggregator in a somewhat configurable/predictable way.

Source

pub fn aggregate_groups( &self, batches: &Vec<ArrayRef>, group_indices: Vec<usize>, opt_filter: Option<&Vec<bool>>, emit_sizes: Vec<usize>, ) -> Result<ArrayRef>

Perform a simple grouped aggregation

Each batch in batches is accumulated with its own groups accumulator and serialized into its own state, after which the state resulting from each batch is merged into the final groups accumulator. This has the effect of testing the pieces of a groups accumulator in a predictable/debug-friendly (if artificial) way.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V