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 51.47. Colonnes de pg_shdepend
Nom | Type | Références | Description |
---|---|---|---|
dbid | oid |
| L'OID de la base de données dont fait partie l'objet dépendant. 0 pour un objet partagé |
classid | 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 |
objsubid | int4 |
Pour une colonne de table, c'est le numéro de colonne (les
objid et classid
font référence à la table elle-même). Pour tous les autres types d'objets,
cette colonne vaut zéro
| |
refclassid | 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_POLICY
(r
)L'objet référencé (qui doit être un rôle) est mentionné comme la cible d'un objet de politique de sécurité dépendant.
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.