PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 15.10 » Internes » Catalogues système » pg_proc

53.39. 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 53.39. Colonnes de pg_proc

Type

Description

oid oid

Identifiant de ligne

proname name

Nom de la fonction

pronamespace oid (référence pg_namespace.oid)

OID du schéma (namespace) auquel appartient la fonction

proowner oid (référence pg_authid.oid)

Propriétaire de la fonction

prolang oid (référence 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 lignes de résultat (zéro si proretset est faux)

provariadic oid (référence 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

prosupport regproc (référence pg_proc.oid)

Fonction optionnelle de support pour le planificateur (voir Section 38.11), ou zéro sinon

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 (référence pg_type.oid)

Type de données renvoyé

proargtypes oidvector (référence 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 ainsi la signature d'appel de la fonction.

proallargtypes oid[] (référence 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.

protrftypes oid[] (référence pg_type.oid)

L'OID du type de données pour lequel les transformations s'appliquent. Un tableau de types de données argument/résultat pour lesquels appliquer les transformations (à partir de la clause TRANSFORM de la fonction). NULL sinon.

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.

prosqlbody pg_node_tree

Corps de fonction SQL pré-analysé. Ceci est utilisé pour les fonctions en langage SQL quand le corps est donné dans la notation du standard SQL plutôt que comme un litéral de chaîne. Il est NULL dans les autres cas.

proconfig text[]

Configuration locale à la fonction pour les variables configurables à l'exécution

proacl aclitem[]

Droits d'accès ; voir Section 5.7 pour plus de détails


Pour les fonctions compilées, natives ou chargées dynamiquement, prosrc contient le nom de la fonction en langage C(symbole de lien). Pour les fonctions en langage SQL, prosrc contient le texte source de la fonction si elle est indiquée sous la forme d'une chaîne litérale ; mais si le corps de la fonction est indiquée dans le style du standard SQL, prosrc est inutilisé (typiquement, une chaîne vide) et prosqlbody contient la définition pré-analysée. Pour tous les autres types de langages, prosrc contient le code source de la fonction. probin est NULL, 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.