2
0

parse_agg.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*-------------------------------------------------------------------------
  2. *
  3. * parse_agg.h
  4. * handle aggregates and window functions in parser
  5. *
  6. * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
  7. * Portions Copyright (c) 1994, Regents of the University of California
  8. *
  9. * src/include/parser/parse_agg.h
  10. *
  11. *-------------------------------------------------------------------------
  12. */
  13. #ifndef PARSE_AGG_H
  14. #define PARSE_AGG_H
  15. #include "parser/parse_node.h"
  16. extern void transformAggregateCall(ParseState *pstate, Aggref *agg,
  17. List *args, List *aggorder,
  18. bool agg_distinct);
  19. extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *g);
  20. extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc,
  21. WindowDef *windef);
  22. extern void parseCheckAggregates(ParseState *pstate, Query *qry);
  23. extern List *expand_grouping_sets(List *groupingSets, bool groupDistinct, int limit);
  24. extern int get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes);
  25. extern Oid resolve_aggregate_transtype(Oid aggfuncid,
  26. Oid aggtranstype,
  27. Oid *inputTypes,
  28. int numArguments);
  29. extern void build_aggregate_transfn_expr(Oid *agg_input_types,
  30. int agg_num_inputs,
  31. int agg_num_direct_inputs,
  32. bool agg_variadic,
  33. Oid agg_state_type,
  34. Oid agg_input_collation,
  35. Oid transfn_oid,
  36. Oid invtransfn_oid,
  37. Expr **transfnexpr,
  38. Expr **invtransfnexpr);
  39. extern void build_aggregate_serialfn_expr(Oid serialfn_oid,
  40. Expr **serialfnexpr);
  41. extern void build_aggregate_deserialfn_expr(Oid deserialfn_oid,
  42. Expr **deserialfnexpr);
  43. extern void build_aggregate_finalfn_expr(Oid *agg_input_types,
  44. int num_finalfn_inputs,
  45. Oid agg_state_type,
  46. Oid agg_result_type,
  47. Oid agg_input_collation,
  48. Oid finalfn_oid,
  49. Expr **finalfnexpr);
  50. #endif /* PARSE_AGG_H */