PostgreSQLLa base de données la plus sophistiquée au monde.

42.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 lors d'une 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é parmi toutes les bases de données d'un groupe : il n'existe qu'une seule copie de pg_shdepend par groupe, pas une par base de données.

Tableau 42.29. Colonnes de pg_shdepend

Nom Type Références Description
dbid oid pg_database.oid L'OID de la base de données où se trouve l'objet dépendant, ou zéro 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 spécifique 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 spécifique 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é pourrait ne pas être supprimé sans supprimer aussi l'objet dépendant. Néanmoins, il existe quelques différences identifiées par 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 faite pour le propriétaire de l'objet car ce dernier aura quand même 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, du coup, cet objet ne doit jamais être supprimé. Les entrées de ce type sont créées seulement par initdb. Les colonnes pour l'objet dépendant contiennent des zéros.

Les autres types de dépendances pourront être nécessaires dans le futur. Notez en particulier que la définition actuelle supporte seulement les rôles comme objets référencés.