Le catalogue pg_class catalogue les tables, et à peu près tout ce qui a des colonnes ou qui ressemble de près ou de loin à une table. Cela inclut les index (mais il faut aussi aller voir dans pg_index), les séquences, les vues, les types composites et certaines sortes de relations spéciales ; voir relkind. Par la suite, lorsque l'on parle de « relation », on parle de tous ces types d'objets. Toutes les colonnes n'ont pas un sens pour tous les types de relations.
Tableau 42.12. Colonnes de pg_class
Nom | Type | Références | Description |
---|---|---|---|
relname | name | Nom de la table, vue, index, etc. | |
relnamespace | oid | pg_namespace .oid | OID de l'espace de noms qui contient cette relation. |
reltype | oid | pg_type .oid | OID du type de données qui correspond au type de ligne de cette table, s'il y en a un. Zéro pour les index qui n'ont pas d'entrée dans pg_type. |
relowner | oid | pg_authid .oid | Propriétaire de la relation. |
relam | oid | pg_am .oid | Si c'est un index, OID de la méthode d'accès utilisée (B-tree, hash, etc.) |
relfilenode | oid | Nom du fichier disque de cette relation ; 0 s'il n'y en a pas. | |
reltablespace | oid | pg_tablespace.oid | Le tablespace dans lequel cette relation est stockée. Si zéro, l'espace logique par défaut de cette base de données est utilisée. (Sans intérêt si la relation n'a pas de fichier sur disque.) |
relpages | int4 | Taille du fichier disque, exprimée en pages (de taille BLCKSZ). Ce n'est qu'une estimation utilisée par l'optimiseur. Elle est mise à jour par les commandes VACUUM, ANALYZE et quelques commandes DDL comme CREATE INDEX. | |
reltuples | float4 | Nombre de lignes de la table. Ce n'est qu'une estimation utilisée par l'optimiseur. Elle est mise à jour par les commandes VACUUM, ANALYZE et quelques commandes DDL comme CREATE INDEX. | |
reltoastrelid | oid | pg_class .oid | OID de la table TOAST associée à cette table. 0 s'il n'y en a pas. La table TOAST stocke les attributs de grande taille « hors de la ligne » dans une table secondaire. |
reltoastidxid | oid | pg_class .oid | Pour une table TOAST, OID de son index. 0 si ce n'est pas une table TOAST. |
relhasindex | bool | Vrai si cette table a (ou a eu récemment) un ou plusieurs index. Ce champ est mis à jour par CREATE INDEX, mais pas remis à faux immédiatement après DROP INDEX. VACUUM remet relhasindex à faux s'il s'aperçoit que la table n'a pas d'index. | |
relisshared | bool | Vrai si cette table est partagée par toutes les bases de données du groupe de bases de données. Seuls certains catalogues système (comme pg_database) sont partagés. | |
relkind | char | r = table ordinaire, i = index, S = séquence, v = vue, c = type composite, s = spécial, t = table TOAST. | |
relnatts | int2 | Nombre de colonnes utilisateur dans la relation (sans compter les colonnes système). Il doit y avoir le même nombre d'entrées dans pg_attribute. Voir aussi pg_attribute.attnum. | |
relchecks | int2 | Nombre de contraintes de vérification sur la table ; voir le catalogue pg_constraint. | |
reltriggers | int2 | Nombre de déclencheurs sur la table ; voir le catalogue pg_trigger. | |
relukeys | int2 | Inutilisé. (Ce n'est pas le nombre de clés uniques de la table.) | |
relfkeys | int2 | Inutilisé. (Ce n'est pas le nombre de clés étrangères de la table.) | |
relrefs | int2 | Inutilisé | |
relhasoids | bool | Vrai si on génère un OID pour chaque ligne de la relation. | |
relhaspkey | bool | Vrai si la table a (ou a eu) une clé primaire. | |
relhasrules | bool | Vrai si la table comprend des règles ; voir le catalogue pg_rewrite. | |
relhassubclass | bool | Vrai si au moins une table hérite ou a hérité de celle-ci. | |
relacl | aclitem[] | Droits d'accès ; voir GRANT et REVOKE pour plus de détails. |