Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
pg_aggregate.h181 linesDownload Raw Back to catalog
1/*-------------------------------------------------------------------------2 *3 * pg_aggregate.h4 *	  definition of the "aggregate" system catalog (pg_aggregate)5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/catalog/pg_aggregate.h11 *12 * NOTES13 *	  The Catalog.pm module reads this file and derives schema14 *	  information.15 *16 *-------------------------------------------------------------------------17 */18#ifndef PG_AGGREGATE_H19#define PG_AGGREGATE_H20 21#include "catalog/genbki.h"22#include "catalog/pg_aggregate_d.h"23 24#include "catalog/objectaddress.h"25#include "nodes/pg_list.h"26 27/* ----------------------------------------------------------------28 *		pg_aggregate definition.29 *		cpp turns this into typedef struct FormData_pg_aggregate30 * ----------------------------------------------------------------31 */32CATALOG(pg_aggregate,2600,AggregateRelationId)33{34	/* pg_proc OID of the aggregate itself */35	regproc		aggfnoid BKI_LOOKUP(pg_proc);36 37	/* aggregate kind, see AGGKIND_ categories below */38	char		aggkind BKI_DEFAULT(n);39 40	/* number of arguments that are "direct" arguments */41	int16		aggnumdirectargs BKI_DEFAULT(0);42 43	/* transition function */44	regproc		aggtransfn BKI_LOOKUP(pg_proc);45 46	/* final function (0 if none) */47	regproc		aggfinalfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);48 49	/* combine function (0 if none) */50	regproc		aggcombinefn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);51 52	/* function to convert transtype to bytea (0 if none) */53	regproc		aggserialfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);54 55	/* function to convert bytea to transtype (0 if none) */56	regproc		aggdeserialfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);57 58	/* forward function for moving-aggregate mode (0 if none) */59	regproc		aggmtransfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);60 61	/* inverse function for moving-aggregate mode (0 if none) */62	regproc		aggminvtransfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);63 64	/* final function for moving-aggregate mode (0 if none) */65	regproc		aggmfinalfn BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);66 67	/* true to pass extra dummy arguments to aggfinalfn */68	bool		aggfinalextra BKI_DEFAULT(f);69 70	/* true to pass extra dummy arguments to aggmfinalfn */71	bool		aggmfinalextra BKI_DEFAULT(f);72 73	/* tells whether aggfinalfn modifies transition state */74	char		aggfinalmodify BKI_DEFAULT(r);75 76	/* tells whether aggmfinalfn modifies transition state */77	char		aggmfinalmodify BKI_DEFAULT(r);78 79	/* associated sort operator (0 if none) */80	Oid			aggsortop BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_operator);81 82	/* type of aggregate's transition (state) data */83	Oid			aggtranstype BKI_LOOKUP(pg_type);84 85	/* estimated size of state data (0 for default estimate) */86	int32		aggtransspace BKI_DEFAULT(0);87 88	/* type of moving-aggregate state data (0 if none) */89	Oid			aggmtranstype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);90 91	/* estimated size of moving-agg state (0 for default est) */92	int32		aggmtransspace BKI_DEFAULT(0);93 94#ifdef CATALOG_VARLEN			/* variable-length fields start here */95 96	/* initial value for transition state (can be NULL) */97	text		agginitval BKI_DEFAULT(_null_);98 99	/* initial value for moving-agg state (can be NULL) */100	text		aggminitval BKI_DEFAULT(_null_);101#endif102} FormData_pg_aggregate;103 104/* ----------------105 *		Form_pg_aggregate corresponds to a pointer to a tuple with106 *		the format of pg_aggregate relation.107 * ----------------108 */109typedef FormData_pg_aggregate *Form_pg_aggregate;110 111DECLARE_TOAST(pg_aggregate, 4159, 4160);112 113DECLARE_UNIQUE_INDEX_PKEY(pg_aggregate_fnoid_index, 2650, AggregateFnoidIndexId, on pg_aggregate using btree(aggfnoid oid_ops));114 115#ifdef EXPOSE_TO_CLIENT_CODE116 117/*118 * Symbolic values for aggkind column.  We distinguish normal aggregates119 * from ordered-set aggregates (which have two sets of arguments, namely120 * direct and aggregated arguments) and from hypothetical-set aggregates121 * (which are a subclass of ordered-set aggregates in which the last122 * direct arguments have to match up in number and datatypes with the123 * aggregated arguments).124 */125#define AGGKIND_NORMAL			'n'126#define AGGKIND_ORDERED_SET		'o'127#define AGGKIND_HYPOTHETICAL	'h'128 129/* Use this macro to test for "ordered-set agg including hypothetical case" */130#define AGGKIND_IS_ORDERED_SET(kind)  ((kind) != AGGKIND_NORMAL)131 132/*133 * Symbolic values for aggfinalmodify and aggmfinalmodify columns.134 * Preferably, finalfns do not modify the transition state value at all,135 * but in some cases that would cost too much performance.  We distinguish136 * "pure read only" and "trashes it arbitrarily" cases, as well as the137 * intermediate case where multiple finalfn calls are allowed but the138 * transfn cannot be applied anymore after the first finalfn call.139 */140#define AGGMODIFY_READ_ONLY			'r'141#define AGGMODIFY_SHAREABLE			's'142#define AGGMODIFY_READ_WRITE		'w'143 144#endif							/* EXPOSE_TO_CLIENT_CODE */145 146 147extern ObjectAddress AggregateCreate(const char *aggName,148									 Oid aggNamespace,149									 bool replace,150									 char aggKind,151									 int numArgs,152									 int numDirectArgs,153									 oidvector *parameterTypes,154									 Datum allParameterTypes,155									 Datum parameterModes,156									 Datum parameterNames,157									 List *parameterDefaults,158									 Oid variadicArgType,159									 List *aggtransfnName,160									 List *aggfinalfnName,161									 List *aggcombinefnName,162									 List *aggserialfnName,163									 List *aggdeserialfnName,164									 List *aggmtransfnName,165									 List *aggminvtransfnName,166									 List *aggmfinalfnName,167									 bool finalfnExtraArgs,168									 bool mfinalfnExtraArgs,169									 char finalfnModify,170									 char mfinalfnModify,171									 List *aggsortopName,172									 Oid aggTransType,173									 int32 aggTransSpace,174									 Oid aggmTransType,175									 int32 aggmTransSpace,176									 const char *agginitval,177									 const char *aggminitval,178									 char proparallel);179 180#endif							/* PG_AGGREGATE_H */181 
codekingpro/portable-devtools · Team Ai