use crate::parser::{AggregationOperator, DataType};
use proc_macro2::TokenStream;
use super::common::{
ThresholdCmp, agg_semiring_new, aggregation_optimize_pipeline, aggregation_pre_leave_pipeline,
result_from_key, row_pattern,
};
pub(crate) fn aggregation_max_optimize(
arity: usize,
agg_pos: usize,
agg_type: DataType,
) -> TokenStream {
aggregation_optimize_pipeline(
arity,
agg_pos,
row_pattern(arity),
agg_semiring_new(AggregationOperator::Max, agg_pos, agg_type),
ThresholdCmp::Gt,
result_from_key(arity, agg_pos),
)
}
pub(crate) fn aggregation_max_pre_leave(
arity: usize,
agg_pos: usize,
agg_type: DataType,
) -> TokenStream {
aggregation_pre_leave_pipeline(
arity,
agg_pos,
row_pattern(arity),
agg_semiring_new(AggregationOperator::Max, agg_pos, agg_type),
)
}