As visualizações do esquema de informações e pg_typeof () retornam informações de tipo incompletas. Dessas respostas, psql
fornece as informações de tipo mais precisas. (O OP pode não precisar de informações tão precisas, mas deve conhecer as limitações.)
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
);
Usar psql
e \d public.test
mostrar corretamente o uso do tipo de dados test_domain
, o comprimento das colunas varchar (n) e a precisão e a escala das colunas numéricas (p, s).
sandbox = # \ d public.test
Tabela "public.test"
Coluna | Tipo | Modificadores
--------- + ----------------------- + -----------
test_id | test_domain |
test_vc | caracteres variando (15) |
test_n | numérico (15,3) |
big_n | bigint |
ip_addr | inet |
Esta consulta em uma visualização information_schema não mostra o uso de test_domain
todos. Ele também não informa os detalhes das colunas varchar (n) e numéricas (p, s).
select column_name, data_type
from information_schema.columns
where table_catalog = 'sandbox'
and table_schema = 'public'
and table_name = 'test';
nome_da_coluna | tipo de dados
------------- + -------------------
test_id | personagem variando
test_vc | personagem variando
test_n | numérico
big_n | bigint
ip_addr | inet
Você pode obter todas essas informações ingressando em outras visualizações information_schema ou consultando diretamente as tabelas do sistema. psql -E
pode ajudar com isso.
A função pg_typeof()
mostra corretamente o uso de test_domain
, mas não relata os detalhes das colunas varchar (n) e numéricas (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 | caractere variando | numérico | bigint | inet