43.29. pg_shdepend
Le catalogue pg_shdepend enregistre
les relations de dépendance entre les objets de la base de données et
les objets partagés, comme les rôles. Cette information permet à
PostgreSQL™ de s'assurer que
tous ces objets sont déréférencés avant toute tentative de
suppression.
Voir aussi
pg_depend
, qui réalise une fonction similaire
pour les dépendances impliquant les objets contenus dans une seule
base de données.
Contrairement à la plupart des catalogues système, pg_shdepend est partagé par toutes les bases de
données d'un cluster : il n'existe qu'une seule copie de pg_shdepend par cluster, pas une par base de
données.
Tableau 43.29. Colonnes de pg_shdepend
|
Nom
|
Type
|
Références
|
Description
|
|
dbid
|
oid
|
pg_database
.oid
|
L'OID de la base de données dont fait partie l'objet
dépendant. 0 pour un objet partagé
|
|
classid
|
oid
|
pg_class
.oid
|
L'OID du catalogue système dont fait partie l'objet
dépendant
|
|
objid
|
oid
|
toute colonne OID
|
L'OID de l'objet dépendant
|
|
refclassid
|
oid
|
pg_class
.oid
|
L'OID du catalogue système dont fait partie l'objet
référencé (doit être un catalogue partagé)
|
|
refobjid
|
oid
|
toute colonne OID
|
L'OID de l'objet référencé
|
|
deptype
|
char
|
|
Un code définissant les sémantiques spécifiques des
relations de cette dépendance ; voir le texte.
|
Dans tous les cas, une entrée pg_shdepend indique que l'objet référencé ne peut
pas être supprimé sans supprimer aussi l'objet dépendant. Néanmoins,
il existe quelques différences identifiées par le
deptype
:
-
SHARED_DEPENDENCY_OWNER (o)
-
L'objet référencé (qui doit être un rôle) est le propriétaire
de l'objet dépendant.
-
SHARED_DEPENDENCY_ACL (a)
-
L'objet référencé (qui doit être un rôle) est mentionné dans la
liste de contrôle des accès (ACL, acronyme de
access control
list
) de l'objet dépendant. (Une entrée
SHARED_DEPENDENCY_ACL n'est pas
créée pour le propriétaire de l'objet car ce dernier a toujours
une entrée SHARED_DEPENDENCY_OWNER.)
-
SHARED_DEPENDENCY_PIN (p)
-
Il n'existe pas d'objet dépendant ; ce type d'entrée est un
signal indiquant que le système lui-même dépend de l'objet
référencé et que, cet objet ne doit donc jamais être supprimé.
Les entrées de ce type ne sont créées que par
initdb
. Les colonnes pour
l'objet dépendant contiennent des zéros.
D'autres types de dépendances peuvent s'avérer nécessaires dans le
futur. La définition actuelle ne supporte que les rôles comme objets
référencés.