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; dependencies for system-defined objects are loaded into it
8  * on-the-fly during initdb. Most built-in objects are pinned anyway,
9  * and hence need no explicit entries in pg_shdepend.
10  *
11  * NOTE: we do not represent all possible dependency pairs in pg_shdepend;
12  * for example, there's not much value in creating an explicit dependency
13  * from a relation to its database. Currently, only dependencies on roles
14  * are explicitly stored in pg_shdepend.
15  *
16  * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
17  * Portions Copyright (c) 1994, Regents of the University of California
18  *
19  * src/include/catalog/pg_shdepend.h
20  *
21  * NOTES
22  * The Catalog.pm module reads this file and derives schema
23  * information.
24  *
25  *-------------------------------------------------------------------------
26  */
27 #ifndef PG_SHDEPEND_H
28 #define PG_SHDEPEND_H
29 
30 #include "catalog/genbki.h"
31 #include "catalog/pg_shdepend_d.h"
32 
33 /* ----------------
34  * pg_shdepend definition. cpp turns this into
35  * typedef struct FormData_pg_shdepend
36  * ----------------
37  */
38 CATALOG(pg_shdepend,1214,SharedDependRelationId) BKI_SHARED_RELATION
39 {
40  /*
41  * Identification of the dependent (referencing) object.
42  *
43  * Note that dbid can 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(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, SharedDependDependerIndexId, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops));
76 DECLARE_INDEX(pg_shdepend_reference_index, 1233, SharedDependReferenceIndexId, on pg_shdepend using btree(refclassid oid_ops, refobjid oid_ops));
77 
78 #endif /* PG_SHDEPEND_H */
DECLARE_INDEX(pg_shdepend_depender_index, 1232, SharedDependDependerIndexId, on pg_shdepend using btree(dbid oid_ops, classid oid_ops, objid oid_ops, objsubid int4_ops))
#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
CATALOG(pg_shdepend, 1214, SharedDependRelationId) BKI_SHARED_RELATION
Definition: pg_shdepend.h:38
#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