PostgreSQL Source Code  git master
pg_shdepend.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * pg_shdepend.h
4  * definition of the "shared dependency" system catalog (pg_shdepend)
5  *
6  * pg_shdepend has no preloaded contents, so there is no pg_shdepend.dat
7  * file; system-defined dependencies are loaded into it during a late stage
8  * of the initdb process.
9  *
10  * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
11  * for example, there's not much value in creating an explicit dependency
12  * from a relation to its database. Currently, only dependencies on roles
13  * are explicitly stored in pg_shdepend.
14  *
15  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
16  * Portions Copyright (c) 1994, Regents of the University of California
17  *
18  * src/include/catalog/pg_shdepend.h
19  *
20  * NOTES
21  * The Catalog.pm module reads this file and derives schema
22  * information.
23  *
24  *-------------------------------------------------------------------------
25  */
26 #ifndef PG_SHDEPEND_H
27 #define PG_SHDEPEND_H
28 
29 #include "catalog/genbki.h"
30 #include "catalog/pg_shdepend_d.h"
31 
32 /* ----------------
33  * pg_shdepend definition. cpp turns this into
34  * typedef struct FormData_pg_shdepend
35  * ----------------
36  */
37 CATALOG(pg_shdepend,1214,SharedDependRelationId) BKI_SHARED_RELATION
38 {
39  /*
40  * Identification of the dependent (referencing) object.
41  *
42  * These fields are all zeroes for a DEPENDENCY_PIN entry. Also, dbid can
43  * be zero to denote a shared object.
44  */
45  Oid dbid BKI_LOOKUP_OPT(pg_database); /* OID of database
46  * containing object */
47  Oid classid BKI_LOOKUP_OPT(pg_class); /* OID of table containing
48  * object */
49  Oid objid; /* OID of object itself */
50  int32 objsubid; /* column number, or 0 if not used */
51 
52  /*
53  * Identification of the independent (referenced) object. This is always
54  * a shared object, so we need no database ID field. We don't bother with
55  * a sub-object ID either.
56  */
57  Oid refclassid BKI_LOOKUP(pg_class); /* OID of table containing
58  * object */
59  Oid refobjid; /* OID of object itself */
60 
61  /*
62  * Precise semantics of the relationship are specified by the deptype
63  * field. See SharedDependencyType in catalog/dependency.h.
64  */
65  char deptype; /* see codes in dependency.h */
67 
68 /* ----------------
69  * Form_pg_shdepend corresponds to a pointer to a row with
70  * the format of pg_shdepend relation.
71  * ----------------
72  */
74 
75 DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops));
76 #define SharedDependDependerIndexId 1232
77 DECLARE_INDEX(pg_shdepend_reference_index, 1233, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
78 #define SharedDependReferenceIndexId 1233
79 
80 #endif /* PG_SHDEPEND_H */
#define BKI_SHARED_RELATION
Definition: genbki.h:27
FormData_pg_shdepend * Form_pg_shdepend
Definition: pg_shdepend.h:73
unsigned int Oid
Definition: postgres_ext.h:31
signed int int32
Definition: c.h:429
DECLARE_INDEX(pg_shdepend_depender_index, 1232, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops))
CATALOG(pg_shdepend, 1214, SharedDependRelationId) BKI_SHARED_RELATION
Definition: pg_shdepend.h:37
#define BKI_LOOKUP_OPT(catalog)
Definition: genbki.h:47
#define BKI_LOOKUP(catalog)
Definition: genbki.h:46
FormData_pg_shdepend
Definition: pg_shdepend.h:66