]> granicus.if.org Git - postgresql/blob - src/include/catalog/pg_aggregate.h
pgindent run for 8.2.
[postgresql] / src / include / catalog / pg_aggregate.h
1 /*-------------------------------------------------------------------------
2  *
3  * pg_aggregate.h
4  *        definition of the system "aggregate" relation (pg_aggregate)
5  *        along with the relation's initial contents.
6  *
7  *
8  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
9  * Portions Copyright (c) 1994, Regents of the University of California
10  *
11  * $PostgreSQL: pgsql/src/include/catalog/pg_aggregate.h,v 1.58 2006/10/04 00:30:07 momjian Exp $
12  *
13  * NOTES
14  *        the genbki.sh script reads this file and generates .bki
15  *        information from the DATA() statements.
16  *
17  *-------------------------------------------------------------------------
18  */
19 #ifndef PG_AGGREGATE_H
20 #define PG_AGGREGATE_H
21
22 #include "nodes/pg_list.h"
23
24 /* ----------------
25  *              postgres.h contains the system type definitions and the
26  *              CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file
27  *              can be read by both genbki.sh and the C compiler.
28  * ----------------
29  */
30
31 /* ----------------------------------------------------------------
32  *              pg_aggregate definition.
33  *
34  *              cpp turns this into typedef struct FormData_pg_aggregate
35  *
36  *      aggfnoid                        pg_proc OID of the aggregate itself
37  *      aggtransfn                      transition function
38  *      aggfinalfn                      final function (0 if none)
39  *      aggsortop                       associated sort operator (0 if none)
40  *      aggtranstype            type of aggregate's transition (state) data
41  *      agginitval                      initial value for transition state (can be NULL)
42  * ----------------------------------------------------------------
43  */
44 #define AggregateRelationId  2600
45
46 CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS
47 {
48         regproc         aggfnoid;
49         regproc         aggtransfn;
50         regproc         aggfinalfn;
51         Oid                     aggsortop;
52         Oid                     aggtranstype;
53         text            agginitval;             /* VARIABLE LENGTH FIELD */
54 } FormData_pg_aggregate;
55
56 /* ----------------
57  *              Form_pg_aggregate corresponds to a pointer to a tuple with
58  *              the format of pg_aggregate relation.
59  * ----------------
60  */
61 typedef FormData_pg_aggregate *Form_pg_aggregate;
62
63 /* ----------------
64  *              compiler constants for pg_aggregate
65  * ----------------
66  */
67
68 #define Natts_pg_aggregate                              6
69 #define Anum_pg_aggregate_aggfnoid              1
70 #define Anum_pg_aggregate_aggtransfn    2
71 #define Anum_pg_aggregate_aggfinalfn    3
72 #define Anum_pg_aggregate_aggsortop             4
73 #define Anum_pg_aggregate_aggtranstype  5
74 #define Anum_pg_aggregate_agginitval    6
75
76
77 /* ----------------
78  * initial contents of pg_aggregate
79  * ---------------
80  */
81
82 /* avg */
83 DATA(insert ( 2100      int8_accum              numeric_avg             0       1231    "{0,0,0}" ));
84 DATA(insert ( 2101      int4_avg_accum  int8_avg                0       1016    "{0,0}" ));
85 DATA(insert ( 2102      int2_avg_accum  int8_avg                0       1016    "{0,0}" ));
86 DATA(insert ( 2103      numeric_accum   numeric_avg             0       1231    "{0,0,0}" ));
87 DATA(insert ( 2104      float4_accum    float8_avg              0       1022    "{0,0,0}" ));
88 DATA(insert ( 2105      float8_accum    float8_avg              0       1022    "{0,0,0}" ));
89 DATA(insert ( 2106      interval_accum  interval_avg    0       1187    "{0 second,0 second}" ));
90
91 /* sum */
92 DATA(insert ( 2107      int8_sum                -                               0       1700    _null_ ));
93 DATA(insert ( 2108      int4_sum                -                               0       20              _null_ ));
94 DATA(insert ( 2109      int2_sum                -                               0       20              _null_ ));
95 DATA(insert ( 2110      float4pl                -                               0       700             _null_ ));
96 DATA(insert ( 2111      float8pl                -                               0       701             _null_ ));
97 DATA(insert ( 2112      cash_pl                 -                               0       790             _null_ ));
98 DATA(insert ( 2113      interval_pl             -                               0       1186    _null_ ));
99 DATA(insert ( 2114      numeric_add             -                               0       1700    _null_ ));
100
101 /* max */
102 DATA(insert ( 2115      int8larger              -                               413             20              _null_ ));
103 DATA(insert ( 2116      int4larger              -                               521             23              _null_ ));
104 DATA(insert ( 2117      int2larger              -                               520             21              _null_ ));
105 DATA(insert ( 2118      oidlarger               -                               610             26              _null_ ));
106 DATA(insert ( 2119      float4larger    -                               623             700             _null_ ));
107 DATA(insert ( 2120      float8larger    -                               674             701             _null_ ));
108 DATA(insert ( 2121      int4larger              -                               563             702             _null_ ));
109 DATA(insert ( 2122      date_larger             -                               1097    1082    _null_ ));
110 DATA(insert ( 2123      time_larger             -                               1112    1083    _null_ ));
111 DATA(insert ( 2124      timetz_larger   -                               1554    1266    _null_ ));
112 DATA(insert ( 2125      cashlarger              -                               903             790             _null_ ));
113 DATA(insert ( 2126      timestamp_larger        -                       2064    1114    _null_ ));
114 DATA(insert ( 2127      timestamptz_larger      -                       1324    1184    _null_ ));
115 DATA(insert ( 2128      interval_larger -                               1334    1186    _null_ ));
116 DATA(insert ( 2129      text_larger             -                               666             25              _null_ ));
117 DATA(insert ( 2130      numeric_larger  -                               1756    1700    _null_ ));
118 DATA(insert ( 2050      array_larger    -                               1073    2277    _null_ ));
119 DATA(insert ( 2244      bpchar_larger   -                               1060    1042    _null_ ));
120 DATA(insert ( 2797      tidlarger               -                               2800    27              _null_ ));
121
122 /* min */
123 DATA(insert ( 2131      int8smaller             -                               412             20              _null_ ));
124 DATA(insert ( 2132      int4smaller             -                               97              23              _null_ ));
125 DATA(insert ( 2133      int2smaller             -                               95              21              _null_ ));
126 DATA(insert ( 2134      oidsmaller              -                               609             26              _null_ ));
127 DATA(insert ( 2135      float4smaller   -                               622             700             _null_ ));
128 DATA(insert ( 2136      float8smaller   -                               672             701             _null_ ));
129 DATA(insert ( 2137      int4smaller             -                               562             702             _null_ ));
130 DATA(insert ( 2138      date_smaller    -                               1095    1082    _null_ ));
131 DATA(insert ( 2139      time_smaller    -                               1110    1083    _null_ ));
132 DATA(insert ( 2140      timetz_smaller  -                               1552    1266    _null_ ));
133 DATA(insert ( 2141      cashsmaller             -                               902             790             _null_ ));
134 DATA(insert ( 2142      timestamp_smaller       -                       2062    1114    _null_ ));
135 DATA(insert ( 2143      timestamptz_smaller -                   1322    1184    _null_ ));
136 DATA(insert ( 2144      interval_smaller        -                       1332    1186    _null_ ));
137 DATA(insert ( 2145      text_smaller    -                               664             25              _null_ ));
138 DATA(insert ( 2146      numeric_smaller -                               1754    1700    _null_ ));
139 DATA(insert ( 2051      array_smaller   -                               1072    2277    _null_ ));
140 DATA(insert ( 2245      bpchar_smaller  -                               1058    1042    _null_ ));
141 DATA(insert ( 2798      tidsmaller              -                               2799    27              _null_ ));
142
143 /* count */
144 DATA(insert ( 2147      int8inc_any             -                               0               20              "0" ));
145 DATA(insert ( 2803      int8inc                 -                               0               20              "0" ));
146
147 /* var_pop */
148 DATA(insert ( 2718      int8_accum      numeric_var_pop 0       1231    "{0,0,0}" ));
149 DATA(insert ( 2719      int4_accum      numeric_var_pop 0       1231    "{0,0,0}" ));
150 DATA(insert ( 2720      int2_accum      numeric_var_pop 0       1231    "{0,0,0}" ));
151 DATA(insert ( 2721      float4_accum    float8_var_pop 0        1022    "{0,0,0}" ));
152 DATA(insert ( 2722      float8_accum    float8_var_pop 0        1022    "{0,0,0}" ));
153 DATA(insert ( 2723      numeric_accum  numeric_var_pop 0        1231    "{0,0,0}" ));
154
155 /* var_samp */
156 DATA(insert ( 2641      int8_accum      numeric_var_samp        0       1231    "{0,0,0}" ));
157 DATA(insert ( 2642      int4_accum      numeric_var_samp        0       1231    "{0,0,0}" ));
158 DATA(insert ( 2643      int2_accum      numeric_var_samp        0       1231    "{0,0,0}" ));
159 DATA(insert ( 2644      float4_accum    float8_var_samp 0       1022    "{0,0,0}" ));
160 DATA(insert ( 2645      float8_accum    float8_var_samp 0       1022    "{0,0,0}" ));
161 DATA(insert ( 2646      numeric_accum  numeric_var_samp 0       1231    "{0,0,0}" ));
162
163 /* variance: historical Postgres syntax for var_samp */
164 DATA(insert ( 2148      int8_accum      numeric_var_samp        0       1231    "{0,0,0}" ));
165 DATA(insert ( 2149      int4_accum      numeric_var_samp        0       1231    "{0,0,0}" ));
166 DATA(insert ( 2150      int2_accum      numeric_var_samp        0       1231    "{0,0,0}" ));
167 DATA(insert ( 2151      float4_accum    float8_var_samp 0       1022    "{0,0,0}" ));
168 DATA(insert ( 2152      float8_accum    float8_var_samp 0       1022    "{0,0,0}" ));
169 DATA(insert ( 2153      numeric_accum  numeric_var_samp 0       1231    "{0,0,0}" ));
170
171 /* stddev_pop */
172 DATA(insert ( 2724      int8_accum      numeric_stddev_pop              0       1231    "{0,0,0}" ));
173 DATA(insert ( 2725      int4_accum      numeric_stddev_pop              0       1231    "{0,0,0}" ));
174 DATA(insert ( 2726      int2_accum      numeric_stddev_pop              0       1231    "{0,0,0}" ));
175 DATA(insert ( 2727      float4_accum    float8_stddev_pop       0       1022    "{0,0,0}" ));
176 DATA(insert ( 2728      float8_accum    float8_stddev_pop       0       1022    "{0,0,0}" ));
177 DATA(insert ( 2729      numeric_accum   numeric_stddev_pop      0       1231    "{0,0,0}" ));
178
179 /* stddev_samp */
180 DATA(insert ( 2712      int8_accum      numeric_stddev_samp             0       1231    "{0,0,0}" ));
181 DATA(insert ( 2713      int4_accum      numeric_stddev_samp             0       1231    "{0,0,0}" ));
182 DATA(insert ( 2714      int2_accum      numeric_stddev_samp             0       1231    "{0,0,0}" ));
183 DATA(insert ( 2715      float4_accum    float8_stddev_samp      0       1022    "{0,0,0}" ));
184 DATA(insert ( 2716      float8_accum    float8_stddev_samp      0       1022    "{0,0,0}" ));
185 DATA(insert ( 2717      numeric_accum   numeric_stddev_samp 0   1231    "{0,0,0}" ));
186
187 /* stddev: historical Postgres syntax for stddev_samp */
188 DATA(insert ( 2154      int8_accum      numeric_stddev_samp             0       1231    "{0,0,0}" ));
189 DATA(insert ( 2155      int4_accum      numeric_stddev_samp             0       1231    "{0,0,0}" ));
190 DATA(insert ( 2156      int2_accum      numeric_stddev_samp             0       1231    "{0,0,0}" ));
191 DATA(insert ( 2157      float4_accum    float8_stddev_samp      0       1022    "{0,0,0}" ));
192 DATA(insert ( 2158      float8_accum    float8_stddev_samp      0       1022    "{0,0,0}" ));
193 DATA(insert ( 2159      numeric_accum   numeric_stddev_samp 0   1231    "{0,0,0}" ));
194
195 /* SQL2003 binary regression aggregates */
196 DATA(insert ( 2818      int8inc_float8_float8           -                               0       20              "0" ));
197 DATA(insert ( 2819      float8_regr_accum       float8_regr_sxx                 0       1022    "{0,0,0,0,0,0}" ));
198 DATA(insert ( 2820      float8_regr_accum       float8_regr_syy                 0       1022    "{0,0,0,0,0,0}" ));
199 DATA(insert ( 2821      float8_regr_accum       float8_regr_sxy                 0       1022    "{0,0,0,0,0,0}" ));
200 DATA(insert ( 2822      float8_regr_accum       float8_regr_avgx                0       1022    "{0,0,0,0,0,0}" ));
201 DATA(insert ( 2823      float8_regr_accum       float8_regr_avgy                0       1022    "{0,0,0,0,0,0}" ));
202 DATA(insert ( 2824      float8_regr_accum       float8_regr_r2                  0       1022    "{0,0,0,0,0,0}" ));
203 DATA(insert ( 2825      float8_regr_accum       float8_regr_slope               0       1022    "{0,0,0,0,0,0}" ));
204 DATA(insert ( 2826      float8_regr_accum       float8_regr_intercept   0       1022    "{0,0,0,0,0,0}" ));
205 DATA(insert ( 2827      float8_regr_accum       float8_covar_pop                0       1022    "{0,0,0,0,0,0}" ));
206 DATA(insert ( 2828      float8_regr_accum       float8_covar_samp               0       1022    "{0,0,0,0,0,0}" ));
207 DATA(insert ( 2829      float8_regr_accum       float8_corr                             0       1022    "{0,0,0,0,0,0}" ));
208
209 /* boolean-and and boolean-or */
210 DATA(insert ( 2517      booland_statefunc       -                       0       16              _null_ ));
211 DATA(insert ( 2518      boolor_statefunc        -                       0       16              _null_ ));
212 DATA(insert ( 2519      booland_statefunc       -                       0       16              _null_ ));
213
214 /* bitwise integer */
215 DATA(insert ( 2236 int2and                -                                     0       21              _null_ ));
216 DATA(insert ( 2237 int2or                 -                                     0       21              _null_ ));
217 DATA(insert ( 2238 int4and                -                                     0       23              _null_ ));
218 DATA(insert ( 2239 int4or                 -                                     0       23              _null_ ));
219 DATA(insert ( 2240 int8and                -                                     0       20              _null_ ));
220 DATA(insert ( 2241 int8or                 -                                     0       20              _null_ ));
221 DATA(insert ( 2242 bitand                 -                                     0       1560    _null_ ));
222 DATA(insert ( 2243 bitor                  -                                     0       1560    _null_ ));
223
224 /*
225  * prototypes for functions in pg_aggregate.c
226  */
227 extern void AggregateCreate(const char *aggName,
228                                 Oid aggNamespace,
229                                 Oid *aggArgTypes,
230                                 int numArgs,
231                                 List *aggtransfnName,
232                                 List *aggfinalfnName,
233                                 List *aggsortopName,
234                                 Oid aggTransType,
235                                 const char *agginitval);
236
237 #endif   /* PG_AGGREGATE_H */