pg_class.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:6k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * pg_class.h
  4.  *   definition of the system "relation" relation (pg_class)
  5.  *   along with the relation's initial contents.
  6.  *
  7.  *
  8.  * Copyright (c) 1994, Regents of the University of California
  9.  *
  10.  * $Id: pg_class.h,v 1.29 1999/05/25 16:13:44 momjian Exp $
  11.  *
  12.  * NOTES
  13.  *   ``pg_relation'' is being replaced by ``pg_class''.  currently
  14.  *   we are only changing the name in the catalogs but someday the
  15.  *   code will be changed too. -cim 2/26/90
  16.  *   [it finally happens. -ay 11/5/94]
  17.  *
  18.  *   the genbki.sh script reads this file and generates .bki
  19.  *   information from the DATA() statements.
  20.  *
  21.  *-------------------------------------------------------------------------
  22.  */
  23. #ifndef PG_RELATION_H
  24. #define PG_RELATION_H
  25. /* ----------------
  26.  * postgres.h contains the system type definintions and the
  27.  * CATALOG(), BOOTSTRAP and DATA() sugar words so this file
  28.  * can be read by both genbki.sh and the C compiler.
  29.  * ----------------
  30.  */
  31. /* ----------------
  32.  * pg_class definition.  cpp turns this into
  33.  * typedef struct FormData_pg_class
  34.  *
  35.  * Note: the #if 0, #endif around the BKI_BEGIN.. END block
  36.  *   below keeps cpp from seeing what is meant for the
  37.  *   genbki script: pg_relation is now called pg_class, but
  38.  *   only in the catalogs -cim 2/26/90
  39.  * ----------------
  40.  */
  41. /* ----------------
  42.  * This structure is actually variable-length (the last attribute is
  43.  * a POSTGRES array). Hence, sizeof(FormData_pg_class) does not
  44.  * describe the fixed-length or actual size of the structure.
  45.  * FormData_pg_class.relacl may not be correctly aligned, either,
  46.  * if aclitem and struct varlena don't align together.  Hence,
  47.  * you MUST use heap_getattr() to get the relacl field.
  48.  * ----------------
  49.  */
  50. CATALOG(pg_class) BOOTSTRAP
  51. {
  52. NameData relname;
  53. Oid reltype;
  54. int4 relowner;
  55. Oid relam;
  56. int4 relpages;
  57. int4 reltuples;
  58. bool relhasindex;
  59. bool relisshared;
  60. char relkind;
  61. int2 relnatts;
  62. /*
  63.  * relnatts is the number of user attributes this class has.  There
  64.  * must be exactly this many instances in Class pg_attribute for this
  65.  * class which have attnum > 0 (= user attribute).
  66.  */
  67. int2 relchecks; /* # of CHECK constraints, not stored in
  68.  * db? */
  69. int2 reltriggers; /* # of TRIGGERs */
  70. int2 relukeys; /* # of Unique keys */
  71. int2 relfkeys; /* # of FOREIGN KEYs */
  72. int2 relrefs; /* # of references to this relation */
  73. bool relhaspkey; /* has PRIMARY KEY */
  74. bool relhasrules;
  75. aclitem relacl[1]; /* this is here for the catalog */
  76. } FormData_pg_class;
  77. #define CLASS_TUPLE_SIZE 
  78.  (offsetof(FormData_pg_class,relhasrules) + sizeof(bool))
  79. /* ----------------
  80.  * Form_pg_class corresponds to a pointer to a tuple with
  81.  * the format of pg_class relation.
  82.  * ----------------
  83.  */
  84. typedef FormData_pg_class *Form_pg_class;
  85. /* ----------------
  86.  * compiler constants for pg_class
  87.  * ----------------
  88.  */
  89. /* ----------------
  90.  * Natts_pg_class_fixed is used to tell routines that insert new
  91.  * pg_class tuples (as opposed to replacing old ones) that there's no
  92.  * relacl field.
  93.  * ----------------
  94.  */
  95. #define Natts_pg_class_fixed 17
  96. #define Natts_pg_class 18
  97. #define Anum_pg_class_relname 1
  98. #define Anum_pg_class_reltype 2
  99. #define Anum_pg_class_relowner 3
  100. #define Anum_pg_class_relam 4
  101. #define Anum_pg_class_relpages 5
  102. #define Anum_pg_class_reltuples 6
  103. #define Anum_pg_class_relhasindex 7
  104. #define Anum_pg_class_relisshared 8
  105. #define Anum_pg_class_relkind 9
  106. #define Anum_pg_class_relnatts 10
  107. #define Anum_pg_class_relchecks 11
  108. #define Anum_pg_class_reltriggers 12
  109. #define Anum_pg_class_relukeys 13
  110. #define Anum_pg_class_relfkeys 14
  111. #define Anum_pg_class_relrefs 15
  112. #define Anum_pg_class_relhaspkey 16
  113. #define Anum_pg_class_relhasrules 17
  114. #define Anum_pg_class_relacl 18
  115. /* ----------------
  116.  * initial contents of pg_class
  117.  * ----------------
  118.  */
  119. DATA(insert OID = 1247 (  pg_type 71   PGUID 0 0 0 f f r 16 0 0 0 0 0 f f _null_ ));
  120. DESCR("");
  121. DATA(insert OID = 1249 (  pg_attribute 75   PGUID 0 0 0 f f r 14 0 0 0 0 0 f f _null_ ));
  122. DESCR("");
  123. DATA(insert OID = 1255 (  pg_proc 81   PGUID 0 0 0 f f r 16 0 0 0 0 0 f f _null_ ));
  124. DESCR("");
  125. DATA(insert OID = 1259 (  pg_class 83   PGUID 0 0 0 f f r 18 0 0 0 0 0 f f _null_ ));
  126. DESCR("");
  127. DATA(insert OID = 1260 (  pg_shadow 86   PGUID 0 0 0 f t r 8  0 0 0 0 0 f f _null_ ));
  128. DESCR("");
  129. DATA(insert OID = 1261 (  pg_group 87   PGUID 0 0 0 f t s 3  0 0 0 0 0 f f _null_ ));
  130. DESCR("");
  131. DATA(insert OID = 1262 (  pg_database 88   PGUID 0 0 0 f t r 4  0 0 0 0 0 f f _null_ ));
  132. DESCR("");
  133. DATA(insert OID = 1264 (  pg_variable 90   PGUID 0 0 0 f t s 1  0 0 0 0 0 f f _null_ ));
  134. DESCR("");
  135. DATA(insert OID = 1269 (  pg_log  99   PGUID 0 0 0 f t s 1  0 0 0 0 0 f f _null_ ));
  136. DESCR("");
  137. DATA(insert OID = 376  (  pg_xactlock  0   PGUID 0 0 0 f t s 1  0 0 0 0 0 f f _null_ ));
  138. DESCR("");
  139. DATA(insert OID = 1215 (  pg_attrdef 109   PGUID 0 0 0 t t r 4  0 0 0 0 0 f f _null_ ));
  140. DESCR("");
  141. DATA(insert OID = 1216 (  pg_relcheck 110   PGUID 0 0 0 t t r 4  0 0 0 0 0 f f _null_ ));
  142. DESCR("");
  143. DATA(insert OID = 1219 (  pg_trigger 111   PGUID 0 0 0 t t r 7  0 0 0 0 0 f f _null_ ));
  144. DESCR("");
  145. #define RelOid_pg_type 1247
  146. #define RelOid_pg_attribute 1249
  147. #define RelOid_pg_proc 1255
  148. #define RelOid_pg_class 1259
  149. #define RelOid_pg_shadow 1260
  150. #define RelOid_pg_group 1261
  151. #define RelOid_pg_database 1262
  152. #define RelOid_pg_variable 1264
  153. #define RelOid_pg_log 1269
  154. #define RelOid_pg_attrdef 1215
  155. #define RelOid_pg_relcheck 1216
  156. #define RelOid_pg_trigger 1219
  157. /* Xact lock pseudo-table */
  158. #define XactLockTableId 376
  159. #define   RELKIND_INDEX   'i' /* secondary index */
  160. #define   RELKIND_LOBJECT   'l' /* large objects */
  161. #define   RELKIND_RELATION   'r' /* cataloged heap */
  162. #define   RELKIND_SPECIAL   's' /* special (non-heap) */
  163. #define   RELKIND_SEQUENCE   'S' /* SEQUENCE relation */
  164. #define   RELKIND_UNCATALOGED   'u' /* temporary heap */
  165. #endif  /* PG_RELATION_H */