Les vues du schéma d'information et pg_typeof() renvoient des informations de type incomplètes. Parmi ces réponses, psql
donne les informations les plus précises sur le type. (Le PO peut ne pas avoir besoin d'informations aussi précises, mais il doit en connaître les limites).
create domain test_domain as varchar(15);
create table test (
test_id test_domain,
test_vc varchar(15),
test_n numeric(15, 3),
big_n bigint,
ip_addr inet
);
Utilisation de psql
y \d public.test
montre correctement l'utilisation du type de données test_domain
la longueur des colonnes varchar(n), et la précision et l'échelle des colonnes numeric(p, s).
sandbox=# \\d public.test
Table "public.test"
Column | Type | Modifiers
---------+-----------------------+-----------
test\_id | test\_domain |
test\_vc | character varying(15) |
test\_n | numeric(15,3) |
big\_n | bigint |
ip\_addr | inet |
Cette requête contre une vue d'information_schema fait pas montrent l'utilisation de test_domain
du tout. Il ne rapporte pas non plus les détails des colonnes varchar(n) et numeric(p, s).
select column_name, data_type
from information_schema.columns
where table_catalog = 'sandbox'
and table_schema = 'public'
and table_name = 'test';
column\_name | data\_type
-------------+-------------------
test\_id | character varying
test\_vc | character varying
test\_n | numeric
big\_n | bigint
ip\_addr | inet
Vous pourrait être en mesure d'obtenir toutes ces informations en rejoignant d'autres vues d'information_schema, ou en interrogeant directement les tables du système. psql -E
pourrait aider à cela.
La fonction pg_typeof()
montre correctement l'utilisation de test_domain
mais ne rapporte pas les détails des colonnes varchar(n) et numeric(p, s).
select pg_typeof(test_id) as test_id,
pg_typeof(test_vc) as test_vc,
pg_typeof(test_n) as test_n,
pg_typeof(big_n) as big_n,
pg_typeof(ip_addr) as ip_addr
from test;
test\_id | test\_vc | test\_n | big\_n | ip\_addr
-------------+-------------------+---------+--------+---------
test\_domain | character varying | numeric | bigint | inet