Added attributes for primary/unique/foreign keys...
authorVadim B. Mikheev
Thu, 10 Sep 1998 15:32:32 +0000 (15:32 +0000)
committerVadim B. Mikheev
Thu, 10 Sep 1998 15:32:32 +0000 (15:32 +0000)
src/backend/catalog/index.c
src/include/catalog/pg_attribute.h
src/include/catalog/pg_class.h
src/include/catalog/pg_index.h

index fbf9f3017246d58388e27572b357bb279cc2d062..ce48422687b09f995fd2930c690d8da6a18e80bf 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.62 1998/09/09 03:42:52 vadim Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.63 1998/09/10 15:32:16 vadim Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -762,6 +762,7 @@ UpdateIndexRelation(Oid indexoid,
    predLen = VARSIZE(predText);
    itupLen = predLen + sizeof(FormData_pg_index);
    indexForm = (Form_pg_index) palloc(itupLen);
+   memset (indexForm, 0, sizeof(FormData_pg_index));
 
    memmove((char *) &indexForm->indpred, (char *) predText, predLen);
 
index 4a3bbd6ce55a3833a870ed3976768c02b1033e0c..3eb25fa43711a587f65f2980f0ae13f46ee24932 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_attribute.h,v 1.43 1998/09/01 04:34:51 momjian Exp $
+ * $Id: pg_attribute.h,v 1.44 1998/09/10 15:32:30 vadim Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -361,16 +361,20 @@ DATA(insert OID = 0 ( 1249 cmax               29 0  4  -6 0 -1 -1 t f i f f));
 { 1259, {"reltype"},      26, 0,   4,  2, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
 { 1259, {"relowner"},     23, 0,   4,  3, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
 { 1259, {"relam"},        26, 0,   4,  4, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
-{ 1259, {"relpages"},     23,  0,  4,  5, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
-{ 1259, {"reltuples"},    23,  0,  4,  6, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
-{ 1259, {"relhasindex"},   16, 0,  1,  7, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
-{ 1259, {"relisshared"},   16, 0,  1,  8, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
-{ 1259, {"relkind"},      18,  0,  1,  9, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
-{ 1259, {"relnatts"},     21,  0,  2, 10, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
+{ 1259, {"relpages"},     23, 0,   4,  5, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
+{ 1259, {"reltuples"},    23, 0,   4,  6, 0, -1, -1, '\001', '\0', 'i', '\0', '\0' }, \
+{ 1259, {"relhasindex"},   16, 0,  1,  7, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
+{ 1259, {"relisshared"},   16, 0,  1,  8, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
+{ 1259, {"relkind"},      18, 0,   1,  9, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
+{ 1259, {"relnatts"},     21, 0,   2, 10, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
 { 1259, {"relchecks"},    21, 0,   2, 11, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
 { 1259, {"reltriggers"},   21, 0,  2, 12, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
-{ 1259, {"relhasrules"},   16, 0,  1, 13, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
-{ 1259, {"relacl"},         1034, 0, -1, 14, 0, -1, -1,    '\0', '\0', 'i', '\0', '\0' }
+{ 1259, {"relukeys"},      21, 0,  2, 13, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
+{ 1259, {"relfkeys"},      21, 0,  2, 14, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
+{ 1259, {"relrefs"},       21, 0,  2, 15, 0, -1, -1, '\001', '\0', 's', '\0', '\0' }, \
+{ 1259, {"relhaspkey"},    16, 0,  1, 16, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
+{ 1259, {"relhasrules"},   16, 0,  1, 17, 0, -1, -1, '\001', '\0', 'c', '\0', '\0' }, \
+{ 1259, {"relacl"},         1034, 0,  -1, 18, 0, -1, -1,   '\0', '\0', 'i', '\0', '\0' }
 
 DATA(insert OID = 0 ( 1259 relname         19 0 NAMEDATALEN   1 0 -1 -1 f f i f f));
 DATA(insert OID = 0 ( 1259 reltype         26 0  4   2 0 -1 -1 t f i f f));
@@ -384,8 +388,12 @@ DATA(insert OID = 0 ( 1259 relkind         18 0  1   9 0 -1 -1 t f c f f));
 DATA(insert OID = 0 ( 1259 relnatts            21 0  2  10 0 -1 -1 t f s f f));
 DATA(insert OID = 0 ( 1259 relchecks       21 0  2  11 0 -1 -1 t f s f f));
 DATA(insert OID = 0 ( 1259 reltriggers     21 0  2  12 0 -1 -1 t f s f f));
-DATA(insert OID = 0 ( 1259 relhasrules     16 0  1  13 0 -1 -1 t f c f f));
-DATA(insert OID = 0 ( 1259 relacl        1034 0 -1  14 0 -1 -1 f f i f f));
+DATA(insert OID = 0 ( 1259 relukeys            21 0  2  13 0 -1 -1 t f s f f));
+DATA(insert OID = 0 ( 1259 relfkeys            21 0  2  14 0 -1 -1 t f s f f));
+DATA(insert OID = 0 ( 1259 relrefs         21 0  2  15 0 -1 -1 t f s f f));
+DATA(insert OID = 0 ( 1259 relhaspkey      16 0  1  16 0 -1 -1 t f c f f));
+DATA(insert OID = 0 ( 1259 relhasrules     16 0  1  17 0 -1 -1 t f c f f));
+DATA(insert OID = 0 ( 1259 relacl        1034 0 -1  18 0 -1 -1 f f i f f));
 DATA(insert OID = 0 ( 1259 ctid                27 0  6  -1 0 -1 -1 f f i f f));
 DATA(insert OID = 0 ( 1259 oid             26 0  4  -2 0 -1 -1 t f i f f));
 DATA(insert OID = 0 ( 1259 xmin                28 0  4  -3 0 -1 -1 t f i f f));
index e9f860fb446c63c21bfdadceeb6bf6d66cf74af1..c96e05e393987a2d0675f0f7823433b39fda185b 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_class.h,v 1.24 1998/09/01 04:34:53 momjian Exp $
+ * $Id: pg_class.h,v 1.25 1998/09/10 15:32:31 vadim Exp $
  *
  * NOTES
  *   ``pg_relation'' is being replaced by ``pg_class''.  currently
@@ -71,6 +71,10 @@ CATALOG(pg_class) BOOTSTRAP
    int2        relchecks;      /* # of CHECK constraints, not stored in
                                 * db? */
    int2        reltriggers;    /* # of TRIGGERs */
+   int2        relukeys;       /* # of Unique keys */
+   int2        relfkeys;       /* # of FOREIGN KEYs */
+   int2        relrefs;        /* # of references to this relation */
+   bool        relhaspkey;     /* has PRIMARY KEY */
    bool        relhasrules;
    aclitem     relacl[1];      /* this is here for the catalog */
 } FormData_pg_class;
@@ -96,8 +100,8 @@ typedef FormData_pg_class *Form_pg_class;
  *     relacl field.
  * ----------------
  */
-#define Natts_pg_class_fixed           13
-#define Natts_pg_class                 14
+#define Natts_pg_class_fixed           17
+#define Natts_pg_class                 18
 #define Anum_pg_class_relname          1
 #define Anum_pg_class_reltype          2
 #define Anum_pg_class_relowner         3
@@ -110,37 +114,41 @@ typedef FormData_pg_class *Form_pg_class;
 #define Anum_pg_class_relnatts         10
 #define Anum_pg_class_relchecks            11
 #define Anum_pg_class_reltriggers      12
-#define Anum_pg_class_relhasrules      13
-#define Anum_pg_class_relacl           14
+#define Anum_pg_class_relukeys         13
+#define Anum_pg_class_relfkeys         14
+#define Anum_pg_class_relrefs          15
+#define Anum_pg_class_relhaspkey       16
+#define Anum_pg_class_relhasrules      17
+#define Anum_pg_class_relacl           18
 
 /* ----------------
  *     initial contents of pg_class
  * ----------------
  */
 
-DATA(insert OID = 1247 (  pg_type 71         PGUID 0 0 0 f f r 16 0 0 f _null_ ));
+DATA(insert OID = 1247 (  pg_type 71         PGUID 0 0 0 f f r 16 0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1249 (  pg_attribute 75    PGUID 0 0 0 f f r 14 0 0 f _null_ ));
+DATA(insert OID = 1249 (  pg_attribute 75    PGUID 0 0 0 f f r 14 0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1255 (  pg_proc 81         PGUID 0 0 0 f f r 16 0 0 f _null_ ));
+DATA(insert OID = 1255 (  pg_proc 81         PGUID 0 0 0 f f r 16 0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1259 (  pg_class 83        PGUID 0 0 0 f f r 14 0 0 f _null_ ));
+DATA(insert OID = 1259 (  pg_class 83        PGUID 0 0 0 f f r 18 0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1260 (  pg_shadow 86       PGUID 0 0 0 f t r 8  0 0 f _null_ ));
+DATA(insert OID = 1260 (  pg_shadow 86       PGUID 0 0 0 f t r 8  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1261 (  pg_group 87        PGUID 0 0 0 f t s 3  0 0 f _null_ ));
+DATA(insert OID = 1261 (  pg_group 87        PGUID 0 0 0 f t s 3  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1262 (  pg_database 88     PGUID 0 0 0 f t r 4  0 0 f _null_ ));
+DATA(insert OID = 1262 (  pg_database 88     PGUID 0 0 0 f t r 4  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1264 (  pg_variable 90     PGUID 0 0 0 f t s 2  0 0 f _null_ ));
+DATA(insert OID = 1264 (  pg_variable 90     PGUID 0 0 0 f t s 2  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1269 (  pg_log  99         PGUID 0 0 0 f t s 1  0 0 f _null_ ));
+DATA(insert OID = 1269 (  pg_log  99         PGUID 0 0 0 f t s 1  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1215 (  pg_attrdef 109     PGUID 0 0 0 t t r 4  0 0 f _null_ ));
+DATA(insert OID = 1215 (  pg_attrdef 109     PGUID 0 0 0 t t r 4  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1216 (  pg_relcheck 110    PGUID 0 0 0 t t r 4  0 0 f _null_ ));
+DATA(insert OID = 1216 (  pg_relcheck 110    PGUID 0 0 0 t t r 4  0 0 0 0 0 f f _null_ ));
 DESCR("");
-DATA(insert OID = 1219 (  pg_trigger 111     PGUID 0 0 0 t t r 7  0 0 f _null_ ));
+DATA(insert OID = 1219 (  pg_trigger 111     PGUID 0 0 0 t t r 7  0 0 0 0 0 f f _null_ ));
 DESCR("");
 
 #define RelOid_pg_type         1247
index aba984717439c45992da3ccd031e15e867513f37..23ed317baa0193fa1c204429247b9bf142fb5052 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_index.h,v 1.9 1998/09/06 04:49:51 momjian Exp $
+ * $Id: pg_index.h,v 1.10 1998/09/10 15:32:32 vadim Exp $
  *
  * NOTES
  *   the genbki.sh script reads this file and generates .bki
@@ -52,6 +52,9 @@ CATALOG(pg_index)
                                 * compression)? */
    bool        indhaskeytype;  /* does key type != attribute type? */
    bool        indisunique;    /* is this a unique index? */
+   bool        indisprimary;   /* is this index for primary key */
+   Oid         indreference;   /* oid of index of referenced relation 
+                                * (ie - this index for foreign key */
    text        indpred;        /* query plan for partial index predicate */
 } FormData_pg_index;
 
@@ -69,7 +72,7 @@ typedef FormData_pg_index *Form_pg_index;
  *     compiler constants for pg_index
  * ----------------
  */
-#define Natts_pg_index                 10
+#define Natts_pg_index                 12
 #define Anum_pg_index_indexrelid       1
 #define Anum_pg_index_indrelid         2
 #define Anum_pg_index_indproc          3
@@ -79,6 +82,8 @@ typedef FormData_pg_index *Form_pg_index;
 #define Anum_pg_index_indislossy       7
 #define Anum_pg_index_indhaskeytype        8
 #define Anum_pg_index_indisunique      9
-#define Anum_pg_index_indpred          10
+#define Anum_pg_index_indisprimary     10
+#define Anum_pg_index_indreference     11
+#define Anum_pg_index_indpred          12
 
 #endif  /* PG_INDEX_H */