parse_agg.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*-------------------------------------------------------------------------
  2. *
  3. * parse_agg.h
  4. * handle aggregates and window functions in parser
  5. *
  6. * Portions Copyright (c) 1996-2016, 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, 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_combinefn_expr(Oid agg_state_type,
  40. Oid agg_input_collation,
  41. Oid combinefn_oid,
  42. Expr **combinefnexpr);
  43. extern void build_aggregate_serialfn_expr(Oid serialfn_oid,
  44. Expr **serialfnexpr);
  45. extern void build_aggregate_deserialfn_expr(Oid deserialfn_oid,
  46. Expr **deserialfnexpr);
  47. extern void build_aggregate_finalfn_expr(Oid *agg_input_types,
  48. int num_finalfn_inputs,
  49. Oid agg_state_type,
  50. Oid agg_result_type,
  51. Oid agg_input_collation,
  52. Oid finalfn_oid,
  53. Expr **finalfnexpr);
  54. #endif /* PARSE_AGG_H */