OSDN Git Service

Added attributes for primary/unique/foreign keys...
authorVadim B. Mikheev <vadim4o@yahoo.com>
Thu, 10 Sep 1998 15:32:32 +0000 (15:32 +0000)
committerVadim B. Mikheev <vadim4o@yahoo.com>
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 fbf9f30..ce48422 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 4a3bbd6..3eb25fa 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 e9f860f..c96e05e 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 aba9847..23ed317 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 */