35.60. user_defined_types #

A visão user_defined_types no momento contém todos os tipos de dados compostos definidos no banco de dados corrente. Somente são mostrados os tipos de dados aos quais o usuário corrente tem acesso (por ser o dono, ou por ter algum privilégio).

O padrão SQL reconhece dois tipos de tipo de dados definido pelo usuário: tipos estruturados (também conhecidos como tipos compostos no PostgreSQL), e os tipos de dados distintos (não implementado no PostgreSQL). Para estar preparado para o futuro, deve-se usar a coluna user_defined_type_category para diferenciá-los. Outros tipos de dados definidos pelo usuário, como tipos-base e enumerações, que são extensões do PostgreSQL, não são mostrados nesta visão. Para os domínios, veja domains em vez dessa visão.

Tabela 35.58. Colunas de user_defined_types

Coluna Tipo de dados

Descrição

user_defined_type_catalog sql_identifier

Nome do banco de dados que contém o tipo de dados (sempre o banco de dados corrente)

user_defined_type_schema sql_identifier

Nome do esquema que contém o tipo de dados

user_defined_type_name sql_identifier

Nome do tipo de dados

user_defined_type_category character_data

No momento sempre STRUCTURED

is_instantiable yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

is_final yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

ordering_form character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

ordering_category character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

ordering_routine_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

ordering_routine_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

ordering_routine_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

reference_type character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

data_type character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_maximum_length cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_octet_length cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

collation_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

collation_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

collation_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

numeric_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

numeric_precision_radix cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

numeric_scale cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

datetime_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

interval_type character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

interval_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

source_dtd_identifier sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

ref_dtd_identifier sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL


Exemplo 35.55. Exemplo do tradutor

Tipos de dados compostos

Uso do esquema de informações para mostrar os tipos de dados compostos definidos no banco de dados cristina da usuára cristina. Foi usado o jsonb para eliminar as colunas com valor nulo e formatar a saída.

SELECT jsonb_pretty(jsonb_strip_nulls(to_jsonb(t)))
FROM information_schema.user_defined_types t;

                   jsonb_pretty
--------------------------------------------------
 {                                               +
     "is_instantiable": "YES",                   +
     "user_defined_type_name": "item_inventário",+
     "user_defined_type_schema": "public",       +
     "user_defined_type_catalog": "cristina",    +
     "user_defined_type_category": "STRUCTURED"  +
 }
 {                                               +
     "is_instantiable": "YES",                   +
     "user_defined_type_name": "complexo",       +
     "user_defined_type_schema": "public",       +
     "user_defined_type_catalog": "cristina",    +
     "user_defined_type_category": "STRUCTURED"  +
 }
(2 linhas)