IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

8.20. Pseudo-Types

Le système de types de PostgreSQL™ contient un certain nombre de types à usage spécial qui sont collectivement appelés des pseudo-types. Un pseudo-type ne peut être utilisé comme type d'une colonne de table, mais peut l'être pour déclarer un argument de fonction ou un type de résultat. Tous les pseudo-types disponibles sont utiles dans des situations où une fonction ne se contente pas d'accepter et retourner des valeurs d'un type de données SQL particulier. Le Tableau 8.25, « Pseudo-Types » liste les différents pseudo-types.

Tableau 8.25. Pseudo-Types

Nom Description
any Indique qu'une fonction accepte tout type de données, quel qu'il soit.
anyelement Indique qu'une fonction accepte tout type de données (voir la Section 36.2.5, « Types et fonctions polymorphes »).
anyarray Indique qu'une fonction accepte tout type tableau (voir la Section 36.2.5, « Types et fonctions polymorphes »).
anynonarray Indique que la fonction accepte tout type de données non-array (voir Section 36.2.5, « Types et fonctions polymorphes »).
anyenum Indique que la fonction accepte tout type de données enum (voir Section 36.2.5, « Types et fonctions polymorphes » et Section 8.7, « Types énumération »).
anyrange Indique qu'une fonction accepte toute type de données intervalle (voir Section 36.2.5, « Types et fonctions polymorphes » et Section 8.17, « Types intervalle de valeurs »).
cstring Indique qu'une fonction accepte ou retourne une chaîne de caractères C (terminée par un NULL).
internal Indique qu'une fonction accepte ou retourne un type de données interne du serveur de bases de données.
language_handler Une fonction d'appel de langage procédural est déclarée retourner un language_handler.
fdw_handler Une fonction de gestion pour le wrapper de données distantes est déclarée retourner un fdw_handler.
index_am_handler Un gestionnaire pour une méthode d'accès d'index est déclaré renvoyer index_am_handler.
tsm_handler Un gestionnaire de méthode d'échantillonnage est déclaré comme renvoyant le type tsm_handler.
record Identifie une fonction qui prend ou retourne un type de ligne non spécifié.
trigger Une fonction déclencheur est déclarée comme retournant un type trigger.
event_trigger Une fonction pour un trigger d'événement est déclarée comme renvoyant une donnée de type event_trigger.
pg_ddl_command Identifie une représention de commandes DDL qui est disponible pour les triggers d'événement.
void Indique qu'une fonction ne retourne aucune valeur.
opaque Un type de données obsolète qui servait précédemment à tous les usages cités ci-dessus.

Les fonctions codées en C (incluses ou chargées dynamiquement) peuvent être déclarées comme acceptant ou retournant tout pseudo-type. Il est de la responsabilité de l'auteur de la fonction de s'assurer du bon comportement de la fonction lorsqu'un pseudo-type est utilisé comme type d'argument.

Les fonctions codées en langage procédural ne peuvent utiliser les pseudo-types que dans les limites imposées par l'implantation du langage. À ce jour, la plupart des langages procéduraux interdisent l'usage d'un pseudo-type comme argument et n'autorisent que void et record comme type de retours (plus trigger ou event_trigger lorsque la fonction est utilisée respectivement comme trigger ou triggers d'événement). Certains supportent également les fonctions polymorphes qui utilisent les types anyelement, anyarray, anynonarray, anyenum et anyrange.

Le pseudo-type internal sert à déclarer des fonctions qui ne sont appelées que par le système en interne, et non pas directement par une requête SQL. Si une fonction accepte au minimum un argument de type internal, alors elle ne peut être appelée depuis SQL. Pour préserver la sécurité du type de cette restriction, il est important de suivre la règle de codage suivante : ne jamais créer de fonction qui retourne un internal si elle n'accepte pas au moins un argument de type internal.