A visão element_types contém os
descritores do tipo de dados dos elementos das matrizes.
Quando uma coluna de tabela, atributo de tipo de dados composto,
domínio, parâmetro de função, ou valor retornado pela função,
é definido como sendo do tipo de dados matriz, a respectiva visão
do esquema de informações contém apenas ARRAY
na coluna data_type.
Para obter informações sobre o tipo de dados dos elementos da matriz,
pode-se juntar a respectiva visão com esta visão.
Por exemplo, para mostrar as colunas de uma tabela com os
tipos de dados da coluna e dos elementos da matriz,
se aplicável, pode-se executar:
SELECT c.column_name, c.data_type, e.data_type AS element_type
FROM information_schema.columns c
LEFT JOIN information_schema.element_types e
ON ((c.table_catalog, c.table_schema, c.table_name, '
TABLE', c.dtd_identifier)
= (e.object_catalog, e.object_schema, e.object_name,
e.object_type, e.collection_type_identifier))
WHERE c.table_schema = '...' AND c.table_name = '...'
ORDER BY c.ordinal_position;
Esta visão inclui apenas objetos aos quais o usuário corrente tem acesso, por ser o dono ou por ter algum privilégio.
Tabela 35.22. Colunas de element_types
Coluna Tipo de dados Descrição |
|---|
Nome do banco de dados que contém o objeto que utiliza a matriz descrita (sempre o banco de dados corrente) |
Nome do esquema que contém o objeto que usa a matriz sendo descrita |
Nome do objeto que utiliza a matriz sendo descrita |
O tipo do objeto que usa a matriz sendo descrita: um entre
|
O identificador do descritor do tipo de dados da matriz sendo
descrita.
Serve para realizar a junção com as colunas
|
Tipo de dados dos elementos da matriz, se for um tipo nativo,
caso contrário, |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Nome do banco de dados que contém a ordenação do tipo de dados do elemento (sempre o banco de dados corrente), nula se o valor padrão ou o tipo de dados do elemento não puder ser ordenado |
Nome do esquema que contém a ordenação do tipo de dados do elemento, nula se o valor padrão ou o tipo de dados do elemento não for ordenável |
Nome da ordenação do tipo de dados de elemento, nula se o valor padrão ou o tipo de dados do elemento não for ordenável |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Sempre nula, porque esta informação não se aplica a tipos de dados de elementos de matriz no PostgreSQL |
Nome do banco de dados onde o tipo de dados dos elementos está definido (sempre o banco de dados corrente) |
Nome do esquema em que o tipo de dados dos elementos está definido |
Nome do tipo de dados dos elementos |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Aplica-se a uma funcionalidade não disponível no PostgreSQL |
Sempre nula, porque as matrizes sempre têm cardinalidade máxima ilimitada no PostgreSQL |
Identificador do descritor de tipo de dados do elemento. No momento, não é útil. |
Exemplo 35.21. Exemplo do tradutor
Descritores do tipo de dados dos elementos das matrizes
Uso do esquema de informações para mostrar os descritores do tipo de dados dos elementos das matrizes do objeto jogo_da_velha no banco de dados cristina da usuária cristina.
CREATE TABLE jogo_da_velha (
tabuleiro integer[3][3]
);
CREATE TABLE
SELECT object_catalog, object_schema, object_name , object_type,
collection_type_identifier, data_type,
udt_catalog, udt_schema, udt_name, dtd_identifier
FROM information_schema.element_types
WHERE object_name = 'jogo_da_velha'\gx
-[ RECORD 1 ]--------------+-------------- object_catalog | cristina object_schema | public object_name | jogo_da_velha object_type | TABLE collection_type_identifier | 1 data_type | integer udt_catalog | cristina udt_schema | pg_catalog udt_name | int4 dtd_identifier | a1
Exemplo 35.22. Exemplo do tradutor
Colunas da tabela com os tipos de dados da coluna e dos elementos da matriz
Uso do esquema de informações para mostrar as colunas da tabela jogo_da_velha com os tipos de dados da coluna e dos elementos da matriz no banco de dados cristina da usuária cristina através da junção da visão columns com a visão element_types.
SELECT c.table_name, c.column_name, c.data_type, e.data_type AS element_type
FROM information_schema.columns c
LEFT JOIN information_schema.element_types e
ON ((c.table_catalog, c.table_schema, c.table_name,
'TABLE', c.dtd_identifier)
= (e.object_catalog, e.object_schema, e.object_name,
e.object_type, e.collection_type_identifier))
WHERE c.table_schema = 'public' AND c.table_name = 'jogo_da_velha';
table_name | column_name | data_type | element_type ---------------+-------------+-----------+-------------- jogo_da_velha | tabuleiro | ARRAY | integer (1 linha)