pg_attribute.h 27.8 KB
Newer Older
1 2
/*-------------------------------------------------------------------------
 *
3
 * pg_attribute.h
4 5
 *	  definition of the system "attribute" relation (pg_attribute)
 *	  along with the relation's initial contents.
6 7
 *
 *
8
 * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
B
Add:  
Bruce Momjian 已提交
9
 * Portions Copyright (c) 1994, Regents of the University of California
10
 *
11
 * $Id: pg_attribute.h,v 1.72 2001/05/14 21:58:10 momjian Exp $
12 13
 *
 * NOTES
14 15
 *	  the genbki.sh script reads this file and generates .bki
 *	  information from the DATA() statements.
16
 *
17 18 19 20
 *	  utils/cache/relcache.c requires some hard-coded tuple descriptors
 *	  for some of the system catalogs so if the schema for any of
 *	  these changes, be sure and change the appropriate Schema_xxx
 *	  macros!  -cim 2/5/91
21 22 23 24 25
 *
 *-------------------------------------------------------------------------
 */
#ifndef PG_ATTRIBUTE_H
#define PG_ATTRIBUTE_H
26

27
/* ----------------
28 29 30
 *		postgres.h contains the system type definintions and the
 *		CATALOG(), BOOTSTRAP and DATA() sugar words so this file
 *		can be read by both genbki.sh and the C compiler.
31 32 33 34
 * ----------------
 */

/* ----------------
35 36
 *		pg_attribute definition.  cpp turns this into
 *		typedef struct FormData_pg_attribute
37
 *
38
 *		If you change the following, make sure you change the structs for
39
 *		system attributes in catalog/heap.c also.
40 41
 * ----------------
 */
42 43
CATALOG(pg_attribute) BOOTSTRAP
{
44 45
	Oid			attrelid;		/* OID of relation containing this
								 * attribute */
46
	NameData	attname;		/* name of attribute */
47

48 49 50 51 52 53 54
	/*
	 * atttypid is the OID of the instance in Catalog Class pg_type that
	 * defines the data type of this attribute (e.g. int4).  Information
	 * in that instance is redundant with the attlen, attbyval, and
	 * attalign attributes of this instance, so they had better match or
	 * Postgres will fail.
	 */
55
	Oid			atttypid;
56

57
	/*
58 59 60
	 * attstattarget is the target number of statistics datapoints to collect
	 * during VACUUM ANALYZE of this column.  A zero here indicates that we
	 * do not wish to collect any stats about this column.
61
	 */
62
	int4		attstattarget;
63

64 65
	/*
	 * attlen is a copy of the typlen field from pg_type for this
66
	 * attribute.  See atttypid comments above.
67
	 */
68
	int2		attlen;
69

70 71 72 73 74 75 76 77 78 79 80 81 82
	/*
	 * attnum is the "attribute number" for the attribute:	A value that
	 * uniquely identifies this attribute within its class. For user
	 * attributes, Attribute numbers are greater than 0 and not greater
	 * than the number of attributes in the class. I.e. if the Class
	 * pg_class says that Class XYZ has 10 attributes, then the user
	 * attribute numbers in Class pg_attribute must be 1-10.
	 *
	 * System attributes have attribute numbers less than 0 that are unique
	 * within the class, but not constrained to any particular range.
	 *
	 * Note that (attnum - 1) is often used as the index to an array.
	 */
83
	int2		attnum;
84

85 86 87 88 89
	/*
	 * attndims is the declared number of dimensions, if an array type,
	 * otherwise zero.
	 */
	int4		attndims;
90

91 92
	/*
	 * fastgetattr() uses attcacheoff to cache byte offsets of attributes
93
	 * in heap tuples.	The value actually stored in pg_attribute (-1)
94 95 96 97
	 * indicates no cached value.  But when we copy these tuples into a
	 * tuple descriptor, we may then update attcacheoff in the copies.
	 * This speeds up the attribute walking process.
	 */
98
	int4		attcacheoff;
99

100
	/*
101 102 103 104 105
	 * atttypmod records type-specific data supplied at table creation
	 * time (for example, the max length of a varchar field).  It is
	 * passed to type-specific input and output functions as the third
	 * argument. The value will generally be -1 for types that do not need
	 * typmod.
106
	 */
107
	int4		atttypmod;
108

109 110
	/*
	 * attbyval is a copy of the typbyval field from pg_type for this
111
	 * attribute.  See atttypid comments above.
112
	 */
113
	bool		attbyval;
114

115
	/*----------
116 117
	 * attstorage tells for VARLENA attributes, what the heap access
	 * methods can do to it if a given tuple doesn't fit into a page.
118 119 120
	 * Possible values are
	 *		'p': Value must be stored plain always
	 *		'e': Value can be stored in "secondary" relation (if relation
121
	 *			 has one, see pg_class.reltoastrelid)
122 123
	 *		'm': Value can be stored compressed inline
	 *		'x': Value can be stored compressed inline or in "secondary"
124 125
	 * Note that 'm' fields can also be moved out to secondary storage,
	 * but only as a last resort ('e' and 'x' fields are moved first).
126
	 *----------
127
	 */
128
	char		attstorage;
129

130
	/* This flag indicates that the attribute is really a set */
131
	bool		attisset;
132

133 134
	/*
	 * attalign is a copy of the typalign field from pg_type for this
135
	 * attribute.  See atttypid comments above.
136
	 */
137
	char		attalign;
138

139
	/* This flag represents the "NOT NULL" constraint */
140
	bool		attnotnull;
141

142
	/* Has DEFAULT value or not */
143
	bool		atthasdef;
144 145 146 147
} FormData_pg_attribute;

/*
 * someone should figure out how to do this properly. (The problem is
148 149
 * the size of the C struct is not the same as the size of the tuple
 * because of alignment padding at the end of the struct.)
150 151
 */
#define ATTRIBUTE_TUPLE_SIZE \
152
	(offsetof(FormData_pg_attribute,atthasdef) + sizeof(bool))
153 154

/* ----------------
155 156
 *		Form_pg_attribute corresponds to a pointer to a tuple with
 *		the format of pg_attribute relation.
157 158
 * ----------------
 */
159
typedef FormData_pg_attribute *Form_pg_attribute;
160 161

/* ----------------
162
 *		compiler constants for pg_attribute
163 164 165
 * ----------------
 */

166
#define Natts_pg_attribute				15
167 168 169
#define Anum_pg_attribute_attrelid		1
#define Anum_pg_attribute_attname		2
#define Anum_pg_attribute_atttypid		3
170
#define Anum_pg_attribute_attstattarget 4
171 172
#define Anum_pg_attribute_attlen		5
#define Anum_pg_attribute_attnum		6
173
#define Anum_pg_attribute_attndims		7
174
#define Anum_pg_attribute_attcacheoff	8
175 176
#define Anum_pg_attribute_atttypmod		9
#define Anum_pg_attribute_attbyval		10
177 178 179 180 181
#define Anum_pg_attribute_attstorage	11
#define Anum_pg_attribute_attisset		12
#define Anum_pg_attribute_attalign		13
#define Anum_pg_attribute_attnotnull	14
#define Anum_pg_attribute_atthasdef		15
182 183


184 185 186 187
#ifdef	_DROP_COLUMN_HACK__
/*
 *	CONSTANT and MACROS for DROP COLUMN implementation
 */
188 189 190 191
#define DROP_COLUMN_OFFSET	-20
#define COLUMN_IS_DROPPED(attribute)	((attribute)->attnum <= DROP_COLUMN_OFFSET)
#define DROPPED_COLUMN_INDEX(attidx)	(DROP_COLUMN_OFFSET - attidx)
#define ATTRIBUTE_DROP_COLUMN(attribute) \
192 193 194 195
	Assert((attribute)->attnum > 0); \
	(attribute)->attnum = DROPPED_COLUMN_INDEX((attribute)->attnum); \
	(attribute)->atttypid = (Oid) -1; \
	(attribute)->attnotnull = false; \
196 197
	(attribute)->atthasdef = false;
#endif	 /* _DROP_COLUMN_HACK__ */
198

199
/* ----------------
200 201
 *		SCHEMA_ macros for declaring hardcoded tuple descriptors.
 *		these are used in utils/cache/relcache.c
202 203 204 205 206
 * ----------------
#define SCHEMA_NAME(x) CppConcat(Name_,x)
#define SCHEMA_DESC(x) CppConcat(Desc_,x)
#define SCHEMA_NATTS(x) CppConcat(Natts_,x)
#define SCHEMA_DEF(x) \
207 208 209 210 211
	FormData_pg_attribute \
	SCHEMA_DESC(x) [ SCHEMA_NATTS(x) ] = \
	{ \
		CppConcat(Schema_,x) \
	}
212 213 214
 */

/* ----------------
215
 *		initial contents of pg_attribute
216 217 218 219
 * ----------------
 */

/* ----------------
220
 *		pg_type schema
221 222 223
 * ----------------
 */
#define Schema_pg_type \
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242
{ 1247, {"typname"},	   19, DEFAULT_ATTSTATTARGET, NAMEDATALEN,	1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1247, {"typowner"},	   23, 0,	4,	2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typlen"},		   21, 0,	2,	3, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1247, {"typprtlen"},	   21, 0,	2,	4, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1247, {"typbyval"},	   16, 0,	1,	5, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1247, {"typtype"},	   18, 0,	1,	6, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1247, {"typisdefined"},  16, 0,	1,	7, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1247, {"typdelim"},	   18, 0,	1,	8, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1247, {"typrelid"},	   26, 0,	4,	9, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typelem"},	   26, 0,	4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typinput"},	   24, 0,	4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typoutput"},	   24, 0,	4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typreceive"},    24, 0,	4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typsend"},	   24, 0,	4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typalign"},	   18, 0,	1, 15, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1247, {"typstorage"},    18, 0,	1, 16, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1247, {"typdefault"},    25, 0,  -1, 17, 0, -1, -1, false	, 'x', false, 'i', false, false }

DATA(insert OID = 0 ( 1247 typname			19 DEFAULT_ATTSTATTARGET NAMEDATALEN   1 0 -1 -1 f p f i f f));
243 244 245 246 247 248 249 250 251 252 253 254 255 256
DATA(insert OID = 0 ( 1247 typowner			23 0  4   2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typlen			21 0  2   3 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1247 typprtlen		21 0  2   4 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1247 typbyval			16 0  1   5 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1247 typtype			18 0  1   6 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1247 typisdefined		16 0  1   7 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1247 typdelim			18 0  1   8 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1247 typrelid			26 0  4   9 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typelem			26 0  4  10 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typinput			24 0  4  11 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typoutput		24 0  4  12 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typreceive		24 0  4  13 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typsend			24 0  4  14 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 typalign			18 0  1  15 0 -1 -1 t p f c f f));
J
TOAST  
Jan Wieck 已提交
257
DATA(insert OID = 0 ( 1247 typstorage		18 0  1  16 0 -1 -1 t p f c f f));
258
DATA(insert OID = 0 ( 1247 typdefault		25 0 -1  17 0 -1 -1 f x f i f f));
259 260 261 262 263 264
DATA(insert OID = 0 ( 1247 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1247 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1247 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
265
DATA(insert OID = 0 ( 1247 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
266 267

/* ----------------
268
 *		pg_database
269 270
 * ----------------
 */
271 272 273
DATA(insert OID = 0 ( 1262 datname			19 0 NAMEDATALEN   1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1262 datdba			23 0  4   2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1262 encoding			23 0  4   3 0 -1 -1 t p f i f f));
B
Bruce Momjian 已提交
274 275 276
DATA(insert OID = 0 ( 1262 datistemplate	16 0  1   4 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1262 datallowconn		16 0  1   5 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1262 datlastsysoid	26 0  4   6 0 -1 -1 t p f i f f));
277 278
/* do not mark datpath as toastable; GetRawDatabaseInfo won't cope */
DATA(insert OID = 0 ( 1262 datpath			25 0 -1   7 0 -1 -1 f p f i f f));
279 280 281 282 283 284
DATA(insert OID = 0 ( 1262 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1262 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1262 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1262 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1262 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1262 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
285
DATA(insert OID = 0 ( 1262 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
286

287
/* ----------------
288
 *		pg_proc
289 290 291
 * ----------------
 */
#define Schema_pg_proc \
292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
{ 1255, {"proname"},			19, DEFAULT_ATTSTATTARGET, NAMEDATALEN,  1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1255, {"proowner"},			23, 0,	4,	2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"prolang"},			26, 0,	4,	3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"proisinh"},			16, 0,	1,	4, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1255, {"proistrusted"},		16, 0,	1,	5, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1255, {"proiscachable"},		16, 0,	1,	6, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1255, {"proisstrict"},		16, 0,	1,	7, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1255, {"pronargs"},			21, 0,	2,	8, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1255, {"proretset"},			16, 0,	1,	9, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1255, {"prorettype"},			26, 0,	4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"proargtypes"},		30, 0, INDEX_MAX_KEYS*4, 11, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1255, {"probyte_pct"},		23, 0,	4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"properbyte_cpu"},		23, 0,	4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"propercall_cpu"},		23, 0,	4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"prooutin_ratio"},		23, 0,	4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"prosrc"},				25, 0, -1, 16, 0, -1, -1, false, 'x', false, 'i', false, false }, \
{ 1255, {"probin"},				17, 0, -1, 17, 0, -1, -1, false, 'x', false, 'i', false, false }

DATA(insert OID = 0 ( 1255 proname			19 DEFAULT_ATTSTATTARGET NAMEDATALEN   1 0 -1 -1 f p f i f f));
311 312 313 314 315
DATA(insert OID = 0 ( 1255 proowner			23 0  4   2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 prolang			26 0  4   3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 proisinh			16 0  1   4 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1255 proistrusted		16 0  1   5 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1255 proiscachable	16 0  1   6 0 -1 -1 t p f c f f));
316 317 318 319 320 321 322 323 324
DATA(insert OID = 0 ( 1255 proisstrict		16 0  1   7 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1255 pronargs			21 0  2   8 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1255 proretset		16 0  1   9 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1255 prorettype		26 0  4  10 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 proargtypes		30 0 INDEX_MAX_KEYS*4 11 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1255 probyte_pct		23 0  4  12 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 properbyte_cpu	23 0  4  13 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 propercall_cpu	23 0  4  14 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 prooutin_ratio	23 0  4  15 0 -1 -1 t p f i f f));
325 326
DATA(insert OID = 0 ( 1255 prosrc			25 0 -1  16 0 -1 -1 f x f i f f));
DATA(insert OID = 0 ( 1255 probin			17 0 -1  17 0 -1 -1 f x f i f f));
327 328 329 330 331 332
DATA(insert OID = 0 ( 1255 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1255 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1255 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
333
DATA(insert OID = 0 ( 1255 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
334

335
/* ----------------
336
 *		pg_shadow
337 338
 * ----------------
 */
339 340
DATA(insert OID = 0 ( 1260 usename			19	DEFAULT_ATTSTATTARGET NAMEDATALEN	1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1260 usesysid			23	DEFAULT_ATTSTATTARGET	4	2 0 -1 -1 t p f i f f));
341 342 343 344
DATA(insert OID = 0 ( 1260 usecreatedb		16	0	1	3 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1260 usetrace			16	0	1	4 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1260 usesuper			16	0	1	5 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1260 usecatupd		16	0	1	6 0 -1 -1 t p f c f f));
345
DATA(insert OID = 0 ( 1260 passwd			25	0  -1	7 0 -1 -1 f x f i f f));
346
DATA(insert OID = 0 ( 1260 valuntil			702 0	4	8 0 -1 -1 t p f i f f));
347 348 349 350 351 352
DATA(insert OID = 0 ( 1260 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1260 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1260 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1260 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1260 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1260 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
353
DATA(insert OID = 0 ( 1260 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
354 355

/* ----------------
356
 *		pg_group
357 358
 * ----------------
 */
359 360
DATA(insert OID = 0 ( 1261 groname			19 DEFAULT_ATTSTATTARGET NAMEDATALEN  1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1261 grosysid			23 DEFAULT_ATTSTATTARGET  4   2 0 -1 -1 t p f i f f));
361
DATA(insert OID = 0 ( 1261 grolist		  1007 0 -1   3 0 -1 -1 f x f i f f));
362 363 364 365 366 367
DATA(insert OID = 0 ( 1261 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1261 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1261 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1261 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1261 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1261 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
368
DATA(insert OID = 0 ( 1261 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
369

370
/* ----------------
371
 *		pg_attribute
372 373 374
 * ----------------
 */
#define Schema_pg_attribute \
375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392
{ 1249, {"attrelid"},	  26, DEFAULT_ATTSTATTARGET,	4,	1, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attname"},	  19, DEFAULT_ATTSTATTARGET, NAMEDATALEN,	2, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1249, {"atttypid"},	  26, 0,	4,	3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attstattarget"}, 23, 0,	4,	4, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attlen"},		  21, 0,	2,	5, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1249, {"attnum"},		  21, 0,	2,	6, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1249, {"attndims"},	  23, 0,	4,	7, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attcacheoff"},  23, 0,	4,	8, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"atttypmod"},	  23, 0,	4,	9, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attbyval"},	  16, 0,	1, 10, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1249, {"attstorage"},   18, 0,	1, 11, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1249, {"attisset"},	  16, 0,	1, 12, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1249, {"attalign"},	  18, 0,	1, 13, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1249, {"attnotnull"},  16, 0, 1, 14, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1249, {"atthasdef"},	 16, 0, 1, 15, 0, -1, -1, true, 'p', false, 'c', false, false }

DATA(insert OID = 0 ( 1249 attrelid			26 DEFAULT_ATTSTATTARGET  4   1 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 attname			19 DEFAULT_ATTSTATTARGET NAMEDATALEN  2 0 -1 -1 f p f i f f));
393
DATA(insert OID = 0 ( 1249 atttypid			26 0  4   3 0 -1 -1 t p f i f f));
394
DATA(insert OID = 0 ( 1249 attstattarget	23 0  4   4 0 -1 -1 t p f i f f));
395 396
DATA(insert OID = 0 ( 1249 attlen			21 0  2   5 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1249 attnum			21 0  2   6 0 -1 -1 t p f s f f));
397
DATA(insert OID = 0 ( 1249 attndims			23 0  4   7 0 -1 -1 t p f i f f));
398 399 400 401 402 403 404 405 406 407 408 409 410 411
DATA(insert OID = 0 ( 1249 attcacheoff		23 0  4   8 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 atttypmod		23 0  4   9 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 attbyval			16 0  1  10 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1249 attstorage		18 0  1  11 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1249 attisset			16 0  1  12 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1249 attalign			18 0  1  13 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1249 attnotnull		16 0  1  14 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1249 atthasdef		16 0  1  15 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1249 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1249 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1249 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
412
DATA(insert OID = 0 ( 1249 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
413

414
/* ----------------
415
 *		pg_class
416 417 418
 * ----------------
 */
#define Schema_pg_class \
419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
{ 1259, {"relname"},	   19, DEFAULT_ATTSTATTARGET, NAMEDATALEN,	1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1259, {"reltype"},	   26, 0,	4,	2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"relowner"},	   23, 0,	4,	3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"relam"},		   26, 0,	4,	4, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"relfilenode"},   26, 0,	4,	5, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"relpages"},	   23, 0,	4,	6, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"reltuples"},	   700, 0,	4,	7, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1259, {"reltoastrelid"}, 26, 0,	4,	8, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"reltoastidxid"}, 26, 0,	4,	9, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"relhasindex"},   16, 0,	1, 10, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relisshared"},   16, 0,	1, 11, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relkind"},	   18, 0,	1, 12, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relnatts"},	   21, 0,	2, 13, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1259, {"relchecks"},	   21, 0,	2, 14, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1259, {"reltriggers"},   21, 0,	2, 15, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1259, {"relukeys"},	   21, 0,	2, 16, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1259, {"relfkeys"},	   21, 0,	2, 17, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1259, {"relrefs"},	   21, 0,	2, 18, 0, -1, -1, true, 'p', false, 's', false, false }, \
{ 1259, {"relhaspkey"},    16, 0,	1, 19, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relhasrules"},   16, 0,	1, 20, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relhassubclass"},16, 0,	1, 21, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relacl"},		 1034, 0,  -1, 22, 0, -1, -1,	false, 'x', false, 'i', false, false }

DATA(insert OID = 0 ( 1259 relname			19 DEFAULT_ATTSTATTARGET NAMEDATALEN   1 0 -1 -1 f p f i f f));
443 444 445
DATA(insert OID = 0 ( 1259 reltype			26 0  4   2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 relowner			23 0  4   3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 relam			26 0  4   4 0 -1 -1 t p f i f f));
446 447
DATA(insert OID = 0 ( 1259 relfilenode		26 0  4   5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 relpages			23 0  4   6 0 -1 -1 t p f i f f));
448
DATA(insert OID = 0 ( 1259 reltuples	   700 0  4   7 0 -1 -1 f p f i f f));
449 450 451 452 453 454 455 456 457 458 459 460 461 462 463
DATA(insert OID = 0 ( 1259 reltoastrelid	26 0  4   8 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 reltoastidxid	26 0  4   9 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 relhasindex		16 0  1  10 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1259 relisshared		16 0  1  11 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1259 relkind			18 0  1  12 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1259 relnatts			21 0  2  13 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1259 relchecks		21 0  2  14 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1259 reltriggers		21 0  2  15 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1259 relukeys			21 0  2  16 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1259 relfkeys			21 0  2  17 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1259 relrefs			21 0  2  18 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1259 relhaspkey		16 0  1  19 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1259 relhasrules		16 0  1  20 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1259 relhassubclass	16 0  1  21 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1259 relacl		  1034 0 -1  22 0 -1 -1 f x f i f f));
464 465 466 467 468 469
DATA(insert OID = 0 ( 1259 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1259 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1259 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
470
DATA(insert OID = 0 ( 1259 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
471

472
/* ----------------
473
 *		pg_attrdef
474 475
 * ----------------
 */
476 477
DATA(insert OID = 0 ( 1215 adrelid			26 0  4   1 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1215 adnum			21 0  2   2 0 -1 -1 t p f s f f));
478 479
DATA(insert OID = 0 ( 1215 adbin			25 0 -1   3 0 -1 -1 f x f i f f));
DATA(insert OID = 0 ( 1215 adsrc			25 0 -1   4 0 -1 -1 f x f i f f));
480 481 482 483 484 485
DATA(insert OID = 0 ( 1215 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1215 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1215 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1215 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1215 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1215 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
486
DATA(insert OID = 0 ( 1215 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
487

488
/* ----------------
489
 *		pg_relcheck
490 491
 * ----------------
 */
492 493
DATA(insert OID = 0 ( 1216 rcrelid			26 0  4   1 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1216 rcname			19 0  NAMEDATALEN  2 0 -1 -1 f p f i f f));
494 495
DATA(insert OID = 0 ( 1216 rcbin			25 0 -1   3 0 -1 -1 f x f i f f));
DATA(insert OID = 0 ( 1216 rcsrc			25 0 -1   4 0 -1 -1 f x f i f f));
496 497 498 499 500 501
DATA(insert OID = 0 ( 1216 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1216 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1216 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1216 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1216 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1216 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
502
DATA(insert OID = 0 ( 1216 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
503

V
Vadim B. Mikheev 已提交
504
/* ----------------
505
 *		pg_trigger
V
Vadim B. Mikheev 已提交
506 507
 * ----------------
 */
508 509 510 511 512 513 514 515 516 517 518 519
DATA(insert OID = 0 ( 1219 tgrelid			26 0  4   1 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1219 tgname			19 0  NAMEDATALEN  2 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1219 tgfoid			26 0  4   3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1219 tgtype			21 0  2   4 0 -1 -1 t p f s f f));
DATA(insert OID = 0 ( 1219 tgenabled		16 0  1   5 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1219 tgisconstraint	16 0  1   6 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1219 tgconstrname		19 0  NAMEDATALEN  7 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1219 tgconstrrelid	26 0  4   8 0 -1 -1 t p f i f f));

DATA(insert OID = 0 ( 1219 tgdeferrable		16 0  1   9 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1219 tginitdeferred	16 0  1   10 0 -1 -1 t p f c f f));
DATA(insert OID = 0 ( 1219 tgnargs			21 0  2   11 0 -1 -1 t p f s f f));
520
DATA(insert OID = 0 ( 1219 tgattr			22 0  INDEX_MAX_KEYS*2	12 0 -1 -1 f p f i f f));
521
DATA(insert OID = 0 ( 1219 tgargs			17 0 -1   13 0 -1 -1 f x f i f f));
522 523 524 525 526 527
DATA(insert OID = 0 ( 1219 ctid				27 0  6  -1 0 -1 -1 f p f i f f));
DATA(insert OID = 0 ( 1219 oid				26 0  4  -2 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1219 xmin				28 0  4  -3 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1219 cmin				29 0  4  -4 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1219 xmax				28 0  4  -5 0 -1 -1 t p f i f f));
DATA(insert OID = 0 ( 1219 cmax				29 0  4  -6 0 -1 -1 t p f i f f));
528
DATA(insert OID = 0 ( 1219 tableoid			26 0  4  -7 0 -1 -1 t p f i f f));
529

530
/* ----------------
531 532 533
 *		pg_log - this relation is modified by special purpose access
 *				  method code.	The following is garbage but is needed
 *				  so that the reldesc code works properly.
534 535 536
 * ----------------
 */
#define Schema_pg_log \
537
{ 1269, {"logfoo"},  26, 0, 4, 1, 0, -1, -1, true, 'p', false, 'i', false, false }
538

539
DATA(insert OID = 0 ( 1269 logfoo			26 0  4   1 0 -1 -1 t p f i f f));
540

541 542 543 544 545 546 547
/* ----------------
 *		pg_xactlock - this relation is modified by special purpose access
 *				  method code.	The following is garbage but is needed
 *				  so that the reldesc code works properly.
 * ----------------
 */
#define Schema_pg_xactlock \
548
{ 376, {"xactlockfoo"},  26, 0, 4, 1, 0, -1, -1, true, 'p', false, 'i', false, false }
549

550
DATA(insert OID = 0 ( 376 xactlockfoo		26 0  4   1 0 -1 -1 t p f i f f));
551

552
#endif	 /* PG_ATTRIBUTE_H */