43.24. pg_proc

publicité
FT/ROSI/DPS/ISS/EMA
Documentation PostgreSQL 7.4.8
Tableau 43-1. Catalogues système
Nom du catalogue
Contenu
pg_aggregate
fonctions d'agrégat
pg_am
méthodes d'accès aux index
pg_amop
opérateurs des méthodes d'accès
pg_amproc
procédures de support des méthodes d'accès
pg_attrdef
valeurs par défaut des colonnes
pg_attribute
colonnes des tables (<< attributs >>)
pg_cast
conversions de types de données (cast)
pg_class
tables, index, séquences (<< relations >>)
pg_constraint
contraintes de vérification, contraintes unique, contraintes de clés primaires, contraintes de
clés étrangères
pg_conversion
informations de conversions de codage
pg_database
bases de données de l'installation PostgreSQL
pg_depend
dépendances entre objets de la base de données
pg_description descriptions ou commentaires des objets de base de données
pg_group
groupes d'utilisateurs de la base de données
pg_index
informations supplémentaires des index
pg_inherits
hiérarchie d'héritage de tables
pg_language
langages pour écrire des fonctions
pg_largeobject gros objets
pg_listener
support de notification asynchrone
pg_namespace
schémas
pg_opclass
classes d'opérateurs de méthodes d'accès aux index
pg_operator
opérateurs
pg_proc
fonctions et procédures
pg_rewrite
règles de réécriture de requêtes
pg_shadow
utilisateurs de la base de données
pg_statistic
statistiques de l'optimiseur de requêtes
pg_trigger
déclencheurs
pg_type
types de données
43.2. pg_aggregate
Le catalogue pg_aggregate stocke les informations sur les fonctions d'agrégat. Une fonction d'agrégat est
une fonction qui opère sur un ensemble de données (typiquement une colonne de chaque ligne qui correspond à
une condition de requête) et retourne une valeur unique calculée à partir de toutes ces valeurs. Les fonctions
d'agrégat classiques sont sum (somme), count (compteur) et max (plus grande valeur). Chaque entrée dans
pg_aggregate est une extension d'une entrée dans pg_proc. L'entrée de pg_proc décrit le nom de
l'agrégat, les types de données d'entrée et de sortie, et d'autres informations des fonctions ordinaires.
Tableau 43-2. Les colonnes de pg_aggregate
27/05/2017
1/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
aggfnoid
regproc pg_proc.oid OID pg_proc de la fonction d'agrégat
aggtransfn
regproc pg_proc.oid fonction de transition
aggfinalfn
regproc pg_proc.oid fonction finale (zéro s'il n'y en a pas)
aggtranstype oid
agginitval
pg_type.oid
Type de la donnée interne de transition (état) de la fonction
d'agrégat
Valeur initiale de la fonction de transition. C'est un champ texte
qui contient la valeur initiale dans sa représentation externe en
chaîne de caractères. Si la valeur est nulle, la valeur d'état de
transition est initialement nulle.
text
43.3. pg_am
Le catalogue pg_am enregistre les informations sur les méthodes d'accès aux index. Il y a une ligne pour chaque
méthode d'accès supportée par le système.
Tableau 43-3. Colonnes de pg_am
Nom
Type
Références
Description
amname
name
amowner
int4
amstrategies
int2
Nombre de stratégies d'opérateur pour cette
méthode d'accès
amsupport
int2
Nombre de routines de support pour cette
méthode d'accès
Nom de la méthode d'accès
pg_shadow.usesysid
ID utilisateur du propriétaire (actuellement non
utilisé)
amorderstrategy int2
Zéro si l'index n'a pas d'ordre de tri, sinon,
numéro de de stratégie de l'opérateur de stratégie
qui décrit l'ordre de tri
amcanunique
bool
Est-ce que la méthode d'accès supporte les index
uniques ?
amcanmulticol
bool
Est-ce que la méthode d'accès supporte les index
multicolonnes ?
amindexnulls
bool
Est-ce que la méthode d'accès supporte les
entrées d'index nulles ?
amconcurrent
bool
Est-ce que la méthode d'accès supporte les mises
à jour concurrentes ?
amgettuple
regproc pg_proc.oid
Fonction << prochaine ligne valide >>
aminsert
regproc pg_proc.oid
Fonction << insérer cette ligne >>
ambeginscan
regproc pg_proc.oid
Fonction << commencer un nouveau balayage >>
amrescan
regproc pg_proc.oid
Fonction << redémarrer ce balayage >>
amendscan
regproc pg_proc.oid
Fonction << arrêter ce balayage >>
ammarkpos
regproc pg_proc.oid
Fonction << marquer la position actuelle dans le
balayage >>
amrestrpos
regproc pg_proc.oid
Fonction << restaurer une position de balayage
sauvegardée >>
ambuild
regproc pg_proc.oid
Fonction << construire un nouvel index >>
ambulkdelete
regproc pg_proc.oid
Fonction de destruction en masse
27/05/2017
2/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
amvacuumcleanup regproc pg_proc.oid
Fonction de nettoyage post-VACUUM
amcostestimate
Function d'estimation du coût d'un balayage
d'index
regproc pg_proc.oid
Une méthode d'accès qui supporte les colonnes multiples (qui a amcanmulticol à vrai) doit supporter
l'indexation des valeurs nulles dans les colonnes autres que la première, parce que l'optimiseur de requêtes
supposera que le parcours d'index peut être utilisé pour les requêtes portant seulement sur la ou les première(s)
colonne(s). Par exemple, supposons un index sur (a,b) et une requête contenant WHERE a = 4. Le système
supposera que le parcours d'index peut être utilisé pour balayer les lignes pour lesquelles a = 4, ce qui est faux
si l'index omet les lignes pour lesquelles b est nul. Il est cependant possible d'omettre les lignes dont la première
colonne d'index est nulle. (GiST le fait). amindexnulls ne doit être mis à vrai que si la méthode d'accès
indexe toutes les lignes, y compris toute combinaison de valeurs nulles.
43.4. pg_amop
Le catalogue pg_amop stocke les informations sur les opérateurs associés aux classes d'opérateurs de méthodes
d'accès aux index. Il y a une ligne pour chaque opérateur qui est membre d'une classe d'opérateurs.
Tableau 43-4. Colonnes de pg_amop
Nom
amopclaid
Type
Références
oid
pg_opclass.oid
Description
La classe d'opérateur d'index de cette entrée.
amopstrategy int2
Numéro de stratégie d'opérateur
amopreqcheck bool
Une entrée trouvée dans l'index doit être revérifiée.
amopopr
oid
pg_operator.oid OID de l'opérateur
43.5. pg_amproc
Le catalogue pg_amproc enregistre des informations sur les procédures de support associées aux classes
d'opérateurs de méthodes d'accès. Il y a une ligne pour chaque procédure de support appartenant à une classe
d'opérateur.
Tableau 43-5. Colonnes de pg_amproc
Nom
Type
amopclaid oid
Références
Description
pg_opclass.oid La classe d'opérateurs d'index de cette entrée
amprocnum int2
Numéro de procédure de support
amproc
OID de la procédure
regproc pg_proc.oid
43.6. pg_attrdef
Le catalogue pg_attrdef stocke les valeurs par défaut des colonnes. Les informations principales des
colonnes sont stockées dans pg_attribute (voir plus loin). Seules les colonnes pour lesquelles une valeur
par défaut est explicitement spécifiée (quand la table est créée ou quand une colonne est ajoutée) ont une entrée
dans pg_attrdef.
Tableau 43-6. Colonnes de pg_attrdef
27/05/2017
3/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
adrelid oid
Références
pg_class.oid
Description
La table de cette colonne.
adnum
int2 pg_attribute.attnum Numéro de la colonne
adbin
text
Représentation interne de la valeur par défaut de la colonne
adsrc
text
Une représentation lisible de la valeur par défaut
43.7. pg_attribute
Le catalogue pg_attribute stocke les informations sur les colonnes des tables. Il y a exactement une ligne
de pg_attribute pour chaque colonne de chaque table de la base de données. (Il y a aussi des attributs pour
les index et pour d'autres objets. Voir pg_class.)
Le terme attribut est équivalent à colonne et est utilisé pour des raisons historiques.
Tableau 43-7. Colonnes de pg_attribute
Nom
Type
attrelid
oid
attname
name
atttypid
oid
Références
Description
pg_class.oid La table de cette colonne
Le nom de la colonne
pg_type.oid
Le type de données de cette colonne
attstattarget int4
attstattarget contrôle le niveau de détail des statistiques
accumulées pour cette colonne par ANALYZE. Une valeur de zéro
indique qu'aucune statistique ne doit être collectée. Une valeur
négative indique d'utiliser l'objectif de statistiques par défaut. Le
sens exacte d'une valeur positive dépend du type de données. Pour
les données scalaires, attstattarget est à la fois le nombre
visé de << valeurs les plus courantes >> et le nombre visé
d'histogrammes à créer.
attlen
int2
Une copie de pg_type.typlen pour le type de cette colonne.
attnum
int2
Le numéro de la colonne. Les colonnes ordinaires sont
numérotées en commençant par 1. Les colonnes système, comme
les oid, ont des numéros négatifs arbitraires.
attndims
int4
Nombre de dimensions, si la colonne est de type tableau, sinon 0.
(Pour l'instant, le nombre de dimensions des tableaux n'est pas
contrôlé, donc une valeur autre que zéro indique que << c'est un
tableau >>.)
attcacheoff
int4
Toujours -1 sur disque, mais peut être mis à jour, en mémoire,
pour mettre en cache l'emplacement de l'attribut dans la ligne.
atttypmod
int4
atttypmod des données spécifiques au type de données précisé
lors de la création de la table (par exemple, la taille maximale
d'une colonne de type varchar). Il est transmis à des fonctions
spécifiques au type d'entrée de données et de vérification de taille.
La valeur est généralement de -1 pour les types de données qui
n'ont pas besoin de atttypmod.
attbyval
bool
Une copie de pg_type.typbyval pour ce type de données.
attstorage
char
Contient normalement une copie de pg_type.typstorage
pour ce type de données. Pour les types de données TOASTables,
cette valeur peut être modifiée après la création de la colonne
pour contrôler la règle de stockage.
attisset
bool
Vaut vrai si cet attribut est un ensemble. Dans ce cas, ce qui est
27/05/2017
4/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
réellement stocké dans l'attribut est l'OID d'une ligne dans le
catalogue pg_proc. La ligne de pg_proc contient la chaîne de
requête qui définit cet ensemble, c'est-à-dire la requête à exécuter
pour obtenir l'ensemble. Donc, atttypid (voir plus haut) fait
référence au type de données retourné par cette requête mais la
taille réelle de cet attribut est celle d'un oid. --- Au moins en
théorie. Tout cela est probablement cassé de nos jours.
attalign
char
Contient une copie de pg_type.typalign pour le type de
cette colonne.
attnotnull
bool
Indique une contrainte de colonne non nulle. Il est possible de
changer cette colonne pour activer ou désactiver cette contrainte.
atthasdef
bool
Indique que cette colonne a une valeur par défaut. Dans ce cas, il
y aura une entrée correspondante dans le catalogue
pg_attrdef pour définir cette valeur.
attisdropped
bool
Indique que cette colonne a été supprimée et n'est plus valide.
Une colonne supprimée est toujours présente physiquement dans
la table, mais elle est ignorée par l'analyseur de requête et ne peut
être accédée en SQL.
attislocal
bool
Cette colonne est définie localement dans la relation. Notez
qu'une colonne peut être définie localement et héritée
simultanément.
attinhcount
int4
Nombre d'ancêtres directs de cette colonne. Une colonne qui a un
nombre d'ancêtres différent de zéro ne peut être supprimée ni
renommée.
43.8. pg_cast
Le catalogue pg_cast stocke les chemins de conversion de type de donnée, qu'ils soient par défaut ou définis
avec la commande CREATE CAST.
Tableau 43-8. Colonnes de pg_cast
Nom
Type
Références
Description
castsource
oid
pg_type.oid OID du type de données source
casttarget
oid
pg_type.oid OID du type de données en sortie
castfunc
oid
OID de la fonction à utiliser pour faire cette conversion. Vaut Zéro si
pg_proc.oid les types de données sont binairement compatibles (c'est-à-dire si
aucune opération n'est nécessaire pour effectuer la transformation).
castcontext char
Indique dans quel contexte la conversion peut être utilisée. e si seules
les conversions explicites sont autorisées (avec CAST, :: ou la
syntaxe d'appel de fonction). a si les conversions implicites lors de
l'affectation à une colonne sont autorisées, en plus des conversions
explicites. i si les conversions implicites dans les expressions sont
autorisées en plus des autres cas.
43.9. pg_class
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
27/05/2017
5/27
841050908
FT/ROSI/DPS/ISS/EMA
vues, 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 43-9. Colonnes de pg_class
Nom
Type
Références
Description
relname
name
relnamespace
oid
pg_namespace
OID de l'espace de noms qui contient cette relation.
.oid
reltype
oid
OID du type de données qui correspond à cette table,
pg_type .oid s'il y en a un. Zéro pour les index qui n'ont pas d'entrée
dans pg_type.
relowner
int4
pg_shadow
.usesysid
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.
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 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 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.
Nom de la table, vue, index, etc.
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.)
relhasindex
27/05/2017
6/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
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 a des règles ; voir le catalogue
pg_rewrite.
relhassubclass bool
Vrai si au moins une table hérite de celle-ci.
relacl
Droits d'accès ; voir les descriptions de GRANT et
REVOKE pour plus de détails.
aclitem[]
43.10. pg_constraint
Le catalogue pg_constraint stocke les vérifications, clés primaires, clés uniques et étrangères des tables
(Les contraintes de colonnes ne sont pas traitées de manière particulière. Elles sont équivalentes à des contraintes
de tables.) Les contraintes NOT NULL sont représentées dans le catalogue pg_attribute.
Les contraintes de vérification de domaine sont aussi stockées ici.
Tableau 43-10. Colonnes de pg_constraint
Nom
Type
conname
name
connamespace
oid
contype
char
Références
Description
Nom de la contrainte (pas nécessairement unique !)
pg_namespace
.oid
OID de l'espace de noms qui contient cette contrainte.
c = contrainte de vérification, f = contrainte de clé
étrangèret, p = contrainte de clé primaire, u = contrainte
de clé unique
condeferrable bool
La contrainte est-elle différable ?
condeferred
bool
La contrainte est-elle différée par défaut ?
conrelid
oid
pg_class.oid
Table à laquelle appartient la contrainte ; 0 si ce n'est pas
une contrainte de table.
contypid
oid
pg_type .oid
Domaine auquel appartient la contrainte ; 0 si ce n'est pas
une contrainte de domaine.
confrelid
oid
pg_class .oid
Si c'est une clé étrangère, la table référencée ; sinon 0
confupdtype
char
Code de l'action de mise à jour de la clé étrangère
confdeltype
char
Code de l'action de suppression de clé étrangère
confmatchtype char
Type de vérification de clé étrangère
conkey
int2[]
pg_attribute
.attnum
Si c'est une contrainte de table, liste des colonnes
contraintes
confkey
int2[]
pg_attribute
.attnum
Si c'est une clé étrangère, liste des colonnes référencées
conbin
text
S'il s'agit d'une contrainte de vérification, représentation
interne de l'expression
consrc
text
S'il s'agit d'une contrainte de vérification, représentation
compréhensible de l'expression
27/05/2017
7/27
841050908
FT/ROSI/DPS/ISS/EMA
Note : consrc n'est pas mis à jour lors de modification d'objets référencés ; par exemple, il ne pistera pas les
renommages de colonnes. Plutôt que se fier à ce champ, il est mieux d'utiliser pg_get_constraintdef()
pour extraire la définition d'une contrainte de vérification.
Note : pg_class.relchecks doit connaître le même nombre de contraintes de vérification pour chaque
relation.
43.11. pg_conversion
Le catalogue pg_conversion stocke des informations de conversion de codage. Voir la commande CREATE
CONVERSION pour plus d'information.
Tableau 43-11. Colonnes de pg_conversion
Nom
Type
Références
Description
Nom de la conversion (unique au sein d'un espace
de noms)
conname
name
connamespace
oid
pg_namespace .oid
OID de l'espace de nom qui contient cette
conversion.
conowner
int4
pg_shadow
.usesysid
Propriétaire de la conversion
conforencoding int4
ID du codage source
contoencoding
int4
ID du codage de destination
conproc
regproc pg_proc .oid
Procédure de conversion
condefault
bool
Vrai s'il s'agit de la conversion par défaut
43.12. pg_database
Le catalogue pg_database stocke les informations sur les bases de données disponibles. Les bases de
données sont créées avec la commande CREATE DATABASE. Consultez le Chapitre 18 pour avoir des détails
sur la signification de certains paramètres.
Contrairement à la plupart des catalogues système, pg_database est partagé entre toutes les bases de données
d'un groupe de bases : il n'y a qu'une seule copie de pg_database par groupe, pas une par base.
Tableau 43-12. Colonnes de pg_database
Nom
Type
datname
name
datdba
int4
encoding
int4
Références
Description
Nom de la base de données
pg_shadow
.usesysid
Propriétaire de la base, généralement l'utilisateur qui l'a créée
Codage des caractères pour cette base de données.
datistemplate bool
Si ce champ vaut vrai, alors la base peut être utilisée dans la
clause TEMPLATE de la commande CREATE DATABASE
pour créer une nouvelle base qui sera un clone de celle-ci.
datallowconn
Si ce champ vaut faux, alors personne ne peut se connecter à
cette base de données. Ceci permet d'empêcher toute
altération de la base template0.
bool
datlastsysoid oid
27/05/2017
Dernier OID système de la base de données ; utile en
8/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
particulier pour pg_dump.
xid
Toutes les lignes insérées ou supprimées par des ID de
transaction inférieurs à celui-ci ont été marquées << connu
comme validé >> ou << connu comme annulé >> dans cette
base de données. C'est utilisé pour déterminer quand l'espace
des journaux de validation peut être réutilisé.
xid
Toutes les lignes insérées ou supprimées par des ID de
transaction inférieurs à celui-ci ont été réétiquetés avec un ID
de transaction permanent (<< gelé >> dans cette base de
données. C'est utile pour vérifier si une base de données doit
être rapidement nettoyée avec VACUUM pour éviter les
problèmes créés par une remise à zéro du compteur de
transaction.
datpath
text
Si la base de données est stockées à un emplacement
particulier, alors ce champ enregistre cet emplacement. Il
s'agit soit d'une variable d'environnement, soit d'un chemin
absolu, suivant la façon dont le champ a été saisi.
datconfig
text[]
Valeurs par défaut de la session pour les variables
modifiables en cours de fonctionnement.
datacl
aclitem[]
Droits d'accès
datvacuumxid
datfrozenxid
43.13. pg_depend
Le catalogue pg_depend enregistre les relations de dépendances entre les objets de la base de données. Cette
information permet à la commande DROP de trouver quels autres objets doivent être supprimés par la commande
DROP CASCADE ou au contraire empêchent la suppression dans le cas de DROP RESTRICT.
Tableau 43-13. Colonnes de pg_depend
Nom
Type
Références
Description
classid
oid
pg_class
.oid
objid
oid
toute colonne
OID de l'objet dépendant
OID
objsubid
int4
refclassid
oid
pg_class
.oid
refobjid
oid
toute colonne
OID de l'objet référencé
OID
OID du catalogue système dans lequel l'objet dépendant se trouve.
Pour une colonne de table, ce champ indique le numéro de colonne (les
champs objid et classid se réfèrent à la table elle-même). Pour tous
les autres types d'objets, cette colonne est à zéro.
OID du catalogue système dans lequel l'objet référencé se trouve.
refobjsubid int4
Pour une colonne de table, ce champ indique le numéro de colonne (les
champs refobjid et refclassid se réfèrent à la table elle même).
Pour tous les autres types d'objets, cette colonne est à zéro.
deptype
Code définissant la sémantique de cette relation de dépendance. Voir le
texte.
char
Dans tous les cas, une entrée dans pg_depend indique que l'objet référence ne peut pas être supprimé sans
supprimer aussi l'objet dépendant. Néanmoins, il y a des nuances, identifiées par deptype :
27/05/2017
9/27
841050908
FT/ROSI/DPS/ISS/EMA
DEPENDENCY_NORMAL (n)
Une relation normale entre des objets créés séparément. L'objet dépendant peut être supprimé sans
affecter l'objet référencé. L'objet référencé ne peut être supprimé qu'en précisant l'option CASCADE,
auquel cas l'objet dépendant est supprimé lui-aussi. Exemple : une colonne de table a une dépendance
normale avec ses types de données.
DEPENDENCY_AUTO (a)
L'objet dépendant peut être supprimé séparément de l'objet de référence, et doit être automatiquement
supprimé si l'objet référencé est supprimé, quel que soit le mode RESTRICT ou CASCADE. Exemple :
une contrainte nommée sur une table est auto-dépendante sur la table et sera automatiquement
supprimée en même temps que la table.
DEPENDENCY_INTERNAL (i)
L'objet dépendant a été créé comme une partie de l'objet référencé et n'est réellement qu'une partie de
son implémentation interne. Un DROP de l'objet dépendant sera interdit (avec un message à l'utilisateur
lui proposant de faire un DROP de l'objet référencé à la place). Une suppression de l'objet référencé sera
propagé à l'objet dépendant que CASCADE soit précisé ou non. Exemple : un trigger qui est créé pour
vérifier une contrainte de clé étrangère, est rendu dépendant de l'entrée de la contrainte dans
pg_constraint.
DEPENDENCY_PIN (p)
Il n'y a pas d'objet dépendant ; ce type d'entrée signale que le système lui même dépend de l'objet
référencé, et donc que l'objet ne doit jamais être supprimé. Les entrées de ce type sont créées
uniquement par initdb. Les colonnes pour l'objet dépendant contiennent des zéros.
D'autres types de dépendance pourraient apparaître dans le futur.
43.14. pg_description
Le catalogue pg_description peut stocker des descriptions ou des commentaires optionnels pour chaque
objet de la base de données. Les descriptions sont manipulées avec la commande COMMENT et lues avec les
commandes \d de psql. Les descriptions de nombreux objets internes sont prédéfinies dans
pg_description.
Tableau 43-14. Colonnes de pg_description
Nom
Type
Références
Description
objoid
oid
toute colonne
OID de l'objet décrit.
OID
classoid
oid
pg_class
.oid
objsubid
int4
description text
OID du système catalogue dans lequel apparaît l'objet décrit.
Pour un commentaire sur une table, le numéro de colonne. Les champs
objoid et classoid font référence à la table elle-même. Pour tous
les autres types de données, cette colonne est à zéro.
Texte quelconque qui sert de description à cet objet.
43.15. pg_group
27/05/2017
10/27
841050908
FT/ROSI/DPS/ISS/EMA
Le catalogue pg_group définit les groupes et stocke les utilisateurs qui en sont membres. Les groupes sont
créés avec la commande CREATE GROUP. Consultez le Chapitre 17 pour des informations sur la gestion des
droits des utilisateurs.
Parce que les utilisateurs et les groupes sont définis pour tout le groupe de bases de données, pg_group est
partagé par toutes les bases de données du groupe : il n'y a qu'une seule copie de pg_group par groupe de bases
de données, et non pas une par base de données.
Tableau 43-15. Colonnes de pg_group
Nom
groname
Type
Références
name
grosysid int4
grolist
int4[]
Description
Nom du groupe
Un numéro quelconque qui identifie ce groupe.
pg_shadow
.usesysid
Tableau contenant les identifiants des utilisateurs de ce
groupe
43.16. pg_index
Le catalogue pg_index contient une partie des informations sur les index. Le reste se trouve essentiellement
dans pg_class.
Tableau 43-16. Colonnes de pg_index
Nom
Type
Références
Description
indexrelid
oid
pg_class
.oid
OID de l'entrée dans pg_class pour cet index
indrelid
oid
pg_class
.oid
OID de l'entrée dans pg_class de la table sur
laquelle cet index porte.
indkey
Tableau comportant indnatts valeurs (et pas plus
de INDEX_MAX_KEYS), qui précise les colonnes
indexées. Par exemple, une valeur de 1 3 indique que
pg_attribute la première et la troisième colonne de la table forment
int2vector
.attnum
la clé de l'index. Une valeur de zéro dans le tableau
indique que l'attribut d'index correspondant est une
expression sur les colonnes de la table, et non pas une
simple référence de colonne.
indclass
oidvector
indnatts
int2
Nombre de colonnes de l'index (duplique
pg_class.relnatts)
indisunique
bool
Vrai s'il s'agit d'un index unique.
indisprimary
bool
Vrai si cet index est la clé primaire de la table.
(indisunique doit toujours être vrai quand ce
champ l'est aussi.)
pg_opclass
.oid
Pour chaque colonne dans la clé d'index, ce champ
contient l'OID de l'opérateur de classe à utiliser. Pour
plus de détails, voir pg_opclass.
indisclustered bool
Vrai si la table était organisée en fonction de cet index.
indexprs
Arbres d'expressions (en représentation
nodeToString()) pour les attributs d'index qui ne
sont pas de simples références de colonnes. Il s'agit
d'une liste avec un élément pour chaque entrée à zéro
27/05/2017
text
11/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
dans indkey. Nul si tous les attributs d'index sont de
simples références.
indpred
Arbre d'expression (en représentation
nodeToString()) pour les prédicats d'index
partiels. Nul s'il ne s'agit pas d'un index partiel.
text
43.17. pg_inherits
Le catalogue pg_inherits enregistre l'information sur la hiérarchie d'héritage des tables.
Tableau 43-17. Colonnes de pg_inherits
Nom
Type
Références
Description
oid
pg_class
.oid
OID de la table fille.
inhparent oid
pg_class
.oid
OID de la table mère.
inhrelid
inhseqno
S'il y a plus d'un parent pour une table fille (héritage multiple), ce nombre
indique dans quel ordre les colonnes héritées doivent être arrangées. Le
compteur commence à 1.
int4
43.18. pg_language
Le catalogue pg_language enregistre les interfaces ou les langages avec lesquels vous pouvez écrire des
fonctions ou des procédures stockées. Voir à CREATE LANGUAGE et dans le Chapitre 36 pour avoir plus
d'information sur les gestionnaires de langages.
Tableau 43-18. Colonnes de pg_language
Nom
lanname
Type
Références
Description
name
Nom du langage (à préciser lorsque vous créez une fonction)
lanispl
bool
Vaut faux pour les langages internes (comme SQL) et vrai pour
les langages définis par l'utilisateur. Pour l'instant, pg_dump
utilise ce champ pour déterminer quels langages doivent être
sauvegardés mais cela sera peut-être un jour remplacé par un
mécanisme différent.
lanpltrusted
bool
Indique un langage sécurisé. Voir à la commande CREATE
LANGUAGE ce que cela sous-entend. S'il s'agit d'un langage
interne, cette colonne est sans importance.
lanplcallfoid oid
pg_proc
.oid
Pour les langages non-internes, ceci référence le gestionnaire de
langage, qui est une fonction spéciale en charge de l'exécution
de toutes les fonctions écrites dans ce langage.
lanvalidator
oid
pg_proc
.oid
Ceci référence une fonction de validation de langage, en charge
de vérifier la syntaxe et la validité des nouvelles fonctions
lorsqu'elles sont créées. Voir à CREATE LANGUAGE pour plus
d'informations sur les fonctions de validation.
lanacl
aclitem[]
27/05/2017
Droits d'accès
12/27
841050908
FT/ROSI/DPS/ISS/EMA
43.19. pg_largeobject
Le catalogue pg_largeobject contient les données qui décrivent les << objets de grande taille >>. Un gros
objet est identifié par un OID qui lui est affecté lors de sa création. Chaque objet de grande taille est coupé en
segments ou << pages >> suffisamment petites pour être facilement stockées dans des lignes de
pg_largeobject. La taille de données par page est définie par LOBLKSIZE, qui vaut actuellement
BLCKSZ/4, soit habituellement 2 Ko).
Tableau 43-19. Colonnes de pg_largeobject
Nom
loid
Type Références
oid
Description
Identifiant de l'objet de grande taille auquel appartient cette page.
pageno int4
Numéro de cette page parmi son objet de grande taille, en partant de zéro.
data
Données effectivement stockées dans l'objet de grande taille. Il ne fait jamais
plus de LOBLKSIZE mais peut faire moins.
bytea
Chaque ligne de pg_largeobject contient les données d'une page de l'objet de grande taille, en commençant
à l'octet (pageno * LOBLKSIZE) de l'objet. Ceci permet un stockage économique : des pages peuvent
manquer, et d'autres faire moins de LOBLKSIZE octets même si elles ne sont pas les dernières de leur objet. Les
parties manquantes sont considérées comme des suites de zéro.
43.20. pg_listener
Le catalogue pg_listener supporte les commandes LISTEN et NOTIFY. Un notifié (<< listener >>) crée
une entrée dans pg_listener pour chaque nom de notification qu'il attend. Un notifieur parcourt
pg_listener et met à jour chaque entrée pour montrer qu'une notification est arrivée. Le notifieur envoie
aussi un signal (en utilisant le numéro de processus PID) enregistré dans la table pour prévenir le notifié.
Tableau 43-20. Colonnes de pg_listener
Nom
Type Références
Description
relname
name
Nom de la notification. (Il ne doit pas spécialement correspondre à un
nom de relation de la base. Le nom relname est historique.)
listenerpid
int4
PID du processus serveur qui a créé cette entrée.
notification int4
Zéro si aucun événement n'est en attente pour ce notifié. Si un événement
est en attente, ce champ contient le PID du processus serveur qui a
envoyé cette notification.
43.21. pg_namespace
Le catalogue pg_namespace stocke les espaces de noms. Un espace de noms est la structure sous-jacente des
schémas SQL : chaque espace de noms peut avoir un ensemble séparé de relations, types, etc. sans qu'il y ait de
conflit de noms.
Tableau 43-21. Colonnes de pg_namespace
Nom
nspname
Type
name
nspowner int4
27/05/2017
Références
Description
Nom de l'espace de noms
pg_shadow .usesysid Propriétaire de l'espace de noms
13/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
nspacl
Type
Références
aclitem[]
Description
Droits d'accès
43.22. pg_opclass
Le catalogue pg_opclass définit les classes d'opérateurs de méthodes d'accès aux index. Chaque classe
d'opérateur définit la sémantique pour les colonnes d'index d'un type particulier, pour une méthode d'accès
particulière. Notez qu'il peut y avoir plusieurs classes d'opérateurs pour une combinaison donnée de
type/méthode d'accès, ce qui permet de supporter différents comportements.
Les classes d'opérateurs sont longuement décrites dans la Section 33.13.
Tableau 43-22. Colonnes de pg_opclass
Nom
Type
opcamid
oid
opcname
name
Références
pg_am .oid
Description
Méthode d'accès à l'index pour lequel est la classe
d'opérateur
Nom de la classe d'opérateurs
opcnamespace oid
pg_namespace .oid Espace de noms de la classe d'opérateurs.
opcowner
int4
pg_shadow
.usesysid
Propriétaires de la classe d'opérateurs.
opcintype
oid
pg_type .oid
Type de données en entrée de la classe d'opérateurs.
opcdefault
bool
opckeytype
oid
Vrai si la classe d'opérateurs est la classe par défaut pour
opcintype
pg_type .oid
Type des données d'index ou zéro s'il s'agit du même que
opcintype
La plus grande partie des informations définissant une classe d'opérateurs n'est pas dans les lignes de
pg_opclass mais dans les lignes correspondantes de pg_amop et pg_amproc. Ces lignes sont considérées
comme faisant partie de la définition de classe d'opérateurs, un peu de la même façon qu'une relation est définie
par une ligne unique de pg_class et par les lignes associées de pg_attribute et d'autres tables.
43.23. pg_operator
Le catalogue pg_operator stocke les informations sur les opérateurs. Voir la commande CREATE
OPERATOR et la Section 33.11 pour avoir plus de détails sur ces paramètres.
Tableau 43-23. Colonnes de pg_operator
Nom
oprname
Type
Références
name
Description
Nom de l'opérateur
oprnamespace oid
pg_namespace
.oid
OID de l'espace de nom qui contient cet opérateur.
oprowner
int4
pg_shadow
.usesysid
Propriétaire de l'opérateur
oprkind
char
b = infix (<< les deux >>), l = prefix (<< gauche >>), r =
postfix (<< droit >>)
oprcanhash
bool
Cet opérateur supporte les jointures par découpage.
27/05/2017
14/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
oprleft
oid
pg_type .oid
Type de l'opérande de gauche
oprright
oid
pg_type .oid
Type de l'opérande de droite
oprresult
oid
pg_type .oid
Type du résultat
oprcom
oid
pg_operator
.oid
Commutateur de cet opérateur, s'il en existe un.
oprnegate
oid
pg_operator
.oid
Négateur de cet opérateur, s'il en existe un.
oprlsortop
oid
pg_operator
.oid
Si cet opérateur supporte les jointures par fusion (merge
join), ce champ contient l'opérateur qui permet de trier le
type de l'opérateur de gauche (L<L).
oprrsortop
oid
pg_operator
.oid
Si cet opérateur supporte les jointures par fusion (merge
join), ce champ contient l'opérateur qui permet de trier le
type de l'opérateur de droite (R<R)
oprltcmpop
oid
pg_operator
.oid
Si cet opérateur supporte les jointures par fusion (merge
join), ce champ contient l'opérateur qui permet de comparer
les types des opérandes de gauche et de droite(L<R).
oprgtcmpop
oid
pg_operator
.oid
Si cet opérateur supporte les jointures par fusion (merge
join), ce champ contient l'opérateur plus grand que qui
compare les types d'opérandes de gauche et de droite (L>R).
oprcode
regproc pg_proc .oid
Fonction qui implémente cet opérateur
oprrest
regproc pg_proc .oid
Fonction d'estimation de sélectivité de restriction pour cet
opérateur
oprjoin
regproc pg_proc .oid
Fonction d'estimation de sélectivité de jointure pour cet
opérateur
Les colonnes inutilisées contiennent des zéros, par exemple oprleft vaut zéro pour un opérateur préfixe.
43.24. pg_proc
Le catalogue pg_proc stocke les informations sur les fonctions (ou procédures). La description de CREATE
FUNCTION et la Section 33.3 contiennent plus d'informations sur le sens de certaines colonnes.
Cette table contient des données pour les fonctions d'agrégat comme pour les fonctions simples. Si proisagg
est vrai, il devrait y avoir une ligne correspondante dans pg_aggregate.
Tableau 43-24. Colonnes de pg_proc
Nom
proname
Type
Références
name
Description
Nom de la fonction
pronamespace oid
pg_namespace
OID de l'espace de noms auquel cette fonction appartient.
.oid
proowner
int4
pg_shadow
.usesysid
Propriétaire de la fonction.
prolang
oid
pg_language
.oid
Langage ou interface d'appel pour cette fonction
proisagg
bool
La fonction est une fonction d'agrégat.
prosecdef
bool
Si vrai, la fonction définit la sécurité (c'est-à-dire une
fonction << setuid >>).
27/05/2017
15/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
proisstrict
bool
Si vrai, la fonction retourne NULL si un de ses arguments
au moins est NULL. Dans ce cas, la fonction ne sera en
fait pas appelée du tout. Les fonctions qui ne sont pas
<< strictes >> doivent être préparées à traiter des
paramètres NULL.
proretset
bool
Si vrai, la fonction retourne un ensemble (c'est-à-dire des
valeurs multiples du type défini).
provolatile
char
provolatile indique si le résultat de la fonction
dépend uniquement de ses arguments ou s'il est affecté par
des facteurs externes. Il vaut i pour les fonctions
<< immuables >>, qui donnent toujours le même résultat
quand les paramètres entrés sont les mêmes. Il vaut s pour
les fonctions << stables >>, dont le résultat (pour les
mêmes paramètres d'entrée) ne change pas tout au long
d'un balayage (de table). Il vaut v pour les fonctions
<< volatiles >>, dont le résultat peut varier à tout instant.
(Utilisez v aussi pour les fonctions qui ont des effets de
bord, afin que les appels à ces fonctions ne soient pas
optimisés.)
pronargs
int2
Nombre d'arguments
prorettype
oid
proargtypes
oidvector pg_type .oid
Tableau contenant les types de données des arguments de
la fonction.
prosrc
text
Ce champ indique au gestionnaire de fonctions la façon
d'invoquer la fonction. Il peut s'agir du code source pour
un langage interprété, d'un symbole lié, d'un nom de
fichier ou de n'importe quoi d'autre, en fonction du langage
ou de la convention d'appel.
probin
bytea
Information supplémentaire sur la façon d'invoquer la
fonction. Encore une fois, l'interprétation dépend du
langage.
proacl
aclitem[]
Droits d'accès
pg_type .oid Type de données renvoyé
prosrc contient le nom de la fonction en langage C (symbol lié) pour les fonctions compilées, aussi bien les
fonctions standard que les fonctions chargées dynamiquement. Pour tous les autres types de langages, prosrc
contient le code source de la fonction. probin est inutilisé, sauf pour les fonctions en C chargées
dynamiquement, pour lesquelles il donne le nom de fichier de la bibliothèque partagée qui contient la fonction.
43.25. pg_rewrite
Le catalogue pg_rewrite stocke les règles de réécriture pour les tables et les vues.
Tableau 43-25. Colonnes de pg_rewrite
Nom
Type
rulename
name
ev_class
oid
ev_attr
int2
27/05/2017
Références
Description
Nom de la règle
pg_class
.oid
Table sur laquelle porte cette règle.
Colonne sur laquelle porte cette règle. Actuellement, cette colonne vaut
toujours zéro pour indiquer qu'il s'agit de la table entière.
16/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
ev_type
char
Références
Description
Type d'évènement déclenchant la règle : 1 = SELECT, 2 = UPDATE, 3 =
INSERT, 4 = DELETE
is_instead bool
Vrai s'il s'agit d'une règle INSTEAD (à la place de).
ev_qual
text
Arbre d'expression (sous la forme d'une représentation
nodeToString()) pour la condition qualifiant la règle.
ev_action
text
Arbre de requête (sous la forme d'une représentation
nodeToString()) pour l'action de la règle.
Note : pg_class.relhasrules doit être vrai si une table a au moins une règle dans ce catalogue.
43.26. pg_shadow
Le catalogue pg_shadow contient les informations sur les utilisateurs de la base de données. Le nom provient
du fait que cette table ne doit pas être lisible par le public, vu qu'elle contient des mots de passe. pg_user est
une vue accessible par tous sur pg_shadow qui masque le champ mot de passe.
Chapitre 17 contient des informations détaillées sur les utilisateurs et la gestion des droits d'accès.
Parce que les identités des utilisateurs sont globales au groupe de bases de données (cluster), pg_shadow est
partagé par toutes les bases de données d'un groupe de bases de données : il n'y a qu'une seule copie de
pg_shadow par groupe de bases de données, et non pas une par base de données.
Tableau 43-26. Colonnes de pg_shadow
Nom
Type
Références
Description
usename
name
Nom de l'utilisateur
usesysid
int4
Identifiant de l'utilisateur (numéro arbitraire utilisé pour référencer cet
utilisateur).
usecreatedb bool
L'utilisateur a le droit de créer des bases de données.
usesuper
bool
L'utilisateur est un super-utilisateur
usecatupd
bool
L'utilisateur a le droit de modifier les catalogues système. (Même un
super-utilisateur n'a pas le droit de le faire si cette colonne n'est pas
vraie).
passwd
text
Mot de passe
valuntil
abstime
Date et heure d'expiration du mot de passe (utilisé seulement pour
l'authentification par mot de passe).
useconfig
text[]
Valeur par défaut de session pour les variables de configuration lors de
l'exécution.
43.27. pg_statistic
Le catalogue pg_statistic stocke des données statistiques sur le contenu de la base de données. Les entrées
sont créées par ANALYZE, puis utilisées par l'optimiseur de requêtes. Il y a une entrée pour chaque colonne de
table qui a été analysée. Notez que les données statistiques sont par définition des approximations, même si elles
sont à jour.
Comme des statistiques différentes seront appropriées pour des types de données différents, pg_statistic
est prévu pour ne faire qu'un minimum de suppositions sur les types de statistiques qu'il stocke. Seules des
27/05/2017
17/27
841050908
FT/ROSI/DPS/ISS/EMA
statistiques extrêmement générales (comme les valeurs NULL) ont des colonnes dédiées. Tout le reste est stocké
dans des << emplacements >>, qui sont des groupes de colonnes associées dont le contenu est identifié par un
numéro de code dans l'une des colonnes de l'emplacement. Pour plus d'information, voir
src/include/catalog/pg_statistic.h.
pg_statistic ne doit pas être lisible par le public car même les données statistiques peuvent être considérées
comme sensibles. (Exemple : les valeurs maximales et minimales d'une colonne de salaire peuvent être assez
intéressantes). pg_stats est une vue sur pg_statistic accessible à tous, qui n'expose que les informations
sur ces tables qui sont accessibles à l'utilisateur courant.
Tableau 43-27. Colonnes de pg_statistic
Nom
Type
Références
Description
starelid
oid
pg_class
.oid
staattnum
int2
pg_attribute
Numéro de la colonne décrite.
.attnum
Table à laquelle la colonne décrite appartient.
stanullfrac float4
Fraction des entrées de la colonne qui ont une valeur NULL.
stawidth
Taille moyenne stockée des entrées non nulles.
int4
stadistinct float4
Nombre de valeurs distinctes non NULL dans la colonne.
Une valeurs positive est le nombre réel de valeurs distinctes.
Une valeur négative est le négatif d'une fraction du nombre
de lignes dans la table (par exemple, une colonne dans
laquelle les valeurs apparaissent environ deux fois en
moyenne pourrait être représentée par stadistinct = 0.5). Une valeur à zéro indique que le nombre de valeurs
distinctes est inconnu.
stakindN
Numéro de code indiquant quel type de statistiques est stocké
dans << l'emplacement >> numéro N de la ligne de
pg_statistic.
staopN
int2
oid
pg_operator
.oid
Opérateur utilisé pour dériver les statistiques stockées dans
<< l'emplacement >> numéro N. Par exemple, un
emplacement d'histogramme montrerait l'opérateur <, qui
définit l'ordre de tri des données.
stanumbersN float4[]
Statistiques numériques du genre approprié pour
<< l'emplacement >> numéro N ou NULL si le type
d'emplacement ne nécessite pas de valeurs numériques.
stavaluesN
Valeurs de données de la colonne du type approprié pour
<< l'emplacement >> numéro N ou NULL si le type
d'emplacement ne stocke aucune valeur de données. Chaque
valeur d'élément du tableau est en fait du type de données de
la colonne spécifiée, si bien qu'il n'y a aucun moyen de
définir ces colonnes autrement qu'avec le type anyarray
(tableau quelconque).
anyarray
43.28. pg_trigger
Le catalogue pg_trigger stocke les informations sur les déclencheurs des tables. Voir la commande CREATE
TRIGGER pour plus d'informations.
Tableau 43-28. Colonnes de pg_trigger
27/05/2017
18/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
pg_class
.oid
Description
tgrelid
oid
tgname
name
tgfoid
oid
tgtype
int2
Masque de bits identifiant les conditions du déclencheur.
bool
Vrai si le déclencheur est activé. Ceci n'est pas vérifié de
manière fiable partout où cela devrait, si bien que
désactiver un déclencheur ne fonctionne pas de manière
fiable.
tgenabled
Table sur laquelle porte le déclencheur
Nom du déclencheur (doit être unique parmi les
déclencheurs d'une table).
pg_proc
.oid
Fonction à appeler
tgisconstraint bool
Vrai si le déclencheur implémente une contrainte
d'intégrité référentielle.
tgconstrname
name
Nom de la contrainte d'intégrité référentielle.
tgconstrrelid
oid
tgdeferrable
bool
pg_class
.oid
Table référencée par une contrainte d'intégrité référentielle.
Vrai si le déclencheur est différable.
tginitdeferred bool
Vrai si initialement le déclencheur est différé.
tgnargs
int2
Nombre de chaînes d'arguments passées à la fonction de
déclencheur.
tgattr
int2vector
Actuellement inutilisé.
tgargs
bytea
Chaînes d'arguments à passer au déclencheur, chacune
terminée par un NULL.
Note : pg_class.reltriggers doit correspondre aux entrées de cette table.
43.29. pg_type
Le catalogue pg_type stocke les informations sur les types de données. Les types de base (types scalaires) sont
créés avec la commande CREATE TYPE. Un type composite est créé automatiquement pour chaque table de la
base et représenter ainsi la structure des lignes de la table. Il est aussi possible de créer des types composites avec
CREATE TYPE AS et des domaines avec CREATE DOMAIN.
Tableau 43-29. Colonnes de pg_type
Nom
Type
Références
Description
typname
name
typnamespace
oid
pg_namespace
OID de l'espace de noms qui contient ce type.
.oid
typowner
int4
pg_shadow
.usesysid
Nom du type
Propriétaire du type
typlen
int2
Pour les types de taille fixe, typlen est le nombre d'octets
de la représentation interne du type. Mais pour les types de
longueur variable, typlen est négatif. -1 indique un type
<< varlena >> (qui a un attribut de longueur), -2 indique une
chaîne C terminée par le caractère NULL.
typbyval
bool
typbyval détermine si les routines internes passent une
valeur de ce type par valeur ou par référence. typbyval
27/05/2017
19/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
doit être faux si typlen ne vaut pas 1, 2 ou 4 (ou 8 sur les
machines dont le mot-machine est de 8 octets). Les types de
longueur variable sont toujours passés par référence. Notez
que typbyval peut être faux même si la longueur
permettrait un passage par valeur ; c'est le cas pour le type
float4, par exemple.
char
typtype vaut b pour un type de base, c pour un type
composite (c'est-à-dire le type d'une ligne de table), d pour
un domaine ou p pour un pseudo-type. Voir aussi
typrelid et typbasetype.
bool
Vrai si le type est défini et faux s'il ne s'agit que d'un
remplissage pour un type qui n'est pas encore défini. Lorsque
typisdefined est faux, rien à part le nom du type,
l'espace de noms et l'OID n'est fiable.
char
Caractère qui sépare deux valeurs de ce type lorsque le
programme lit les valeurs d'un tableau en entrée. Notez que
le délimiteur est associé au type d'élément du tableau, pas au
type tableau.
oid
pg_class
.oid
S'il s'agit d'un type composite (voir typtype), alors cette
colonne pointe vers la ligne de pg_class qui définit la
table correspondante. Pour un type composite sans table,
l'entrée dans pg_class ne représente pas vraiment une
table, mais elle est néanmoins nécessaire pour trouver les
lignes de pg_attribute liées au type. Zéro pour les types
de base.
typelem
oid
Si typelem ne vaut pas 0, alors il identifie une autre ligne
de pg_type. Le type courant peut alors être utilisé comme
un tableau contenant des valeurs de type typelem. Un
<< vrai >> type tableau a une longueur variable (typlen =
-1), mais certains types de longueur fixe (typlen > 0) ont
pg_type .oid aussi un typelem non nul, par exemple name et
oidvector. Si un type de longueur fixe a un typelem,
alors sa représentation interne doit être un certain nombre de
valeurs de ce type typelem, sans autre donnée. Les types
de données tableau de taille variable ont un en-tête défini par
les sous-routines de tableau.
typinput
regproc pg_proc .oid Fonction de conversion en entrée (format texte).
typoutput
regproc pg_proc .oid Fonction de conversion en sortie (format texte).
typreceive
regproc pg_proc .oid
Fonction de conversion en entrée (format binaire), ou 0 s'il
n'y en a pas
typsend
regproc pg_proc .oid
Fonction de conversion en sortie (format binaire), ou 0 s'il
n'y en a pas
typtype
typisdefined
typdelim
typrelid
typalign est l'alignement requis pour stocker une valeur
de ce type. Cela s'applique au stockage sur disque aussi bien
qu'à la plupart des représentations de cette valeur dans
typalign
char
PostgreSQL. Lorsque des valeurs multiples sont stockées
consécutivement, comme dans la représentation d'une ligne
complète sur disque, un remplissage est inséré avant la
donnée de ce type pour qu'elle commence à l'alignement
27/05/2017
20/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
spécifié. La référence de l'alignement est le début de la
première donnée de la séquence.
Les valeurs possibles sont :

c = alignement char ce qui signifie qu'aucun
alignement n'est nécessaire ;

s = alignement short (deux octets sur la plupart
des machines) ;

i = alignement int (quatre octets sur la plupart des
machines) ;

d = alignement double (huit octets sur la plupart
des machines, mais pas sur toutes).
Note : Pour les types utilisés dans les tables système, il est
indispensable que les tailles et alignements définis dans
pg_type soient en accord avec la façon dont le compilateur
disposera la colonne dans une structure représentant une
ligne de table.
typstorage indique, pour les types varlena (ceux pour
lesquels typlen = -1), si le type est préparé pour le
TOASTage et quelle stratégie par défaut doit être utilisée
pour les attributs de ce type. Les valeurs possibles sont :

p : La valeur doit être stockée normalement ;

e : La valeur peut être stockée dans une relation
<< secondaire >> (si la relation en a une, voir
typstorage
pg_class.reltoastrelid) ;
char

m : La valeurs peut être stockée compressée sur
place ;

x : La valeurs peut être stockée compressée sur
place ou stockée dans une relation
<< secondaire >>.
Notez que les colonnes m peuvent aussi être déplacées dans
une table de stockage secondaire, mais seulement en dernier
recours (les colonnes e et x sont déplacées d'abord).
typnotnull
27/05/2017
bool
typnotnull représente une contrainte non NULL pour ce
21/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
type. Ceci n'est utilisé que pour les domaines.
typbasetype
oid
S'il s'agit d'un domaine, (voir typtype), alors
pg_type .oid typbasetype identifie le type sur lequel celui-ci est basé.
Zéro s'il ne s'agit pas d'un domaine.
Les domaines utilisent typtypmod pour enregistrer le
typtypmod
int4
typmod à appliquer à leur type de base (-1 si le type de base
n'utilise pas de typmod). -1 si ce type n'est pas un domaine.
typndims est le nombre de dimensions de tableau pour un
domaine qui est un tableau (c'est-à-dire dont
typndims
int4
typbasetype est un type tableau ; le typelem du
domaine correspondra au typelem du type de base). Zéro
pour les types autres que les domaines tableaux.
Si typdefaultbin n'est pas NULL, ce champ est la
typdefaultbin text
représentation nodeToString() d'une expression par
défaut pour le type. Ceci n'est utilisé que pour les domaines.
typdefault est NULL si le type n'a pas de valeur par
défaut associée. Si typdefaultbin est non NULL,
typdefault doit contenir une version lisible de
typdefault
text
l'expression par défaut représentée par typdefaultbin.
Si typdefaultbin est NULL et si typdefault ne l'est
pas, alors typdefault est la représentation externe de la
valeur par défaut du type, qui peut être passée à la fonction
de conversion en entrée du type pour produire une constante.
43.30. Vues système
En plus des catalogues système, PostgreSQL apporte un certain nombre de vues internes. Les vues système
apportent un moyen simple et agréable d'accéder à des requêtes habituellement utilisées dans les catalogues
systèmes. Certaines de ces vues donnent aussi accès à l'état du serveur interne.
Tableau 43-30 indique les vues système décrites ici. Une documentation plus détaillée de chaque vue suit ceci. Il
existe en plus des vues supplémentaires permettant d'accéder aux résultats du collecteur de statistiques elles sont
décrites dans le Tableau 23-1.
Le schéma information (Chapitre 32) fournit un autre ensemble de vues qui rejoignent les fonctionnalités des
vues système. Comme le schéma information est en SQL standard alors que les vues décrites ici sont spécifiques
à PostgreSQL, il est généralement mieux d'utiliser le schéma information si celui-ci apporte toutes les
informations dont vous avez besoin.
Sauf lorsque c'est noté, toutes les vues décrites ici sont en lecture seule.
27/05/2017
22/27
841050908
FT/ROSI/DPS/ISS/EMA
Tableau 43-30. Vues système
Nom de la vue
But
pg_indexes
index
pg_locks
verrous actuellement contenus
pg_rules
règles
pg_settings configuration
pg_stats
statistiques du planificateur
pg_tables
tables
pg_user
utilisateurs de la base de données
pg_views
vues
43.31. pg_indexes
La vue pg_indexes fournit un accès à des informations utiles sur chaque index de la base de données.
Tableau 43-31. Colonnes de pg_indexes
Nom
Type
Références
Description
schemaname name pg_namespace.nspname nom du schéma contenant les tables et index
tablename
name pg_class.relname
nom de la table concernant cet index
indexname
name pg_class.relname
nom de l'index
indexdef
text
définition de l'index (une commande de création
reconstruite)
43.32. pg_locks
La vue pg_locks fournit un accès aux informations concernant les verrous détenus par les transactions
ouvertes à l'intérieur du serveur de bases de données. Voir le Chapitre 12 pour une discussion plus importante
sur les verrous.
pg_locks contient une ligne par objet verrouillable actif, mode de verrouillage demandé et transaction
indiquée. Donc, le même objet verrouillable pourrait apparaître plusieurs fois si plusieurs transactions ont pris ou
attendent des verrous sur celui-ci. Néanmoins, un objet qui n'est pas verrouillé n'apparaîtra pas du tout. Un objet
verrouillé est soit une relation (c'est-à-dire une table) soit un identifiant de transaction.
Notez que cette vue inclut seulement des verrous au niveau de la table, pas au niveau des lignes. Si une
transaction attend un verrou ligne, il apparaîtra dans la vue en attente d'un identifiant de transaction du déteneur
actuel du verrou.
Tableau 43-32. Colonnes pg_locks
Nom
Type
Références
Description
relation
oid
pg_class.oid
OID de la relation verrouillée ou NULL si l'objet verrouillé
est un identifiant de transaction
database
oid
pg_database.oid
OID de la base de données dans lequel la relation
verrouillée existe ou zéro si la relation verrouillée est une
27/05/2017
23/27
841050908
FT/ROSI/DPS/ISS/EMA
Nom
Type
Références
Description
table partagée globalement ou NULL si l'objet verrouillable
est un identifiant de transaction
transaction xid
ID d'une transaction ou NULL si l'objet verrouillable est
une relation
pid
integer
Identifiant (PID) du processus serveur détenant ou attendant
ce verrou
mode
text
Nom du mode de verrou détenu ou attendu par ce processus
(voir la Section 12.3.1)
granted
boolean
vrai si le verrou est détenu, faux s'il est attendu
granted est vrai sur une ligne représentant un verrou tenu par la session indiquée. Une valeur faux indique que
cette session attend l'acquisition du verrou, ce qui implique qu'une autre session a choisi un mode de verrouillage
conflictuel sur le même objet partageable. La session en attente dormira jusqu'à la relâche du verrou (ou jusqu'à
ce qu'une situation de blocage soit détectée). Une session seule peut attendre d'acquérir au plus un verrou à la
fois.
Chaque transaction détient un verrou exclusif sur son identifiant de transaction toute la durée de son exécution.
Si une transaction trouve nécessaire d'attendre spécifiquement une autre transaction, elle le fait en essayant
d'acquérir un verrou partagé sur l'identifiant de l'autre transaction. Ceci sera couronné de succès seulement
lorsque l'autre transaction termine et relâche son verrou.
Quand la vue pg_locks est accédé, les structures de données du gestionnaire interne de verrous sont
momentanément verrouillées et une copie est faite pour que la vue s'affiche. Ceci nous assure que la vue
produise un ensemble consistant de résultats, tout en ne bloquant pas les opérations habituelles du gestionnaire
de verrous plus longuement que nécessaire. Néanmoins, il peut y avoir des impacts sur les performances de la
base de données si cette vue est lu fréquemment.
pg_locks fournit une vue globale de tous les verrous du cluster de bases de données, et non pas seulement une
vue de ceux de la base en cours. Bien que sa colonne relation peut être jointe avec pg_class.oid pour
identifier les relations verrouillées, ceci ne fonctionnera correctement qu'avec les relations de la base en cours
(celles pour qui la colonne database est soit l'OID de la base en cours soit zéro).
Si vous avez activé le collecteur de statistiques, la colonne pid peut être jointe à la colonne procpid de la vue
pg_stat_activity pour obtenir plus d'information sur le propriétaire de la session ou attendant de détenir le
verrou.
43.33. pg_rules
La vue pg_rules fournit un accès à des informations utiles sur les règles de réécriture des requêtes.
Tableau 43-33. Colonnes de pg_rules
Nom
Type
Références
Description
schemaname name pg_namespace.nspname nom du schéma contenant la table
tablename
name pg_class.relname
nom de la table pour laquelle est créée la règle
rulename
name pg_rewrite.rulename
nom de la règle
definition text
définition de la règle (une commande de création
reconstruite)
La vue pg_rules exclut les règles ON SELECT rules des vues ; elles sont disponibles dans pg_views.
27/05/2017
24/27
841050908
FT/ROSI/DPS/ISS/EMA
43.34. pg_settings
La vue pg_settings fournit un accès aux paramètres d'exécution du serveur. C'est essentiellement une autre
interface aux commandes SHOW et SET. Elle fournit aussi un accès à certaines informations sur chaque
paramètre qui ne sont pas directement accessible avec SHOW, telles que les valeurs minimum et maximum.
Tableau 43-34. Colonnes de pg_settings
Nom
Type Références
name
text
Description
nom du paramètres d'exécution
setting text
valeur actuelle du paramètre
context text
contexte requis pour initialiser la valeur du paramètre
vartype text
type du paramètre (bool, integer, real ou string)
source
source de la valeur du paramètre actuel
text
min_val text
valeur minimum autorisée du paramètre (NULL pour les valeurs non
numériques)
max_val text
valeur maximum autorisée du paramètre (NULL pour les valeurs non
numériques)
La vue pg_settings n'accepte pas d'insertion ou de suppression mais peut être mise à jour. Un UPDATE
appliqué à une ligne de pg_settings est équivalent à l'exécution de la commande SET sur ce paramètre
nommé. Le changement affecte seulement la valeur utilisée par la session actuelle. Si un UPDATE est lancé à
l'intérieur d'une transaction qui est annulé plus tard, les effets de la commande UPDATE disparaisse lorsque les
effets de la transaction sont annulés. Une fois que la transaction est validée, les effets persistent jusqu'à la fin de
la session, à moins qu'un autre UPDATE ou SET ne modifie la valeur.
43.35. pg_stats
La vue pg_stats fournit un accès aux informations stockées dans la table système pg_statistic. Cette
vue autorise un accès aux seules lignes de pg_statistic correspondant aux tables pour lequel l'utilisateur a
un droit de lecture et, donc, aucun problème de sécurité n'empêche l'accès en lecture de cette vue au public.
pg_stats est aussi conçu pour afficher l'information dans un format plus lisible que le catalogue sous-jacent,
au prix d'un schéma qui doit être étendu lorsque de nouveaux types sont définis dans pg_statistic.
Tableau 43-35. Colonnes de pg_stats
Nome
Type
Références
Description
schemaname
name
pg_namespace.nspname nom du schéma contenant la table
tablename
name
pg_class.relname
attname
name
pg_attribute.attname nom de la colonne décrite par cette ligne
null_frac
real
fraction d'entrées de colonnes qui sont
NULL
avg_width
integer
largeur moyenne en octets des entrées de
la colonne
real
Si plus grand que zéro, le nombre estimé
de valeurs distinctes dans la colonne. Si
négatif, le nombre de valeurs distinctes
divisé par le nombre de lignes, le tout
n_distinct
27/05/2017
25/27
nome de la table
841050908
FT/ROSI/DPS/ISS/EMA
Nome
Type
Références
Description
muliplié par -1. (La forme négative est
utilisée quand ANALYZE croit que le
nombre de valeurs distinctes a tendance à
grossir au fur et à mesure que la table
grossit ; la forme positive est utilisé
lorsque la commande semble avoir un
nombre fixe de valeurs possibles.) Par
exemple, -1 indique une colonne unique
pour laquelle le nombre de valeurs
distinctes est identique aux nombres de
lignes.
most_common_vals
Une liste des valeurs habituelles dans
cette colonne. (NULL si aucune valeur ne
semble identique aux autres.)
anyarray
most_common_freqs real[]
Une liste des fréquences des valeurs les
plus habituelles, c'est-à-dire le nombre
d'occurrences de chacune divisé par le
nombre total de lignes. (NULL lorsque
most_common_vals l'est.)
histogram_bounds
anyarray
Une liste des valeurs qui divisent les
valeurs de la colonne en groupes de
population approximativement identique.
Les valeurs dans most_common_vals,
s'ils existent, sont omises de ce calcul
d'histogramme. (Cette colonne est NULL
si le type de données de la colonne ne
dispose pas de l'opérateur < ou si la liste
most_common_vals tient compte de la
population complète.)
real
Corrélation statistique entre l'ordre
physique des lignes et l'ordre logique des
valeurs de la colonne. Ceci va de -1 à +1.
Lorsque la valeur est plus près de -1 ou
+1, un parcours de l'index sur la colonne
sera estimé moins cher que si cette valeur
tend vers zéro, à cause de la réduction
d'accès aléatoire au disque. (Cette colonne
est NULL si le type de données de la
colonne n'a pas l'opérateur < operator.)
correlation
Le nombre maximum d'entrées dans most_common_vals et histogram_bounds est configurable colonne
par colonne en utilisant la commande ALTER TABLE SET STATISTICS ou globalement avec le paramètre
d'exécution default_statistics_target.
43.36. pg_tables
La vue pg_tables fournit un accès à des informations utiles sur chaque table de la base de données.
Tableau 43-36. Colonnes de pg_tables
Nome
schemaname
27/05/2017
Type
name
Références
Description
pg_namespace.nspname nom du schéma contenant la table
26/27
841050908
FT/ROSI/DPS/ISS/EMA
Nome
Type
Références
Description
tablename
name
pg_class.relname
nom de la table
tableowner
name
pg_shadow.usename
nom du propriétaire de la table
hasindexes
boolean pg_class.relhasindex vrai si la table a (ou a récemment eu) des index
hasrules
boolean pg_class.relhasrules vrai si la table dispose de règles
hastriggers boolean pg_class.reltriggers vrai si la table dispose de déclencheurs (triggers)
43.37. pg_user
La vue pg_user fournit un accès aux informations concernant les utilisateurs de la base de données. C'est une
simple vue lisible publiquement de pg_shadow mais qui n'affiche pas le champ du mot de passe.
Tableau 43-37. Colonnes de pg_user
Nome
Type
Références
Description
usename
name
Nom de l'utilisateur
usesysid
int4
Identifiant de l'utilisateur (un nombre arbitraire utilisé en référence à
cet utilisateur)
usecreatedb bool
L'utilisateur peut créer des bases de données
usesuper
bool
L'utilisateur est un super-utilisateur
usecatupd
bool
L'utilisateur pourrait mettre à jour les tables systèmes. (Même un
super-utilisateur ne pourrait pas le faire tant que cette colonne n'est pas
initialisée à vrai.
passwd
text
Ce n'est pas le mot de passe (toujours ********)
valuntil
abstime
Temps d'expiration du compte (utilisé seulement pour
l'authentification des mots de passe)
useconfig
text[]
Variables d'exécution par défaut de la session
43.38. pg_views
La vue pg_views fournit un accès à d'importantes informations de chaque vue de la base de données.
Tableau 43-38. Colonnes de pg_views
Nome
Type
Références
Description
schemaname name pg_namespace.nspname Nom du schéma contenant la vue
viewname
name pg_class.relname
Nom de la vue
viewowner
name pg_shadow.usename
Nom du propriétaire de la vue
definition text
27/05/2017
Définition de la vue (une requête SELECT reconstruite)
27/27
841050908
Téléchargement