Skip to content

Commit 532cc28

Browse files
committed
Improve documentation for AggregateUdfImpl::simplify
1 parent d412ba5 commit 532cc28

2 files changed

Lines changed: 22 additions & 25 deletions

File tree

datafusion/expr/src/function.rs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ pub use datafusion_functions_aggregate_common::accumulator::{
2727
AccumulatorArgs, AccumulatorFactoryFunction, StateFieldsArgs,
2828
};
2929

30+
use crate::expr::{AggregateFunction, WindowFunction};
31+
use crate::simplify::SimplifyContext;
3032
pub use datafusion_functions_window_common::expr::ExpressionArgs;
3133
pub use datafusion_functions_window_common::field::WindowUDFFieldArgs;
3234
pub use datafusion_functions_window_common::partition::PartitionEvaluatorArgs;
@@ -64,28 +66,22 @@ pub type PartitionEvaluatorFactory =
6466
pub type StateTypeFunction =
6567
Arc<dyn Fn(&DataType) -> Result<Arc<Vec<DataType>>> + Send + Sync>;
6668

67-
/// [crate::udaf::AggregateUDFImpl::simplify] simplifier closure
68-
/// A closure with two arguments:
69-
/// * 'aggregate_function': [crate::expr::AggregateFunction] for which simplified has been invoked
70-
/// * 'info': [crate::simplify::SimplifyContext]
69+
/// Return type for [crate::udaf::AggregateUDFImpl::simplify]
70+
///
71+
/// This closure is invoked with two arguments:
72+
/// * 'aggregate_function': [AggregateFunction] with already simplified arguments
73+
/// * 'info': [SimplifyContext]
7174
///
7275
/// Closure returns simplified [Expr] or an error.
73-
pub type AggregateFunctionSimplification = Box<
74-
dyn Fn(
75-
crate::expr::AggregateFunction,
76-
&crate::simplify::SimplifyContext,
77-
) -> Result<Expr>,
78-
>;
76+
pub type AggregateFunctionSimplification =
77+
Box<dyn Fn(AggregateFunction, &SimplifyContext) -> Result<Expr>>;
7978

80-
/// [crate::udwf::WindowUDFImpl::simplify] simplifier closure
81-
/// A closure with two arguments:
82-
/// * 'window_function': [crate::expr::WindowFunction] for which simplified has been invoked
83-
/// * 'info': [crate::simplify::SimplifyContext]
79+
/// Return type for [crate::udwf::WindowUDFImpl::simplify]
80+
///
81+
/// This closure is invoked with two arguments:
82+
/// * 'window_function': [WindowFunction] for which simplified has been invoked
83+
/// * 'info': [SimplifyContext]
8484
///
8585
/// Closure returns simplified [Expr] or an error.
86-
pub type WindowFunctionSimplification = Box<
87-
dyn Fn(
88-
crate::expr::WindowFunction,
89-
&crate::simplify::SimplifyContext,
90-
) -> Result<Expr>,
91-
>;
86+
pub type WindowFunctionSimplification =
87+
Box<dyn Fn(WindowFunction, &SimplifyContext) -> Result<Expr>>;

datafusion/expr/src/udaf.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -651,10 +651,10 @@ pub trait AggregateUDFImpl: Debug + DynEq + DynHash + Send + Sync {
651651
AggregateOrderSensitivity::HardRequirement
652652
}
653653

654-
/// Optionally apply per-UDaF simplification / rewrite rules.
654+
/// Return a closure for simplifying a user defined aggregate.
655655
///
656-
/// This can be used to apply function specific simplification rules during
657-
/// optimization (e.g. `arrow_cast` --> `Expr::Cast`). The default
656+
/// Use this to apply function specific simplification rules during
657+
/// optimization (e.g. `percentile_cont()` --> `Min`). The default
658658
/// implementation does nothing.
659659
///
660660
/// Note that DataFusion handles simplifying arguments and "constant
@@ -664,10 +664,11 @@ pub trait AggregateUDFImpl: Debug + DynEq + DynHash + Send + Sync {
664664
///
665665
/// # Returns
666666
///
667-
/// [None] if simplify is not defined or,
667+
/// [None] if simplify is not defined
668668
///
669669
/// Or, a closure with two arguments:
670-
/// * 'aggregate_function': [AggregateFunction] for which simplified has been invoked
670+
/// * 'aggregate_function': [AggregateFunction], which includes already simplified
671+
/// arguments
671672
/// * 'info': [crate::simplify::SimplifyContext]
672673
///
673674
/// closure returns simplified [Expr] or an error.

0 commit comments

Comments
 (0)