From: Vadim B. Mikheev Date: Thu, 10 Sep 1998 15:32:32 +0000 (+0000) Subject: Added attributes for primary/unique/foreign keys... X-Git-Tag: REL6_4_2~448 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=36ef34d73c23acc05ade5c92ab2b60f6e2a82848;p=postgresql Added attributes for primary/unique/foreign keys... --- diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index fbf9f30172..ce48422687 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -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); diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h index 4a3bbd6ce5..3eb25fa437 100644 --- a/src/include/catalog/pg_attribute.h +++ b/src/include/catalog/pg_attribute.h @@ -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)); diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h index e9f860fb44..c96e05e393 100644 --- a/src/include/catalog/pg_class.h +++ b/src/include/catalog/pg_class.h @@ -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 diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h index aba9847174..23ed317baa 100644 --- a/src/include/catalog/pg_index.h +++ b/src/include/catalog/pg_index.h @@ -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 */