codekingpro/portable-devtools
115k
1/*-------------------------------------------------------------------------2 *3 * parse_agg.h4 * handle aggregates and window functions in parser5 *6 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group7 * Portions Copyright (c) 1994, Regents of the University of California8 *9 * src/include/parser/parse_agg.h10 *11 *-------------------------------------------------------------------------12 */13#ifndef PARSE_AGG_H14#define PARSE_AGG_H15 16#include "parser/parse_node.h"17 18extern void transformAggregateCall(ParseState *pstate, Aggref *agg,19 List *args, List *aggorder,20 bool agg_distinct);21 22extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *p);23 24extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc,25 WindowDef *windef);26 27extern void parseCheckAggregates(ParseState *pstate, Query *qry);28 29extern List *expand_grouping_sets(List *groupingSets, bool groupDistinct, int limit);30 31extern int get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes);32 33extern Oid resolve_aggregate_transtype(Oid aggfuncid,34 Oid aggtranstype,35 Oid *inputTypes,36 int numArguments);37 38extern bool agg_args_support_sendreceive(Aggref *aggref);39 40extern void build_aggregate_transfn_expr(Oid *agg_input_types,41 int agg_num_inputs,42 int agg_num_direct_inputs,43 bool agg_variadic,44 Oid agg_state_type,45 Oid agg_input_collation,46 Oid transfn_oid,47 Oid invtransfn_oid,48 Expr **transfnexpr,49 Expr **invtransfnexpr);50 51extern void build_aggregate_serialfn_expr(Oid serialfn_oid,52 Expr **serialfnexpr);53 54extern void build_aggregate_deserialfn_expr(Oid deserialfn_oid,55 Expr **deserialfnexpr);56 57extern void build_aggregate_finalfn_expr(Oid *agg_input_types,58 int num_finalfn_inputs,59 Oid agg_state_type,60 Oid agg_result_type,61 Oid agg_input_collation,62 Oid finalfn_oid,63 Expr **finalfnexpr);64 65#endif /* PARSE_AGG_H */66 