1 /*-------------------------------------------------------------------------
4 * definition of the system "aggregate" relation (pg_aggregate)
5 * along with the relation's initial contents.
8 * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
9 * Portions Copyright (c) 1994, Regents of the University of California
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
22 #include "catalog/genbki.h"
23 #include "nodes/pg_list.h"
25 /* ----------------------------------------------------------------
26 * pg_aggregate definition.
28 * cpp turns this into typedef struct FormData_pg_aggregate
30 * aggfnoid pg_proc OID of the aggregate itself
31 * aggtransfn transition function
32 * aggfinalfn final function (0 if none)
33 * aggsortop associated sort operator (0 if none)
34 * aggtranstype type of aggregate's transition (state) data
35 * agginitval initial value for transition state (can be NULL)
36 * ----------------------------------------------------------------
38 #define AggregateRelationId 2600
40 CATALOG(pg_aggregate
,2600) 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 6
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_aggsortop 4
67 #define Anum_pg_aggregate_aggtranstype 5
68 #define Anum_pg_aggregate_agginitval 6
72 * initial contents of pg_aggregate
77 DATA(insert ( 2100 int8_avg_accum numeric_avg
0 1231 "{0,0}" ));
78 DATA(insert ( 2101 int4_avg_accum int8_avg
0 1016 "{0,0}" ));
79 DATA(insert ( 2102 int2_avg_accum int8_avg
0 1016 "{0,0}" ));
80 DATA(insert ( 2103 numeric_avg_accum numeric_avg
0 1231 "{0,0}" ));
81 DATA(insert ( 2104 float4_accum float8_avg
0 1022 "{0,0,0}" ));
82 DATA(insert ( 2105 float8_accum float8_avg
0 1022 "{0,0,0}" ));
83 DATA(insert ( 2106 interval_accum interval_avg
0 1187 "{0 second,0 second}" ));
86 DATA(insert ( 2107 int8_sum
- 0 1700 _null_
));
87 DATA(insert ( 2108 int4_sum
- 0 20 _null_
));
88 DATA(insert ( 2109 int2_sum
- 0 20 _null_
));
89 DATA(insert ( 2110 float4pl
- 0 700 _null_
));
90 DATA(insert ( 2111 float8pl
- 0 701 _null_
));
91 DATA(insert ( 2112 cash_pl
- 0 790 _null_
));
92 DATA(insert ( 2113 interval_pl
- 0 1186 _null_
));
93 DATA(insert ( 2114 numeric_add
- 0 1700 _null_
));
96 DATA(insert ( 2115 int8larger
- 413 20 _null_
));
97 DATA(insert ( 2116 int4larger
- 521 23 _null_
));
98 DATA(insert ( 2117 int2larger
- 520 21 _null_
));
99 DATA(insert ( 2118 oidlarger
- 610 26 _null_
));
100 DATA(insert ( 2119 float4larger
- 623 700 _null_
));
101 DATA(insert ( 2120 float8larger
- 674 701 _null_
));
102 DATA(insert ( 2121 int4larger
- 563 702 _null_
));
103 DATA(insert ( 2122 date_larger
- 1097 1082 _null_
));
104 DATA(insert ( 2123 time_larger
- 1112 1083 _null_
));
105 DATA(insert ( 2124 timetz_larger
- 1554 1266 _null_
));
106 DATA(insert ( 2125 cashlarger
- 903 790 _null_
));
107 DATA(insert ( 2126 timestamp_larger
- 2064 1114 _null_
));
108 DATA(insert ( 2127 timestamptz_larger
- 1324 1184 _null_
));
109 DATA(insert ( 2128 interval_larger
- 1334 1186 _null_
));
110 DATA(insert ( 2129 text_larger
- 666 25 _null_
));
111 DATA(insert ( 2130 numeric_larger
- 1756 1700 _null_
));
112 DATA(insert ( 2050 array_larger
- 1073 2277 _null_
));
113 DATA(insert ( 2244 bpchar_larger
- 1060 1042 _null_
));
114 DATA(insert ( 2797 tidlarger
- 2800 27 _null_
));
115 DATA(insert ( 3526 enum_larger
- 3519 3500 _null_
));
118 DATA(insert ( 2131 int8smaller
- 412 20 _null_
));
119 DATA(insert ( 2132 int4smaller
- 97 23 _null_
));
120 DATA(insert ( 2133 int2smaller
- 95 21 _null_
));
121 DATA(insert ( 2134 oidsmaller
- 609 26 _null_
));
122 DATA(insert ( 2135 float4smaller
- 622 700 _null_
));
123 DATA(insert ( 2136 float8smaller
- 672 701 _null_
));
124 DATA(insert ( 2137 int4smaller
- 562 702 _null_
));
125 DATA(insert ( 2138 date_smaller
- 1095 1082 _null_
));
126 DATA(insert ( 2139 time_smaller
- 1110 1083 _null_
));
127 DATA(insert ( 2140 timetz_smaller
- 1552 1266 _null_
));
128 DATA(insert ( 2141 cashsmaller
- 902 790 _null_
));
129 DATA(insert ( 2142 timestamp_smaller
- 2062 1114 _null_
));
130 DATA(insert ( 2143 timestamptz_smaller
- 1322 1184 _null_
));
131 DATA(insert ( 2144 interval_smaller
- 1332 1186 _null_
));
132 DATA(insert ( 2145 text_smaller
- 664 25 _null_
));
133 DATA(insert ( 2146 numeric_smaller
- 1754 1700 _null_
));
134 DATA(insert ( 2051 array_smaller
- 1072 2277 _null_
));
135 DATA(insert ( 2245 bpchar_smaller
- 1058 1042 _null_
));
136 DATA(insert ( 2798 tidsmaller
- 2799 27 _null_
));
137 DATA(insert ( 3527 enum_smaller
- 3518 3500 _null_
));
140 DATA(insert ( 2147 int8inc_any
- 0 20 "0" ));
141 DATA(insert ( 2803 int8inc
- 0 20 "0" ));
144 DATA(insert ( 2718 int8_accum numeric_var_pop
0 1231 "{0,0,0}" ));
145 DATA(insert ( 2719 int4_accum numeric_var_pop
0 1231 "{0,0,0}" ));
146 DATA(insert ( 2720 int2_accum numeric_var_pop
0 1231 "{0,0,0}" ));
147 DATA(insert ( 2721 float4_accum float8_var_pop
0 1022 "{0,0,0}" ));
148 DATA(insert ( 2722 float8_accum float8_var_pop
0 1022 "{0,0,0}" ));
149 DATA(insert ( 2723 numeric_accum numeric_var_pop
0 1231 "{0,0,0}" ));
152 DATA(insert ( 2641 int8_accum numeric_var_samp
0 1231 "{0,0,0}" ));
153 DATA(insert ( 2642 int4_accum numeric_var_samp
0 1231 "{0,0,0}" ));
154 DATA(insert ( 2643 int2_accum numeric_var_samp
0 1231 "{0,0,0}" ));
155 DATA(insert ( 2644 float4_accum float8_var_samp
0 1022 "{0,0,0}" ));
156 DATA(insert ( 2645 float8_accum float8_var_samp
0 1022 "{0,0,0}" ));
157 DATA(insert ( 2646 numeric_accum numeric_var_samp
0 1231 "{0,0,0}" ));
159 /* variance: historical Postgres syntax for var_samp */
160 DATA(insert ( 2148 int8_accum numeric_var_samp
0 1231 "{0,0,0}" ));
161 DATA(insert ( 2149 int4_accum numeric_var_samp
0 1231 "{0,0,0}" ));
162 DATA(insert ( 2150 int2_accum numeric_var_samp
0 1231 "{0,0,0}" ));
163 DATA(insert ( 2151 float4_accum float8_var_samp
0 1022 "{0,0,0}" ));
164 DATA(insert ( 2152 float8_accum float8_var_samp
0 1022 "{0,0,0}" ));
165 DATA(insert ( 2153 numeric_accum numeric_var_samp
0 1231 "{0,0,0}" ));
168 DATA(insert ( 2724 int8_accum numeric_stddev_pop
0 1231 "{0,0,0}" ));
169 DATA(insert ( 2725 int4_accum numeric_stddev_pop
0 1231 "{0,0,0}" ));
170 DATA(insert ( 2726 int2_accum numeric_stddev_pop
0 1231 "{0,0,0}" ));
171 DATA(insert ( 2727 float4_accum float8_stddev_pop
0 1022 "{0,0,0}" ));
172 DATA(insert ( 2728 float8_accum float8_stddev_pop
0 1022 "{0,0,0}" ));
173 DATA(insert ( 2729 numeric_accum numeric_stddev_pop
0 1231 "{0,0,0}" ));
176 DATA(insert ( 2712 int8_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
177 DATA(insert ( 2713 int4_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
178 DATA(insert ( 2714 int2_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
179 DATA(insert ( 2715 float4_accum float8_stddev_samp
0 1022 "{0,0,0}" ));
180 DATA(insert ( 2716 float8_accum float8_stddev_samp
0 1022 "{0,0,0}" ));
181 DATA(insert ( 2717 numeric_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
183 /* stddev: historical Postgres syntax for stddev_samp */
184 DATA(insert ( 2154 int8_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
185 DATA(insert ( 2155 int4_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
186 DATA(insert ( 2156 int2_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
187 DATA(insert ( 2157 float4_accum float8_stddev_samp
0 1022 "{0,0,0}" ));
188 DATA(insert ( 2158 float8_accum float8_stddev_samp
0 1022 "{0,0,0}" ));
189 DATA(insert ( 2159 numeric_accum numeric_stddev_samp
0 1231 "{0,0,0}" ));
191 /* SQL2003 binary regression aggregates */
192 DATA(insert ( 2818 int8inc_float8_float8
- 0 20 "0" ));
193 DATA(insert ( 2819 float8_regr_accum float8_regr_sxx
0 1022 "{0,0,0,0,0,0}" ));
194 DATA(insert ( 2820 float8_regr_accum float8_regr_syy
0 1022 "{0,0,0,0,0,0}" ));
195 DATA(insert ( 2821 float8_regr_accum float8_regr_sxy
0 1022 "{0,0,0,0,0,0}" ));
196 DATA(insert ( 2822 float8_regr_accum float8_regr_avgx
0 1022 "{0,0,0,0,0,0}" ));
197 DATA(insert ( 2823 float8_regr_accum float8_regr_avgy
0 1022 "{0,0,0,0,0,0}" ));
198 DATA(insert ( 2824 float8_regr_accum float8_regr_r2
0 1022 "{0,0,0,0,0,0}" ));
199 DATA(insert ( 2825 float8_regr_accum float8_regr_slope
0 1022 "{0,0,0,0,0,0}" ));
200 DATA(insert ( 2826 float8_regr_accum float8_regr_intercept
0 1022 "{0,0,0,0,0,0}" ));
201 DATA(insert ( 2827 float8_regr_accum float8_covar_pop
0 1022 "{0,0,0,0,0,0}" ));
202 DATA(insert ( 2828 float8_regr_accum float8_covar_samp
0 1022 "{0,0,0,0,0,0}" ));
203 DATA(insert ( 2829 float8_regr_accum float8_corr
0 1022 "{0,0,0,0,0,0}" ));
205 /* boolean-and and boolean-or */
206 DATA(insert ( 2517 booland_statefunc
- 0 16 _null_
));
207 DATA(insert ( 2518 boolor_statefunc
- 0 16 _null_
));
208 DATA(insert ( 2519 booland_statefunc
- 0 16 _null_
));
210 /* bitwise integer */
211 DATA(insert ( 2236 int2and
- 0 21 _null_
));
212 DATA(insert ( 2237 int2or
- 0 21 _null_
));
213 DATA(insert ( 2238 int4and
- 0 23 _null_
));
214 DATA(insert ( 2239 int4or
- 0 23 _null_
));
215 DATA(insert ( 2240 int8and
- 0 20 _null_
));
216 DATA(insert ( 2241 int8or
- 0 20 _null_
));
217 DATA(insert ( 2242 bitand - 0 1560 _null_
));
218 DATA(insert ( 2243 bitor - 0 1560 _null_
));
221 DATA(insert ( 2901 xmlconcat2
- 0 142 _null_
));
224 DATA(insert ( 2335 array_agg_transfn array_agg_finalfn
0 2281 _null_
));
227 * prototypes for functions in pg_aggregate.c
229 extern void AggregateCreate(const char *aggName
,
233 List
*aggtransfnName
,
234 List
*aggfinalfnName
,
237 const char *agginitval
);
239 #endif /* PG_AGGREGATE_H */