43.29. pg_type

Le catalogue pg_type stocke les informations sur les types de donn�es. Les types de base (types scalaires) sont cr��s avec la commande CREATE TYPE. Un type composite est cr�� automatiquement pour chaque table de la base et repr�senter ainsi la structure des lignes de la table. Il est aussi possible de cr�er des types composites avec CREATE TYPE AS et des domaines avec CREATE DOMAIN.

Tableau 43-29. Colonnes de pg_type

NomTypeR�f�rencesDescription
typnamename Nom du type
typnamespaceoidpg_namespace .oid OID de l'espace de noms qui contient ce type.
typownerint4pg_shadow .usesysidPropri�taire du type
typlenint2  Pour les types de taille fixe, typlen est le nombre d'octets de la repr�sentation interne du type. Mais pour les types de longueur variable, typlen est n�gatif. -1 indique un type <<�varlena�>> (qui a un attribut de longueur), -2 indique une cha�ne C termin�e par le caract�re NULL.
typbyvalbool  typbyval d�termine si les routines internes passent une valeur de ce type par valeur ou par r�f�rence. typbyval doit �tre faux si typlen ne vaut pas 1, 2 ou 4 (ou 8 sur les machines dont le mot-machine est de 8 octets). Les types de longueur variable sont toujours pass�s par r�f�rence. Notez que typbyval peut �tre faux m�me si la longueur permettrait un passage par valeur ; c'est le cas pour le type float4, par exemple.
typtypechar  typtype vaut b pour un type de base, c pour un type composite (c'est-�-dire le type d'une ligne de table), d pour un domaine ou p pour un pseudo-type. Voir aussi typrelid et typbasetype.
typisdefinedbool  Vrai si le type est d�fini et faux s'il ne s'agit que d'un remplissage pour un type qui n'est pas encore d�fini. Lorsque typisdefined est faux, rien � part le nom du type, l'espace de noms et l'OID n'est fiable.
typdelimchar  Caract�re qui s�pare deux valeurs de ce type lorsque le programme lit les valeurs d'un tableau en entr�e. Notez que le d�limiteur est associ� au type d'�l�ment du tableau, pas au type tableau.
typrelidoidpg_class .oid S'il s'agit d'un type composite (voir typtype), alors cette colonne pointe vers la ligne de pg_class qui d�finit la table correspondante. Pour un type composite sans table, l'entr�e dans pg_class ne repr�sente pas vraiment une table, mais elle est n�anmoins n�cessaire pour trouver les lignes de pg_attribute li�es au type. Z�ro pour les types de base.
typelemoidpg_type .oid Si typelem ne vaut pas 0, alors il identifie une autre ligne de pg_type. Le type courant peut alors �tre utilis� comme un tableau contenant des valeurs de type typelem. Un <<�vrai�>> type tableau a une longueur variable (typlen = -1), mais certains types de longueur fixe (typlen > 0) ont aussi un typelem non nul, par exemple name et oidvector. Si un type de longueur fixe a un typelem, alors sa repr�sentation interne doit �tre un certain nombre de valeurs de ce type typelem, sans autre donn�e. Les types de donn�es tableau de taille variable ont un en-t�te d�fini par les sous-routines de tableau.
typinputregprocpg_proc .oidFonction de conversion en entr�e (format texte).
typoutputregprocpg_proc .oidFonction de conversion en sortie (format texte).
typreceiveregprocpg_proc .oidFonction de conversion en entr�e (format binaire), ou 0 s'il n'y en a pas
typsendregprocpg_proc .oidFonction de conversion en sortie (format binaire), ou 0 s'il n'y en a pas
typalignchar 

typalign est l'alignement requis pour stocker une valeur de ce type. Cela s'applique au stockage sur disque aussi bien qu'� la plupart des repr�sentations de cette valeur dans PostgreSQL. Lorsque des valeurs multiples sont stock�es cons�cutivement, comme dans la repr�sentation d'une ligne compl�te sur disque, un remplissage est ins�r� avant la donn�e de ce type pour qu'elle commence � l'alignement sp�cifi�. La r�f�rence de l'alignement est le d�but de la premi�re donn�e de la s�quence.

Les valeurs possibles sont :

  • c = alignement char ce qui signifie qu'aucun alignement n'est n�cessaire ;

  • s = alignement short (deux octets sur la plupart des machines) ;

  • i = alignement int (quatre octets sur la plupart des machines) ;

  • d = alignement double (huit octets sur la plupart des machines, mais pas sur toutes).

Note�: Pour les types utilis�s dans les tables syst�mes il est indispensable que les tailles et alignements d�finis dans pg_type soient en accord avec la fa�on dont le compilateur disposera la colonne dans une structure repr�sentant une ligne de table.

typstoragechar 

typstorage indique, pour les types varlena (ceux pour lesquels typlen = -1), si le type est pr�par� pour le TOASTage et quelle strat�gie par d�faut doit �tre utilis�e pour les attributs de ce type. Les valeurs possibles sont :

  • p : La valeur doit �tre stock�e normalement ;

  • e : La valeur peut �tre stock�e dans une relation <<�secondaire �>> (si la relation en a une, voir pg_class.reltoastrelid) ;

  • m : La valeurs peut �tre stock�e compress�e sur place ;

  • x : La valeurs peut �tre stock�e compress�e sur place ou stock�e dans une relation <<�secondaire�>>.

Notez que les colonnes m peuvent aussi �tre d�plac�es dans une table de stockage secondaire, mais seulement en dernier recours (les colonnes e et x sont d�plac�es d'abord).

typnotnullbool 

typnotnull repr�sente une contrainte non NULL pour ce type. Ceci n'est utilis� que pour les domaines.

typbasetypeoidpg_type .oid

S'il s'agit d'un domaine, (voir typtype), alors typbasetype identifie le type sur lequel celui-ci est bas�. Z�ro s'il ne s'agit pas d'un domaine.

typtypmodint4 

Les domaines utilisent typtypmod pour enregistrer le typmod � appliquer � leur type de base (-1 si le type de base n'utilise pas de typmod). -1 si ce type n'est pas un domaine.

typndimsint4 

typndims est le nombre de dimensions de tableau pour un domaine qui est un tableau (c'est-�-dire dont typbasetype est un type tableau ; le typelem du domaine correspondra au typelem du type de base). Z�ro pour les types autres que les domaines tableaux.

typdefaultbintext 

Si typdefaultbin n'est pas NULL, ce champ est la repr�sentation nodeToString() d'une expression par d�faut pour le type. Ceci n'est utilis� que pour les domaines.

typdefaulttext 

typdefault est NULL si le type n'a pas de valeur par d�faut associ�e. Si typdefaultbin est non NULL, typdefault doit contenir une version lisible de l'expression par d�faut repr�sent�e par typdefaultbin. Si typdefaultbin est NULL et si typdefault ne l'est pas, alors typdefault est la repr�sentation externe de la valeur par d�faut du type, qui peut �tre pass�e � la fonction de conversion en entr�e du type pour produire une constante.