pg_type
Le catalogue pg_type
stocke les informations
concernant les
types de données. Les types basiques et d'énumération (types scalaires) sont créés avec la
commande CREATE TYPE et les domaines avec
CREATE DOMAIN.
Un type composite est créé automatiquement pour chaque table de la base
pour représenter la structure des lignes de la table. Il est aussi possible
de créer des types composites avec CREATE TYPE AS
.
Tableau 52.62. Colonnes de pg_type
Nom | Type | Références | Description |
---|---|---|---|
oid | oid | Identifiant de ligne (attribut caché ; doit être sélectionné explicitement) | |
typname | name | Nom du type | |
typnamespace | oid |
| OID du namespace qui contient le type |
typowner | oid |
| Propriétaire du type |
typlen | int2 |
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.
| |
typbyval | bool |
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.
typbyval peut être faux même si la longueur
permet un passage par valeur.
| |
typtype | char |
typtype vaut b pour un
type de base, c pour un type composite
(le type d'une ligne de table, par exemple),
d pour un domaine,
e pour un enum,
p pour un pseudo-type ou
r pour un type range.
Voir aussi typrelid et
typbasetype .
| |
typcategory | char |
typcategory est une classification arbitraire
de types de données qui est utilisée par l'analyseur pour déterminer
la conversion implicite devant être « préférée ». Voir
Tableau 52.63
| |
typispreferred | bool |
Vrai si ce type est une cible de conversion préférée dans sa
typcategory
| |
typisdefined | bool |
Vrai si le type est défini et faux s'il ne s'agit que d'un conteneur
pour un type qui n'est pas encore défini. Lorsque
typisdefined est faux, rien, à part le nom du
type, le namespace et l'OID, n'est fiable.
| |
typdelim | char | Caractère qui sépare deux valeurs de ce type lorsque le programme lit les valeurs d'un tableau en entrée. Le délimiteur est associé au type d'élément du tableau, pas au type tableau. | |
typrelid | 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. 0 pour les types
autres que composites.
|
typelem | oid |
|
Si typelem est différent de zéro, 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 point . Si un type de longueur fixe
a un typelem , alors sa représentation interne
est composée d'un certain nombre de valeurs du 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.
|
typarray | oid |
|
Si typarray est différent de zéro, alors il
identifie une autre ligne dans pg_type , qui est
le type tableau « true » disposant de ce type en élément.
|
typinput | regproc |
| Fonction de conversion en entrée (format texte) |
typoutput | regproc |
| Fonction de conversion en sortie (format texte) |
typreceive | regproc |
| Fonction de conversion en entrée (format binaire), ou 0 s'il n'y en a pas |
typsend | regproc |
| Fonction de conversion en sortie (format binaire), ou 0 s'il n'y en a pas |
typmodin | regproc |
| Fonction en entrée de modification du type ou 0 si le type ne supporte pas les modificateurs |
typmodout | regproc |
| Fonction en sortie de modification du type ou 0 pour utiliser le format standard |
typanalyze | regproc |
| Fonction ANALYZE personnalisée ou 0 pour
utiliser la fonction standard |
typalign | char |
Les valeurs possibles sont :
Note
Pour les types utilisés dans les tables systèmes il est indispensable
que les tailles et alignements définis dans
| |
typstorage | char |
Les colonnes | |
typnotnull | bool | Représente une contrainte non NULL. | |
typbasetype | oid |
|
S'il s'agit d'un domaine (voir |
typtypmod | int4 |
Les domaines utilisent ce champ pour
enregistrer le | |
typndims | int4 |
Le nombre de dimensions de
tableau pour un domaine sur un tableau (c'est-à-dire dont
| |
typcollation | oid |
|
|
typdefaultbin | pg_node_tree |
Si | |
typdefault | text |
NULL si le type n'a pas de valeur par
défaut associée. Si | |
typacl | aclitem[] | Droits d'accès ; voir GRANT et REVOKE pour les détails |
Tableau 52.63 liste les valeurs de
typcategory
définies par le système. Tout ajout
futur à la liste sera aussi une lettre ASCII majuscule. Tous les autres
caractères ASCII sont réservés pour les catégories définies par l'utilisateur.
Tableau 52.63. Codes typcategory
Code | Catégorie |
---|---|
A | Types tableaux |
B | Types booléens |
C | Types composites |
D | Types date/time |
E | Types enum |
G | Types géometriques |
I | Types adresses réseau |
N | Types numériques |
P | Pseudo-types |
S | Types chaînes |
R | Types range |
T | Types 'Timespan' (étendue de temps, intervalle) |
U | Types définis par l'utilisateur |
V | Types Bit-string |
X | Type unknown |