1 /*-------------------------------------------------------------------------
4 * definition of the system "attribute" relation (pg_attribute)
5 * along with the relation's initial contents.
8 * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
9 * Portions Copyright (c) 1994, Regents of the University of California
11 * $Id: pg_attribute.h,v 1.56 2000/05/28 17:56:16 tgl Exp $
14 * the genbki.sh script reads this file and generates .bki
15 * information from the DATA() statements.
17 * utils/cache/relcache.c requires some hard-coded tuple descriptors
18 * for some of the system catalogs so if the schema for any of
19 * these changes, be sure and change the appropriate Schema_xxx
22 *-------------------------------------------------------------------------
24 #ifndef PG_ATTRIBUTE_H
25 #define PG_ATTRIBUTE_H
28 * postgres.h contains the system type definintions and the
29 * CATALOG(), BOOTSTRAP and DATA() sugar words so this file
30 * can be read by both genbki.sh and the C compiler.
35 * pg_attribute definition. cpp turns this into
36 * typedef struct FormData_pg_attribute
38 * If you change the following, make sure you change the structs for
39 * system attributes in heap.c and index.c also.
42 CATALOG(pg_attribute) BOOTSTRAP
44 Oid attrelid; /* OID of relation containing this
50 * atttypid is the OID of the instance in Catalog Class pg_type that
51 * defines the data type of this attribute (e.g. int4). Information
52 * in that instance is redundant with the attlen, attbyval, and
53 * attalign attributes of this instance, so they had better match or
60 * attdisbursion is the disbursion statistic of the column (0.0 to
61 * 1.0), or zero if the statistic has not been calculated, or -1.0 if
62 * VACUUM found that the column contains no duplicate entries (in
63 * which case the disbursion should be taken as 1.0/numberOfRows for
64 * the current table size). The -1.0 hack is useful because the
65 * number of rows may be updated more often than attdisbursion is. We
66 * assume that the column will retain its no-duplicate-entry property.
67 * (Perhaps this should be driven off the existence of a UNIQUE index
68 * for the column, instead of being a statistical guess?)
74 * attlen is a copy of the typlen field from pg_type for this
75 * attribute. See atttypid above. See struct Form_pg_type for
82 * attnum is the "attribute number" for the attribute: A value that
83 * uniquely identifies this attribute within its class. For user
84 * attributes, Attribute numbers are greater than 0 and not greater
85 * than the number of attributes in the class. I.e. if the Class
86 * pg_class says that Class XYZ has 10 attributes, then the user
87 * attribute numbers in Class pg_attribute must be 1-10.
89 * System attributes have attribute numbers less than 0 that are unique
90 * within the class, but not constrained to any particular range.
92 * Note that (attnum - 1) is often used as the index to an array.
95 int4 attnelems; /* number of dimensions, if an array type */
100 * fastgetattr() uses attcacheoff to cache byte offsets of attributes
101 * in heap tuples. The value actually stored in pg_attribute (-1)
102 * indicates no cached value. But when we copy these tuples into a
103 * tuple descriptor, we may then update attcacheoff in the copies.
104 * This speeds up the attribute walking process.
110 * atttypmod records type-specific data supplied at table creation
111 * time (for example, the max length of a varchar field). It is
112 * passed to type-specific input and output functions as the third
113 * argument. The value will generally be -1 for types that do not need
120 * attbyval is a copy of the typbyval field from pg_type for this
121 * attribute. See atttypid above. See struct Form_pg_type for
128 * attstorage tells for VARLENA attributes, what the heap access
129 * methods can do to it if a given tuple doesn't fit into a page.
130 * Possible values are 'p': Value must be stored plain allways 'e':
131 * Value can be stored in "secondary" relation (if relation has
132 * rellongrelid attached) 'c': Value can be stored compressed inline
133 * 'x': Value can be stored compressed inline or in "secondary".
135 * Note: compressed storage
142 * attalign is a copy of the typalign field from pg_type for this
143 * attribute. See atttypid above. See struct Form_pg_type for
149 /* This flag represents the "NOT NULL" constraint */
152 /* Has DEFAULT value or not */
153 } FormData_pg_attribute;
156 * someone should figure out how to do this properly. (The problem is
157 * the size of the C struct is not the same as the size of the tuple.)
159 #define ATTRIBUTE_TUPLE_SIZE \
160 (offsetof(FormData_pg_attribute,atthasdef) + sizeof(char))
163 * Form_pg_attribute corresponds to a pointer to a tuple with
164 * the format of pg_attribute relation.
167 typedef FormData_pg_attribute *Form_pg_attribute;
170 * compiler constants for pg_attribute
174 #define Natts_pg_attribute 15
175 #define Anum_pg_attribute_attrelid 1
176 #define Anum_pg_attribute_attname 2
177 #define Anum_pg_attribute_atttypid 3
178 #define Anum_pg_attribute_attdisbursion 4
179 #define Anum_pg_attribute_attlen 5
180 #define Anum_pg_attribute_attnum 6
181 #define Anum_pg_attribute_attnelems 7
182 #define Anum_pg_attribute_attcacheoff 8
183 #define Anum_pg_attribute_atttypmod 9
184 #define Anum_pg_attribute_attbyval 10
185 #define Anum_pg_attribute_attstorage 11
186 #define Anum_pg_attribute_attisset 12
187 #define Anum_pg_attribute_attalign 13
188 #define Anum_pg_attribute_attnotnull 14
189 #define Anum_pg_attribute_atthasdef 15
192 #ifdef _DROP_COLUMN_HACK__
194 * CONSTANT and MACROS for DROP COLUMN implementation
196 #define DROP_COLUMN_OFFSET -20
197 #define COLUMN_IS_DROPPED(attribute) ((attribute)->attnum <= DROP_COLUMN_OFFSET)
198 #define DROPPED_COLUMN_INDEX(attidx) (DROP_COLUMN_OFFSET - attidx)
199 #define ATTRIBUTE_DROP_COLUMN(attribute) \
200 Assert((attribute)->attnum > 0); \
201 (attribute)->attnum = DROPPED_COLUMN_INDEX((attribute)->attnum); \
202 (attribute)->atttypid = (Oid) -1; \
203 (attribute)->attnotnull = false; \
204 (attribute)->atthasdef = false;
205 #endif /* _DROP_COLUMN_HACK__ */
207 * SCHEMA_ macros for declaring hardcoded tuple descriptors.
208 * these are used in utils/cache/relcache.c
210 #define SCHEMA_NAME(x) CppConcat(Name_,x)
211 #define SCHEMA_DESC(x) CppConcat(Desc_,x)
212 #define SCHEMA_NATTS(x) CppConcat(Natts_,x)
213 #define SCHEMA_DEF(x) \
214 FormData_pg_attribute \
215 SCHEMA_DESC(x) [ SCHEMA_NATTS(x) ] = \
217 CppConcat(Schema_,x) \
222 * initial contents of pg_attribute
230 #define Schema_pg_type \
231 { 1247, {"typname"}, 19, 0, NAMEDATALEN, 1, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
232 { 1247, {"typowner"}, 23, 0, 4, 2, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
233 { 1247, {"typlen"}, 21, 0, 2, 3, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
234 { 1247, {"typprtlen"}, 21, 0, 2, 4, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
235 { 1247, {"typbyval"}, 16, 0, 1, 5, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
236 { 1247, {"typtype"}, 18, 0, 1, 6, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
237 { 1247, {"typisdefined"}, 16, 0, 1, 7, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
238 { 1247, {"typdelim"}, 18, 0, 1, 8, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
239 { 1247, {"typrelid"}, 26, 0, 4, 9, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
240 { 1247, {"typelem"}, 26, 0, 4, 10, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
241 { 1247, {"typinput"}, 24, 0, 4, 11, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
242 { 1247, {"typoutput"}, 24, 0, 4, 12, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
243 { 1247, {"typreceive"}, 24, 0, 4, 13, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
244 { 1247, {"typsend"}, 24, 0, 4, 14, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
245 { 1247, {"typalign"}, 18, 0, 1, 15, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
246 { 1247, {"typdefault"}, 25, 0, -1, 16, 0, -1, -1, '\0' , 'p', '\0', 'i', '\0', '\0' }
248 DATA(insert OID = 0 ( 1247 typname 19 0 NAMEDATALEN 1 0 -1 -1 f p f i f f));
249 DATA(insert OID = 0 ( 1247 typowner 23 0 4 2 0 -1 -1 t p f i f f));
250 DATA(insert OID = 0 ( 1247 typlen 21 0 2 3 0 -1 -1 t p f s f f));
251 DATA(insert OID = 0 ( 1247 typprtlen 21 0 2 4 0 -1 -1 t p f s f f));
252 DATA(insert OID = 0 ( 1247 typbyval 16 0 1 5 0 -1 -1 t p f c f f));
253 DATA(insert OID = 0 ( 1247 typtype 18 0 1 6 0 -1 -1 t p f c f f));
254 DATA(insert OID = 0 ( 1247 typisdefined 16 0 1 7 0 -1 -1 t p f c f f));
255 DATA(insert OID = 0 ( 1247 typdelim 18 0 1 8 0 -1 -1 t p f c f f));
256 DATA(insert OID = 0 ( 1247 typrelid 26 0 4 9 0 -1 -1 t p f i f f));
257 DATA(insert OID = 0 ( 1247 typelem 26 0 4 10 0 -1 -1 t p f i f f));
258 DATA(insert OID = 0 ( 1247 typinput 24 0 4 11 0 -1 -1 t p f i f f));
259 DATA(insert OID = 0 ( 1247 typoutput 24 0 4 12 0 -1 -1 t p f i f f));
260 DATA(insert OID = 0 ( 1247 typreceive 24 0 4 13 0 -1 -1 t p f i f f));
261 DATA(insert OID = 0 ( 1247 typsend 24 0 4 14 0 -1 -1 t p f i f f));
262 DATA(insert OID = 0 ( 1247 typalign 18 0 1 15 0 -1 -1 t p f c f f));
263 DATA(insert OID = 0 ( 1247 typdefault 25 0 -1 16 0 -1 -1 f p f i f f));
264 DATA(insert OID = 0 ( 1247 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
265 DATA(insert OID = 0 ( 1247 oid 26 0 4 -2 0 -1 -1 t p f i f f));
266 DATA(insert OID = 0 ( 1247 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
267 DATA(insert OID = 0 ( 1247 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
268 DATA(insert OID = 0 ( 1247 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
269 DATA(insert OID = 0 ( 1247 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
275 DATA(insert OID = 0 ( 1262 datname 19 0 NAMEDATALEN 1 0 -1 -1 f p f i f f));
276 DATA(insert OID = 0 ( 1262 datdba 23 0 4 2 0 -1 -1 t p f i f f));
277 DATA(insert OID = 0 ( 1262 encoding 23 0 4 3 0 -1 -1 t p f i f f));
278 DATA(insert OID = 0 ( 1262 datpath 25 0 -1 4 0 -1 -1 f p f i f f));
279 DATA(insert OID = 0 ( 1262 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
280 DATA(insert OID = 0 ( 1262 oid 26 0 4 -2 0 -1 -1 t p f i f f));
281 DATA(insert OID = 0 ( 1262 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
282 DATA(insert OID = 0 ( 1262 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
283 DATA(insert OID = 0 ( 1262 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
284 DATA(insert OID = 0 ( 1262 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
290 #define Schema_pg_proc \
291 { 1255, {"proname"}, 19, 0, NAMEDATALEN, 1, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
292 { 1255, {"proowner"}, 23, 0, 4, 2, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
293 { 1255, {"prolang"}, 26, 0, 4, 3, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
294 { 1255, {"proisinh"}, 16, 0, 1, 4, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
295 { 1255, {"proistrusted"}, 16, 0, 1, 5, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
296 { 1255, {"proiscachable"}, 16, 0, 1, 6, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
297 { 1255, {"proisstrict"}, 16, 0, 1, 7, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
298 { 1255, {"pronargs"}, 21, 0, 2, 8, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
299 { 1255, {"proretset"}, 16, 0, 1, 9, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
300 { 1255, {"prorettype"}, 26, 0, 4, 10, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
301 { 1255, {"proargtypes"}, 30, 0, INDEX_MAX_KEYS*4, 11, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
302 { 1255, {"probyte_pct"}, 23, 0, 4, 12, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
303 { 1255, {"properbyte_cpu"}, 23, 0, 4, 13, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
304 { 1255, {"propercall_cpu"}, 23, 0, 4, 14, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
305 { 1255, {"prooutin_ratio"}, 23, 0, 4, 15, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
306 { 1255, {"prosrc"}, 25, 0, -1, 16, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
307 { 1255, {"probin"}, 17, 0, -1, 17, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }
309 DATA(insert OID = 0 ( 1255 proname 19 0 NAMEDATALEN 1 0 -1 -1 f p f i f f));
310 DATA(insert OID = 0 ( 1255 proowner 23 0 4 2 0 -1 -1 t p f i f f));
311 DATA(insert OID = 0 ( 1255 prolang 26 0 4 3 0 -1 -1 t p f i f f));
312 DATA(insert OID = 0 ( 1255 proisinh 16 0 1 4 0 -1 -1 t p f c f f));
313 DATA(insert OID = 0 ( 1255 proistrusted 16 0 1 5 0 -1 -1 t p f c f f));
314 DATA(insert OID = 0 ( 1255 proiscachable 16 0 1 6 0 -1 -1 t p f c f f));
315 DATA(insert OID = 0 ( 1255 proisstrict 16 0 1 7 0 -1 -1 t p f c f f));
316 DATA(insert OID = 0 ( 1255 pronargs 21 0 2 8 0 -1 -1 t p f s f f));
317 DATA(insert OID = 0 ( 1255 proretset 16 0 1 9 0 -1 -1 t p f c f f));
318 DATA(insert OID = 0 ( 1255 prorettype 26 0 4 10 0 -1 -1 t p f i f f));
319 DATA(insert OID = 0 ( 1255 proargtypes 30 0 INDEX_MAX_KEYS*4 11 0 -1 -1 f p f i f f));
320 DATA(insert OID = 0 ( 1255 probyte_pct 23 0 4 12 0 -1 -1 t p f i f f));
321 DATA(insert OID = 0 ( 1255 properbyte_cpu 23 0 4 13 0 -1 -1 t p f i f f));
322 DATA(insert OID = 0 ( 1255 propercall_cpu 23 0 4 14 0 -1 -1 t p f i f f));
323 DATA(insert OID = 0 ( 1255 prooutin_ratio 23 0 4 15 0 -1 -1 t p f i f f));
324 DATA(insert OID = 0 ( 1255 prosrc 25 0 -1 16 0 -1 -1 f p f i f f));
325 DATA(insert OID = 0 ( 1255 probin 17 0 -1 17 0 -1 -1 f p f i f f));
326 DATA(insert OID = 0 ( 1255 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
327 DATA(insert OID = 0 ( 1255 oid 26 0 4 -2 0 -1 -1 t p f i f f));
328 DATA(insert OID = 0 ( 1255 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
329 DATA(insert OID = 0 ( 1255 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
330 DATA(insert OID = 0 ( 1255 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
331 DATA(insert OID = 0 ( 1255 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
337 DATA(insert OID = 0 ( 1260 usename 19 0 NAMEDATALEN 1 0 -1 -1 f p f i f f));
338 DATA(insert OID = 0 ( 1260 usesysid 23 0 4 2 0 -1 -1 t p f i f f));
339 DATA(insert OID = 0 ( 1260 usecreatedb 16 0 1 3 0 -1 -1 t p f c f f));
340 DATA(insert OID = 0 ( 1260 usetrace 16 0 1 4 0 -1 -1 t p f c f f));
341 DATA(insert OID = 0 ( 1260 usesuper 16 0 1 5 0 -1 -1 t p f c f f));
342 DATA(insert OID = 0 ( 1260 usecatupd 16 0 1 6 0 -1 -1 t p f c f f));
343 DATA(insert OID = 0 ( 1260 passwd 25 0 -1 7 0 -1 -1 f p f i f f));
344 DATA(insert OID = 0 ( 1260 valuntil 702 0 4 8 0 -1 -1 t p f i f f));
345 DATA(insert OID = 0 ( 1260 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
346 DATA(insert OID = 0 ( 1260 oid 26 0 4 -2 0 -1 -1 t p f i f f));
347 DATA(insert OID = 0 ( 1260 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
348 DATA(insert OID = 0 ( 1260 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
349 DATA(insert OID = 0 ( 1260 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
350 DATA(insert OID = 0 ( 1260 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
356 DATA(insert OID = 0 ( 1261 groname 19 0 NAMEDATALEN 1 0 -1 -1 f p f i f f));
357 DATA(insert OID = 0 ( 1261 grosysid 23 0 4 2 0 -1 -1 t p f i f f));
358 DATA(insert OID = 0 ( 1261 grolist 1007 0 -1 3 0 -1 -1 f p f i f f));
359 DATA(insert OID = 0 ( 1261 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
360 DATA(insert OID = 0 ( 1261 oid 26 0 4 -2 0 -1 -1 t p f i f f));
361 DATA(insert OID = 0 ( 1261 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
362 DATA(insert OID = 0 ( 1261 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
363 DATA(insert OID = 0 ( 1261 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
364 DATA(insert OID = 0 ( 1261 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
370 #define Schema_pg_attribute \
371 { 1249, {"attrelid"}, 26, 0, 4, 1, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
372 { 1249, {"attname"}, 19, 0, NAMEDATALEN, 2, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
373 { 1249, {"atttypid"}, 26, 0, 4, 3, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
374 { 1249, {"attdisbursion"}, 700, 0, 4, 4, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
375 { 1249, {"attlen"}, 21, 0, 2, 5, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
376 { 1249, {"attnum"}, 21, 0, 2, 6, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
377 { 1249, {"attnelems"}, 23, 0, 4, 7, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
378 { 1249, {"attcacheoff"}, 23, 0, 4, 8, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
379 { 1249, {"atttypmod"}, 23, 0, 4, 9, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
380 { 1249, {"attbyval"}, 16, 0, 1, 10, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
381 { 1249, {"attstorage"}, 18, 0, 1, 11, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
382 { 1249, {"attisset"}, 16, 0, 1, 12, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
383 { 1249, {"attalign"}, 18, 0, 1, 13, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
384 { 1249, {"attnotnull"}, 16, 0, 1, 14, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
385 { 1249, {"atthasdef"}, 16, 0, 1, 15, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }
387 DATA(insert OID = 0 ( 1249 attrelid 26 0 4 1 0 -1 -1 t p f i f f));
388 DATA(insert OID = 0 ( 1249 attname 19 0 NAMEDATALEN 2 0 -1 -1 f p f i f f));
389 DATA(insert OID = 0 ( 1249 atttypid 26 0 4 3 0 -1 -1 t p f i f f));
390 DATA(insert OID = 0 ( 1249 attdisbursion 700 0 4 4 0 -1 -1 f p f i f f));
391 DATA(insert OID = 0 ( 1249 attlen 21 0 2 5 0 -1 -1 t p f s f f));
392 DATA(insert OID = 0 ( 1249 attnum 21 0 2 6 0 -1 -1 t p f s f f));
393 DATA(insert OID = 0 ( 1249 attnelems 23 0 4 7 0 -1 -1 t p f i f f));
394 DATA(insert OID = 0 ( 1249 attcacheoff 23 0 4 8 0 -1 -1 t p f i f f));
395 DATA(insert OID = 0 ( 1249 atttypmod 23 0 4 9 0 -1 -1 t p f i f f));
396 DATA(insert OID = 0 ( 1249 attbyval 16 0 1 10 0 -1 -1 t p f c f f));
397 DATA(insert OID = 0 ( 1249 attstorage 18 0 1 11 0 -1 -1 t p f c f f));
398 DATA(insert OID = 0 ( 1249 attisset 16 0 1 12 0 -1 -1 t p f c f f));
399 DATA(insert OID = 0 ( 1249 attalign 18 0 1 13 0 -1 -1 t p f c f f));
400 DATA(insert OID = 0 ( 1249 attnotnull 16 0 1 14 0 -1 -1 t p f c f f));
401 DATA(insert OID = 0 ( 1249 atthasdef 16 0 1 15 0 -1 -1 t p f c f f));
402 DATA(insert OID = 0 ( 1249 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
403 DATA(insert OID = 0 ( 1249 oid 26 0 4 -2 0 -1 -1 t p f i f f));
404 DATA(insert OID = 0 ( 1249 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
405 DATA(insert OID = 0 ( 1249 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
406 DATA(insert OID = 0 ( 1249 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
407 DATA(insert OID = 0 ( 1249 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
413 #define Schema_pg_class \
414 { 1259, {"relname"}, 19, 0, NAMEDATALEN, 1, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }, \
415 { 1259, {"reltype"}, 26, 0, 4, 2, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
416 { 1259, {"relowner"}, 23, 0, 4, 3, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
417 { 1259, {"relam"}, 26, 0, 4, 4, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
418 { 1259, {"relpages"}, 23, 0, 4, 5, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
419 { 1259, {"reltuples"}, 23, 0, 4, 6, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
420 { 1259, {"rellongrelid"}, 26, 0, 4, 7, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }, \
421 { 1259, {"relhasindex"}, 16, 0, 1, 8, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
422 { 1259, {"relisshared"}, 16, 0, 1, 9, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
423 { 1259, {"relkind"}, 18, 0, 1, 10, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
424 { 1259, {"relnatts"}, 21, 0, 2, 11, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
425 { 1259, {"relchecks"}, 21, 0, 2, 12, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
426 { 1259, {"reltriggers"}, 21, 0, 2, 13, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
427 { 1259, {"relukeys"}, 21, 0, 2, 14, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
428 { 1259, {"relfkeys"}, 21, 0, 2, 15, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
429 { 1259, {"relrefs"}, 21, 0, 2, 16, 0, -1, -1, '\001', 'p', '\0', 's', '\0', '\0' }, \
430 { 1259, {"relhaspkey"}, 16, 0, 1, 17, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
431 { 1259, {"relhasrules"}, 16, 0, 1, 18, 0, -1, -1, '\001', 'p', '\0', 'c', '\0', '\0' }, \
432 { 1259, {"relacl"}, 1034, 0, -1, 19, 0, -1, -1, '\0', 'p', '\0', 'i', '\0', '\0' }
434 DATA(insert OID = 0 ( 1259 relname 19 0 NAMEDATALEN 1 0 -1 -1 f p f i f f));
435 DATA(insert OID = 0 ( 1259 reltype 26 0 4 2 0 -1 -1 t p f i f f));
436 DATA(insert OID = 0 ( 1259 relowner 23 0 4 3 0 -1 -1 t p f i f f));
437 DATA(insert OID = 0 ( 1259 relam 26 0 4 4 0 -1 -1 t p f i f f));
438 DATA(insert OID = 0 ( 1259 relpages 23 0 4 5 0 -1 -1 t p f i f f));
439 DATA(insert OID = 0 ( 1259 reltuples 23 0 4 6 0 -1 -1 t p f i f f));
440 DATA(insert OID = 0 ( 1259 rellongrelid 26 0 4 7 0 -1 -1 t p f i f f));
441 DATA(insert OID = 0 ( 1259 relhasindex 16 0 1 8 0 -1 -1 t p f c f f));
442 DATA(insert OID = 0 ( 1259 relisshared 16 0 1 9 0 -1 -1 t p f c f f));
443 DATA(insert OID = 0 ( 1259 relkind 18 0 1 10 0 -1 -1 t p f c f f));
444 DATA(insert OID = 0 ( 1259 relnatts 21 0 2 11 0 -1 -1 t p f s f f));
445 DATA(insert OID = 0 ( 1259 relchecks 21 0 2 12 0 -1 -1 t p f s f f));
446 DATA(insert OID = 0 ( 1259 reltriggers 21 0 2 13 0 -1 -1 t p f s f f));
447 DATA(insert OID = 0 ( 1259 relukeys 21 0 2 14 0 -1 -1 t p f s f f));
448 DATA(insert OID = 0 ( 1259 relfkeys 21 0 2 15 0 -1 -1 t p f s f f));
449 DATA(insert OID = 0 ( 1259 relrefs 21 0 2 16 0 -1 -1 t p f s f f));
450 DATA(insert OID = 0 ( 1259 relhaspkey 16 0 1 17 0 -1 -1 t p f c f f));
451 DATA(insert OID = 0 ( 1259 relhasrules 16 0 1 18 0 -1 -1 t p f c f f));
452 DATA(insert OID = 0 ( 1259 relacl 1034 0 -1 19 0 -1 -1 f p f i f f));
453 DATA(insert OID = 0 ( 1259 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
454 DATA(insert OID = 0 ( 1259 oid 26 0 4 -2 0 -1 -1 t p f i f f));
455 DATA(insert OID = 0 ( 1259 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
456 DATA(insert OID = 0 ( 1259 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
457 DATA(insert OID = 0 ( 1259 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
458 DATA(insert OID = 0 ( 1259 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
464 DATA(insert OID = 0 ( 1215 adrelid 26 0 4 1 0 -1 -1 t p f i f f));
465 DATA(insert OID = 0 ( 1215 adnum 21 0 2 2 0 -1 -1 t p f s f f));
466 DATA(insert OID = 0 ( 1215 adbin 25 0 -1 3 0 -1 -1 f p f i f f));
467 DATA(insert OID = 0 ( 1215 adsrc 25 0 -1 4 0 -1 -1 f p f i f f));
468 DATA(insert OID = 0 ( 1215 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
469 DATA(insert OID = 0 ( 1215 oid 26 0 4 -2 0 -1 -1 t p f i f f));
470 DATA(insert OID = 0 ( 1215 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
471 DATA(insert OID = 0 ( 1215 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
472 DATA(insert OID = 0 ( 1215 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
473 DATA(insert OID = 0 ( 1215 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
479 DATA(insert OID = 0 ( 1216 rcrelid 26 0 4 1 0 -1 -1 t p f i f f));
480 DATA(insert OID = 0 ( 1216 rcname 19 0 NAMEDATALEN 2 0 -1 -1 f p f i f f));
481 DATA(insert OID = 0 ( 1216 rcbin 25 0 -1 3 0 -1 -1 f p f i f f));
482 DATA(insert OID = 0 ( 1216 rcsrc 25 0 -1 4 0 -1 -1 f p f i f f));
483 DATA(insert OID = 0 ( 1216 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
484 DATA(insert OID = 0 ( 1216 oid 26 0 4 -2 0 -1 -1 t p f i f f));
485 DATA(insert OID = 0 ( 1216 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
486 DATA(insert OID = 0 ( 1216 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
487 DATA(insert OID = 0 ( 1216 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
488 DATA(insert OID = 0 ( 1216 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
494 DATA(insert OID = 0 ( 1219 tgrelid 26 0 4 1 0 -1 -1 t p f i f f));
495 DATA(insert OID = 0 ( 1219 tgname 19 0 NAMEDATALEN 2 0 -1 -1 f p f i f f));
496 DATA(insert OID = 0 ( 1219 tgfoid 26 0 4 3 0 -1 -1 t p f i f f));
497 DATA(insert OID = 0 ( 1219 tgtype 21 0 2 4 0 -1 -1 t p f s f f));
498 DATA(insert OID = 0 ( 1219 tgenabled 16 0 1 5 0 -1 -1 t p f c f f));
499 DATA(insert OID = 0 ( 1219 tgisconstraint 16 0 1 6 0 -1 -1 t p f c f f));
500 DATA(insert OID = 0 ( 1219 tgconstrname 19 0 NAMEDATALEN 7 0 -1 -1 f p f i f f));
501 DATA(insert OID = 0 ( 1219 tgconstrrelid 26 0 4 8 0 -1 -1 t p f i f f));
503 DATA(insert OID = 0 ( 1219 tgdeferrable 16 0 1 9 0 -1 -1 t p f c f f));
504 DATA(insert OID = 0 ( 1219 tginitdeferred 16 0 1 10 0 -1 -1 t p f c f f));
505 DATA(insert OID = 0 ( 1219 tgnargs 21 0 2 11 0 -1 -1 t p f s f f));
506 DATA(insert OID = 0 ( 1219 tgattr 22 0 INDEX_MAX_KEYS*2 12 0 -1 -1 f p f i f f));
507 DATA(insert OID = 0 ( 1219 tgargs 17 0 -1 13 0 -1 -1 f p f i f f));
508 DATA(insert OID = 0 ( 1219 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
509 DATA(insert OID = 0 ( 1219 oid 26 0 4 -2 0 -1 -1 t p f i f f));
510 DATA(insert OID = 0 ( 1219 xmin 28 0 4 -3 0 -1 -1 t p f i f f));
511 DATA(insert OID = 0 ( 1219 cmin 29 0 4 -4 0 -1 -1 t p f i f f));
512 DATA(insert OID = 0 ( 1219 xmax 28 0 4 -5 0 -1 -1 t p f i f f));
513 DATA(insert OID = 0 ( 1219 cmax 29 0 4 -6 0 -1 -1 t p f i f f));
516 * pg_variable - this relation is modified by special purpose access
517 * method code. The following is garbage but is needed
518 * so that the reldesc code works properly.
521 #define Schema_pg_variable \
522 { 1264, {"varfoo"}, 26, 0, 4, 1, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }
524 DATA(insert OID = 0 ( 1264 varfoo 26 0 4 1 0 -1 -1 t p f i f f));
527 * pg_log - this relation is modified by special purpose access
528 * method code. The following is garbage but is needed
529 * so that the reldesc code works properly.
532 #define Schema_pg_log \
533 { 1269, {"logfoo"}, 26, 0, 4, 1, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }
535 DATA(insert OID = 0 ( 1269 logfoo 26 0 4 1 0 -1 -1 t p f i f f));
538 * pg_xactlock - this relation is modified by special purpose access
539 * method code. The following is garbage but is needed
540 * so that the reldesc code works properly.
543 #define Schema_pg_xactlock \
544 { 376, {"xactlockfoo"}, 26, 0, 4, 1, 0, -1, -1, '\001', 'p', '\0', 'i', '\0', '\0' }
546 DATA(insert OID = 0 ( 376 xactlockfoo 26 0 4 1 0 -1 -1 t p f i f f));
548 #endif /* PG_ATTRIBUTE_H */