8.13. 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� pour une colonne de table, mais il peut �tre utilis� pour d�clarer un argument de fonction ou un type de r�sultat. Chacun des pseudo-types disponibles est utile dans des situations o� le comportement d'une fonction ne correspond pas simplement � accepter ou retourner des valeurs d'un type de donn�es SQL sp�cifique. Tableau 8-20 liste les pseudo-types existants.

Tableau 8-20. Pseudo-Types

NomDescription
any Indique qu'une fonction accepte n'importe quel type de donn�es, quel qu'il soit.
anyarray Indique qu'une fonction accepte tout type tableau (voir Section 31.2.6).
anyelementIndique qu'une fonction accepte tout type de donn�es. (voir Section 31.2.6).
cstringIndique qu'une fonction accepte ou retourne une cha�ne de caract�res du langage C (termin�e par un NULL).
internalIndique qu'une fonction accepte ou retourne un type de donn�es interne du serveur de bases de donn�es.
language_handlerUne fonction d'appel de langage proc�dural est d�clar�e retourner un language_handler.
recordIdentifie une fonction qui retourne un type de ligne non sp�cifi�.
triggerUne fonction trigger est d�clar�e comme retournant un type trigger.
voidIndique qu'une fonction ne retourne pas de valeur.
opaqueUn 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 dans le produit ou charg�es dynamiquement) peuvent d�clarer, accepter ou retourner chacun de ces pseudo-types. Il est de la responsabilit� de l'auteur de la fonction de s'assurer que la fonction se comporte normalement lorsqu'un pseudo-type est utilis� comme type d'argument.

Les fonctions cod�es en langage proc�dural peuvent utiliser les pseudo-types si leur langage le permet. A ce jour, tous les langages interdisent l'usage d'un pseudo-type comme argument, et n'acceptent que void et record comme type retourn� (plus trigger lorsque la fonction est utilis�e comme trigger). Certains supportent aussi les fonctions polymorphes en utilisant les types anyarray et anyelement.

Le pseudo-type internal sert � d�clarer des fonctions qui ne sont appel�es que par la base de donn�es en interne, et non pas directement par une requ�te SQL. Si une fonction a au moins un argument de type internal, alors elle ne peut �tre appel�e depuis SQL. Pour pr�server la s�curit� de cette restriction, il est important de suivre cette r�gle de codage: ne cr�ez pas de fonction qui retourne un internal si elle n'a pas au moins un argument de type internal.