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

Version anglaise

47.36. pg_proc

Le catalogue pg_proc stocke les informations concernant les fonctions (ou procédures). Voir CREATE FUNCTION(7) et Section 35.3, « Fonctions utilisateur » pour plus d'informations.

Cette table contient des données sur les fonctions d'agrégat et les fonctions simples. Si proisagg est vrai, il doit y avoir une ligne correspondante dans pg_aggregate.

Tableau 47.36. 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 pg_namespace.oid OID du namespace auquel appartient la fonction
proowner oid pg_authid.oid Propriétaire de la fonction
prolang oid pg_language.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 pg_type.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 pg_proc.oid Les appels à cette fonction peuvent être simplifiés par cette autre fonction (voir Section 35.9.11, « Fonctions de transformation »)
proisagg bool   Si vrai, la fonction est une fonction d'agrégat
proiswindow bool   La fonction est une fonction window
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.)
pronargs int2   Nombre d'arguments en entrée
pronargdefaults int2   Nombre d'arguments qui ont des valeurs par défaut
prorettype oid pg_type.oid Type de données renvoyé
proargtypes oidvector pg_type.oid 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[] pg_type.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.
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(7) et REVOKE(7) 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.