mirror of
https://github.com/postgres/postgres.git
synced 2026-02-03 20:40:14 -05:00
This is necessary infrastructure for supporting parallel aggregation for aggregates whose transition type is "internal". Such values can't be passed between cooperating processes, because they are just pointers. David Rowley, reviewed by Tomas Vondra and by me.
68 lines
2 KiB
C
68 lines
2 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* parse_agg.h
|
|
* handle aggregates and window functions in parser
|
|
*
|
|
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/parser/parse_agg.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PARSE_AGG_H
|
|
#define PARSE_AGG_H
|
|
|
|
#include "parser/parse_node.h"
|
|
|
|
extern void transformAggregateCall(ParseState *pstate, Aggref *agg,
|
|
List *args, List *aggorder,
|
|
bool agg_distinct);
|
|
|
|
extern Node *transformGroupingFunc(ParseState *pstate, GroupingFunc *g);
|
|
|
|
extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc,
|
|
WindowDef *windef);
|
|
|
|
extern void parseCheckAggregates(ParseState *pstate, Query *qry);
|
|
|
|
extern List *expand_grouping_sets(List *groupingSets, int limit);
|
|
|
|
extern int get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes);
|
|
|
|
extern Oid resolve_aggregate_transtype(Oid aggfuncid,
|
|
Oid aggtranstype,
|
|
Oid *inputTypes,
|
|
int numArguments);
|
|
|
|
extern void build_aggregate_transfn_expr(Oid *agg_input_types,
|
|
int agg_num_inputs,
|
|
int agg_num_direct_inputs,
|
|
bool agg_variadic,
|
|
Oid agg_state_type,
|
|
Oid agg_input_collation,
|
|
Oid transfn_oid,
|
|
Oid invtransfn_oid,
|
|
Expr **transfnexpr,
|
|
Expr **invtransfnexpr);
|
|
|
|
extern void build_aggregate_combinefn_expr(Oid agg_state_type,
|
|
Oid agg_input_collation,
|
|
Oid combinefn_oid,
|
|
Expr **combinefnexpr);
|
|
|
|
extern void build_aggregate_serialfn_expr(Oid agg_state_type,
|
|
Oid agg_serial_type,
|
|
Oid agg_input_collation,
|
|
Oid serialfn_oid,
|
|
Expr **serialfnexpr);
|
|
|
|
extern void build_aggregate_finalfn_expr(Oid *agg_input_types,
|
|
int num_finalfn_inputs,
|
|
Oid agg_state_type,
|
|
Oid agg_result_type,
|
|
Oid agg_input_collation,
|
|
Oid finalfn_oid,
|
|
Expr **finalfnexpr);
|
|
|
|
#endif /* PARSE_AGG_H */
|