⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pg_attribute.h

📁 关系型数据库 Postgresql 6.5.2
💻 H
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------------------------------- * * pg_attribute.h *	  definition of the system "attribute" relation (pg_attribute) *	  along with the relation's initial contents. * * * Copyright (c) 1994, Regents of the University of California * * $Id: pg_attribute.h,v 1.47 1999/05/25 16:13:42 momjian Exp $ * * NOTES *	  the genbki.sh script reads this file and generates .bki *	  information from the DATA() statements. * *	  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 * *------------------------------------------------------------------------- */#ifndef PG_ATTRIBUTE_H#define PG_ATTRIBUTE_H/* ---------------- *		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. * ---------------- *//* ---------------- *		pg_attribute definition.  cpp turns this into *		typedef struct FormData_pg_attribute * *		If you change the following, make sure you change the structs for *		system attributes in heap.c and index.c also. * ---------------- */CATALOG(pg_attribute) BOOTSTRAP{	Oid			attrelid;	NameData	attname;	Oid			atttypid;	/*	 * 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.	 */	float4		attdisbursion;	int2		attlen;	/*	 * attlen is a copy of the typlen field from pg_type for this	 * attribute.  See atttypid above.	See struct Form_pg_type for	 * definition.	 */	int2		attnum;	/*	 * 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.	 */	int4		attnelems;	int4		attcacheoff;	/*	 * fastgetattr() uses attcacheoff to cache byte offsets of attributes	 * in heap tuples.	The data actually stored in pg_attribute (-1)	 * 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.	 */	int4		atttypmod;	/*	 * atttypmod records type-specific modifications supplied at table	 * creation time, and passes it to input and output functions as the	 * third argument.	 */	bool		attbyval;	/*	 * attbyval is a copy of the typbyval field from pg_type for this	 * attribute.  See atttypid above.	See struct Form_pg_type for	 * definition.	 */	bool		attisset;	char		attalign;	/*	 * attalign is a copy of the typalign field from pg_type for this	 * attribute.  See atttypid above.	See struct Form_pg_type for	 * definition.	 */	bool		attnotnull;	/* This flag represents the "NOT NULL" constraint */	bool		atthasdef;	/* Has DEFAULT value or not */} FormData_pg_attribute;/* * someone should figure out how to do this properly. (The problem is * the size of the C struct is not the same as the size of the tuple.) */#define ATTRIBUTE_TUPLE_SIZE \	(offsetof(FormData_pg_attribute,atthasdef) + sizeof(char))/* ---------------- *		Form_pg_attribute corresponds to a pointer to a tuple with *		the format of pg_attribute relation. * ---------------- */typedef FormData_pg_attribute *Form_pg_attribute;/* ---------------- *		compiler constants for pg_attribute * ---------------- */#define Natts_pg_attribute				14#define Anum_pg_attribute_attrelid		1#define Anum_pg_attribute_attname		2#define Anum_pg_attribute_atttypid		3#define Anum_pg_attribute_attdisbursion 4#define Anum_pg_attribute_attlen		5#define Anum_pg_attribute_attnum		6#define Anum_pg_attribute_attnelems		7#define Anum_pg_attribute_attcacheoff	8#define Anum_pg_attribute_atttypmod		9#define Anum_pg_attribute_attbyval		10#define Anum_pg_attribute_attisset		11#define Anum_pg_attribute_attalign		12#define Anum_pg_attribute_attnotnull	13#define Anum_pg_attribute_atthasdef		14/* ---------------- *		SCHEMA_ macros for declaring hardcoded tuple descriptors. *		these are used in utils/cache/relcache.c * ----------------#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) \	FormData_pg_attribute \	SCHEMA_DESC(x) [ SCHEMA_NATTS(x) ] = \	{ \		CppConcat(Schema_,x) \	} *//* ---------------- *		initial contents of pg_attribute * ---------------- *//* ---------------- *		pg_type schema * ---------------- */#define Schema_pg_type \{ 1247, {"typname"},	   19, 0, NAMEDATALEN,	1, 0, -1, -1, '\0', '\0', 'i', '\0', '\0' }, \{ 1247, {"typowner"},	   23, 0,	4,	2, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typlen"},		   21, 0,	2,	3, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \{ 1247, {"typprtlen"},	   21, 0,	2,	4, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \{ 1247, {"typbyval"},	   16, 0,	1,	5, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \{ 1247, {"typtype"},	   18, 0,	1,	6, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \{ 1247, {"typisdefined"},  16, 0,	1,	7, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \{ 1247, {"typdelim"},	   18, 0,	1,	8, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \{ 1247, {"typrelid"},	   26, 0,	4,	9, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typelem"},	   26, 0,	4, 10, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typinput"},	   24, 0,	4, 11, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typoutput"},	   24, 0,	4, 12, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typreceive"},    24, 0,	4, 13, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typsend"},	   24, 0,	4, 14, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1247, {"typalign"},	   18, 0,	1, 15, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \{ 1247, {"typdefault"},    25, 0,  -1, 16, 0, -1, -1, '\0'	, '\0', 'i', '\0', '\0' }DATA(insert OID = 0 ( 1247 typname			19 0 NAMEDATALEN   1 0 -1 -1 f f i f f));DATA(insert OID = 0 ( 1247 typowner			23 0  4   2 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typlen			21 0  2   3 0 -1 -1 t f s f f));DATA(insert OID = 0 ( 1247 typprtlen		21 0  2   4 0 -1 -1 t f s f f));DATA(insert OID = 0 ( 1247 typbyval			16 0  1   5 0 -1 -1 t f c f f));DATA(insert OID = 0 ( 1247 typtype			18 0  1   6 0 -1 -1 t f c f f));DATA(insert OID = 0 ( 1247 typisdefined		16 0  1   7 0 -1 -1 t f c f f));DATA(insert OID = 0 ( 1247 typdelim			18 0  1   8 0 -1 -1 t f c f f));DATA(insert OID = 0 ( 1247 typrelid			26 0  4   9 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typelem			26 0  4  10 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typinput			24 0  4  11 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typoutput		24 0  4  12 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typreceive		24 0  4  13 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typsend			24 0  4  14 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 typalign			18 0  1  15 0 -1 -1 t f c f f));DATA(insert OID = 0 ( 1247 typdefault		25 0 -1  16 0 -1 -1 f f i f f));DATA(insert OID = 0 ( 1247 ctid				27 0  6  -1 0 -1 -1 f f i f f));DATA(insert OID = 0 ( 1247 oid				26 0  4  -2 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 xmin				28 0  4  -3 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 cmin				29 0  4  -4 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 xmax				28 0  4  -5 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1247 cmax				29 0  4  -6 0 -1 -1 t f i f f));/* ---------------- *		pg_database * ---------------- */DATA(insert OID = 0 ( 1262 datname			19 0 NAMEDATALEN   1 0 -1 -1 f f i f f));DATA(insert OID = 0 ( 1262 datdba			23 0  4   2 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1262 encoding			23 0  4   3 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1262 datpath			25 0 -1   4 0 -1 -1 f f i f f));DATA(insert OID = 0 ( 1262 ctid				27 0  6  -1 0 -1 -1 f f i f f));DATA(insert OID = 0 ( 1262 oid				26 0  4  -2 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1262 xmin				28 0  4  -3 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1262 cmin				29 0  4  -4 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1262 xmax				28 0  4  -5 0 -1 -1 t f i f f));DATA(insert OID = 0 ( 1262 cmax				29 0  4  -6 0 -1 -1 t f i f f));/* ---------------- *		pg_proc * ---------------- */#define Schema_pg_proc \{ 1255, {"proname"},			19, 0, NAMEDATALEN,  1, 0, -1, -1, '\0', '\0', 'i', '\0', '\0' }, \{ 1255, {"proowner"},			23, 0,	4,	2, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \{ 1255, {"prolang"},			26, 0,	4,	3, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -