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.
SHARED_DEPENDENCY_TABLESPACE
(t
)L'objet référencé (qui doit être un tablespace) est mentionné comme le tablespace pour une relation qui n'a pas de stockage.
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 et les tablespaces comme objets référencés.