pg_proc
Le catalogue pg_proc
enregistre des informations sur les
fonctions, procédures, fonctions d'agrégat et fonctions de fenêtrage
(connues sous le nom collectif de routines). Voir CREATE FUNCTION, CREATE PROCEDURE et
Section 38.3 pour plus d'informations.
Si prokind
indique que l'enregistrement est pour
une fonction d'agrégat, il devrait y avoir une ligne correspondante dans
pg_aggregate
.
Tableau 52.39. Colonnes de pg_proc
Nom | Type | Références | Description |
---|---|---|---|
oid | oid | Identifiant de ligne (attribut caché ; doit être sélectionné explicitement) | |
proname | name | Nom de la fonction | |
pronamespace | oid |
| OID du namespace auquel appartient la fonction |
proowner | oid |
| Propriétaire de la fonction |
prolang | oid |
| Langage de codage ou interface d'appel de la fonction |
procost | float4 | Coût d'exécution estimé (en unité de
cpu_operator_cost) ; si proretset ,
il s'agit d'un coût par ligne | |
prorows | float4 | Nombre estimé de ligne de résultat (zéro si proretset est faux) | |
provariadic | oid |
| Type des données des éléments du tableau de paramètres variadic, ou zéro si la fonction n'a pas de paramètres variadiques. |
protransform | regproc |
| Les appels à cette fonction peuvent être simplifiés par cette autre fonction (voir Section 38.10.10) |
prokind | char | f pour une fonction normale,
p pour une procédure, a pour une
fonction d'agrégat ou w pour une fonction de
fenêtrage | |
prosecdef | bool | Si vrai, la fonction définit la sécurité (c'est une fonction « setuid ») | |
proleakproof | bool | Cette fonction n'a pas d'effets de bord. Aucune information sur les arguments n'est' reportée sauf via la valeur de retour. Toute fonction qui pourrait renvoyer une erreur dépendant des valeurs de ses arguments n'est pas considérée sans fuite. | |
proisstrict | bool | Si vrai, la fonction retourne NULL si l'un de ses arguments est NULL. Dans ce cas, la fonction n'est en fait pas appelée du tout. Les fonctions qui ne sont pas « strictes » doivent traiter les paramètres NULL. | |
proretset | bool | Si vrai, la fonction retourne un ensemble (c'est-à-dire des valeurs multiples du type défini) | |
provolatile | char |
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, pour un jeu de paramètres identique en
entrée, donnent toujours le même résultat. Il vaut s pour les
fonctions « stables », dont le résultat (pour les mêmes paramètres
en entrée) ne change pas au cours du parcours (de table). Il vaut
v pour les fonctions « volatiles », dont le
résultat peut varier à tout instant. (v est
également utilisé pour les fonctions qui ont des effets de bord, afin que les appels
à ces fonctions ne soient pas optimisés.)
| |
proparallel | char |
proparallel indique si la fonction peut être
utilisé en parallèle. Cette colonne vaut s pour les
fonctions exécutables sans restriction en mode parallèle. Elle vaut
r pour les fonctions pouvant être exécutées en
parallèle mais leur exécution est restreinte au chef du groupe ;
les processus de parallélisme en tâche de fond ne peuvent pas faire
appel à ces fonctions. Elle vaut u pour les fonctions
qui ne peuvent pas être exécutées en mode parallèle. La présence d'une
telle fonction force une exécution non parallélisée.
| |
pronargs | int2 | Nombre d'arguments en entrée | |
pronargdefaults | int2 | Nombre d'arguments qui ont des valeurs par défaut | |
prorettype | oid |
| Type de données renvoyé |
proargtypes | oidvector |
|
Un tableau contenant les types de données des arguments de la fonction.
Ceci n'inclut que les arguments en entrée (dont les arguments
INOUT et VARIADIC ) et représente,
du coup, la signature d'appel de la fonction.
|
proallargtypes | oid[] |
|
Un tableau contenant les types de données des arguments de la fonction. Ceci
inclut tous les arguments (y compris les arguments OUT
et INOUT ) ; néanmoins, si tous les arguments sont
IN , ce champ est NULL. L'indice commence à 1 alors
que, pour des raisons historiques, proargtypes
commence à 0.
|
proargmodes | char[] |
Un tableau contenant les modes des arguments de la fonction, codés avec
i pour les arguments IN ,
o pour les arguments OUT ,
b pour les arguments INOUT ,
v pour les arguments VARIADIC ,
t pour les arguments TABLE .
Si tous les arguments sont des arguments IN , ce
champ est NULL.
Les indices correspondent aux positions de
proallargtypes , et non à celles de
proargtypes .
| |
proargnames | text[] |
Un tableau contenant les noms des arguments de la fonction. Les arguments
sans nom sont initialisés à des chaînes vides dans le tableau.
Si aucun des arguments n'a de nom, ce champ est NULL.
Les indices correspondent aux positions de
proallargtypes , et non à celles de
proargtypes .
| |
proargdefaults | pg_node_tree |
Arbres d'expression (en représentation nodeToString() )
pour les valeurs par défaut. C'est une liste avec pronargdefaults
éléments, correspondant aux N derniers arguments
d'entrée (c'est-à-dire, les N
dernières positions proargtypes ).
Si aucun des arguments n'a de valeur par défaut, ce champ vaudra null.
| |
protrftypes | oid[] | L'OID du type de données pour lequel les transformations s'appliquent. | |
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 de lien, d'un nom de fichier ou de toute autre chose, en fonction du langage ou de la convention d'appel. | |
probin | text | Information supplémentaire sur la façon d'invoquer la fonction. Encore une fois, l'interprétation dépend du langage. | |
proconfig | text[] | Configuration locale à la fonction pour les variables configurables à l'exécution | |
proacl | aclitem[] | Droits d'accès ; voir GRANT et REVOKE pour plus de détails. |
Pour les fonctions compilées, intégrées ou chargées dynamiquement,
prosrc
contient le nom de la fonction en langage C
(symbole de lien). Pour tous les autres types
de langages, prosrc
contient le code source de la
fonction. probin
est inutilisé, sauf pour les
fonctions C chargées dynamiquement, pour lesquelles il donne le nom de
fichier de la bibliothèque partagée qui contient la fonction.