1 /*-------------------------------------------------------------------------
4 * definition of the system "aggregate" relation (pg_aggregate)
5 * along with the relation's initial contents.
8 * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
9 * Portions Copyright (c) 1994, Regents of the University of California
11 * $Id: pg_aggregate.h,v 1.41 2003/08/04 02:40:10 momjian Exp $
14 * the genbki.sh script reads this file and generates .bki
15 * information from the DATA() statements.
17 *-------------------------------------------------------------------------
19 #ifndef PG_AGGREGATE_H
20 #define PG_AGGREGATE_H
23 * postgres.h contains the system type definitions and the
24 * CATALOG(), BOOTSTRAP and DATA() sugar words so this file
25 * can be read by both genbki.sh and the C compiler.
29 /* ----------------------------------------------------------------
30 * pg_aggregate definition.
32 * cpp turns this into typedef struct FormData_pg_aggregate
34 * aggfnoid pg_proc OID of the aggregate itself
35 * aggtransfn transition function
36 * aggfinalfn final function
37 * aggtranstype type of aggregate's transition (state) data
38 * agginitval initial value for transition state
39 * ----------------------------------------------------------------
41 CATALOG(pg_aggregate) BKI_WITHOUT_OIDS
47 text agginitval; /* VARIABLE LENGTH FIELD */
48 } FormData_pg_aggregate;
51 * Form_pg_aggregate corresponds to a pointer to a tuple with
52 * the format of pg_aggregate relation.
55 typedef FormData_pg_aggregate *Form_pg_aggregate;
58 * compiler constants for pg_aggregate
62 #define Natts_pg_aggregate 5
63 #define Anum_pg_aggregate_aggfnoid 1
64 #define Anum_pg_aggregate_aggtransfn 2
65 #define Anum_pg_aggregate_aggfinalfn 3
66 #define Anum_pg_aggregate_aggtranstype 4
67 #define Anum_pg_aggregate_agginitval 5
71 * initial contents of pg_aggregate
76 DATA(insert ( 2100 int8_accum numeric_avg 1231 "{0,0,0}" ));
77 DATA(insert ( 2101 int4_avg_accum int8_avg 1016 "{0,0}" ));
78 DATA(insert ( 2102 int2_avg_accum int8_avg 1016 "{0,0}" ));
79 DATA(insert ( 2103 numeric_accum numeric_avg 1231 "{0,0,0}" ));
80 DATA(insert ( 2104 float4_accum float8_avg 1022 "{0,0,0}" ));
81 DATA(insert ( 2105 float8_accum float8_avg 1022 "{0,0,0}" ));
82 DATA(insert ( 2106 interval_accum interval_avg 1187 "{0 second,0 second}" ));
85 DATA(insert ( 2107 int8_sum - 1700 _null_ ));
86 DATA(insert ( 2108 int4_sum - 20 _null_ ));
87 DATA(insert ( 2109 int2_sum - 20 _null_ ));
88 DATA(insert ( 2110 float4pl - 700 _null_ ));
89 DATA(insert ( 2111 float8pl - 701 _null_ ));
90 DATA(insert ( 2112 cash_pl - 790 _null_ ));
91 DATA(insert ( 2113 interval_pl - 1186 _null_ ));
92 DATA(insert ( 2114 numeric_add - 1700 _null_ ));
95 DATA(insert ( 2115 int8larger - 20 _null_ ));
96 DATA(insert ( 2116 int4larger - 23 _null_ ));
97 DATA(insert ( 2117 int2larger - 21 _null_ ));
98 DATA(insert ( 2118 oidlarger - 26 _null_ ));
99 DATA(insert ( 2119 float4larger - 700 _null_ ));
100 DATA(insert ( 2120 float8larger - 701 _null_ ));
101 DATA(insert ( 2121 int4larger - 702 _null_ ));
102 DATA(insert ( 2122 date_larger - 1082 _null_ ));
103 DATA(insert ( 2123 time_larger - 1083 _null_ ));
104 DATA(insert ( 2124 timetz_larger - 1266 _null_ ));
105 DATA(insert ( 2125 cashlarger - 790 _null_ ));
106 DATA(insert ( 2126 timestamp_larger - 1114 _null_ ));
107 DATA(insert ( 2127 timestamptz_larger - 1184 _null_ ));
108 DATA(insert ( 2128 interval_larger - 1186 _null_ ));
109 DATA(insert ( 2129 text_larger - 25 _null_ ));
110 DATA(insert ( 2130 numeric_larger - 1700 _null_ ));
113 DATA(insert ( 2131 int8smaller - 20 _null_ ));
114 DATA(insert ( 2132 int4smaller - 23 _null_ ));
115 DATA(insert ( 2133 int2smaller - 21 _null_ ));
116 DATA(insert ( 2134 oidsmaller - 26 _null_ ));
117 DATA(insert ( 2135 float4smaller - 700 _null_ ));
118 DATA(insert ( 2136 float8smaller - 701 _null_ ));
119 DATA(insert ( 2137 int4smaller - 702 _null_ ));
120 DATA(insert ( 2138 date_smaller - 1082 _null_ ));
121 DATA(insert ( 2139 time_smaller - 1083 _null_ ));
122 DATA(insert ( 2140 timetz_smaller - 1266 _null_ ));
123 DATA(insert ( 2141 cashsmaller - 790 _null_ ));
124 DATA(insert ( 2142 timestamp_smaller - 1114 _null_ ));
125 DATA(insert ( 2143 timestamptz_smaller - 1184 _null_ ));
126 DATA(insert ( 2144 interval_smaller - 1186 _null_ ));
127 DATA(insert ( 2145 text_smaller - 25 _null_ ));
128 DATA(insert ( 2146 numeric_smaller - 1700 _null_ ));
131 * Using int8inc for count() is cheating a little, since it really only
132 * takes 1 parameter not 2, but nodeAgg.c won't complain ...
134 DATA(insert ( 2147 int8inc - 20 0 ));
137 DATA(insert ( 2148 int8_accum numeric_variance 1231 "{0,0,0}" ));
138 DATA(insert ( 2149 int4_accum numeric_variance 1231 "{0,0,0}" ));
139 DATA(insert ( 2150 int2_accum numeric_variance 1231 "{0,0,0}" ));
140 DATA(insert ( 2151 float4_accum float8_variance 1022 "{0,0,0}" ));
141 DATA(insert ( 2152 float8_accum float8_variance 1022 "{0,0,0}" ));
142 DATA(insert ( 2153 numeric_accum numeric_variance 1231 "{0,0,0}" ));
145 DATA(insert ( 2154 int8_accum numeric_stddev 1231 "{0,0,0}" ));
146 DATA(insert ( 2155 int4_accum numeric_stddev 1231 "{0,0,0}" ));
147 DATA(insert ( 2156 int2_accum numeric_stddev 1231 "{0,0,0}" ));
148 DATA(insert ( 2157 float4_accum float8_stddev 1022 "{0,0,0}" ));
149 DATA(insert ( 2158 float8_accum float8_stddev 1022 "{0,0,0}" ));
150 DATA(insert ( 2159 numeric_accum numeric_stddev 1231 "{0,0,0}" ));
153 * prototypes for functions in pg_aggregate.c
155 extern void AggregateCreate(const char *aggName,
157 List *aggtransfnName,
158 List *aggfinalfnName,
161 const char *agginitval);
163 #endif /* PG_AGGREGATE_H */