OSDN Git Service

Update copyrights to 2003.
[pg-rex/syncrep.git] / 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-2003, PostgreSQL Global Development Group
9  * Portions Copyright (c) 1994, Regents of the University of California
10  *
11  * $Id: pg_aggregate.h,v 1.41 2003/08/04 02:40:10 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 /* ----------------
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.
26  * ----------------
27  */
28
29 /* ----------------------------------------------------------------
30  *              pg_aggregate definition.
31  *
32  *              cpp turns this into typedef struct FormData_pg_aggregate
33  *
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  * ----------------------------------------------------------------
40  */
41 CATALOG(pg_aggregate) BKI_WITHOUT_OIDS
42 {
43         regproc         aggfnoid;
44         regproc         aggtransfn;
45         regproc         aggfinalfn;
46         Oid                     aggtranstype;
47         text            agginitval;             /* VARIABLE LENGTH FIELD */
48 } FormData_pg_aggregate;
49
50 /* ----------------
51  *              Form_pg_aggregate corresponds to a pointer to a tuple with
52  *              the format of pg_aggregate relation.
53  * ----------------
54  */
55 typedef FormData_pg_aggregate *Form_pg_aggregate;
56
57 /* ----------------
58  *              compiler constants for pg_aggregate
59  * ----------------
60  */
61
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
68
69
70 /* ----------------
71  * initial contents of pg_aggregate
72  * ---------------
73  */
74
75 /* avg */
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}" ));
83
84 /* sum */
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_ ));
93
94 /* max */
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_ ));
111
112 /* min */
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_ ));
129
130 /*
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 ...
133  */
134 DATA(insert ( 2147      int8inc         -                                        20             0 ));
135
136 /* variance */
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}" ));
143
144 /* stddev */
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}" ));
151
152 /*
153  * prototypes for functions in pg_aggregate.c
154  */
155 extern void AggregateCreate(const char *aggName,
156                                 Oid aggNamespace,
157                                 List *aggtransfnName,
158                                 List *aggfinalfnName,
159                                 Oid aggBaseType,
160                                 Oid aggTransType,
161                                 const char *agginitval);
162
163 #endif   /* PG_AGGREGATE_H */