42.30. pg_type

O catálogo pg_type armazena informações sobre tipos de dado. Os tipos base (tipos escalares) são criados pelo comando CREATE TYPE, e os domínios pelo comando CREATE DOMAIN. Para cada tabela do banco de dados é criado, automaticamente, um tipo composto para representar a estrutura da linha da tabela. Também é possível criar tipos compostos utilizando o comando CREATE TYPE AS.

Tabela 42-30. Colunas de pg_type

Nome Tipo Referencia Descrição
typname name   Nome do tipo de dado
typnamespace oid pg_namespace.oid OID do espaço de nomes que contém este tipo.
typowner int4 pg_shadow.usesysid Dono do tipo
typlen int2   Para um tipo de tamanho fixo, typlen é o número de bytes na representação interna do tipo. Para um tipo de tamanho variável, typlen é negativo. -1 indica um tipo "varlena" (aquele que tem a palavra comprimento), -2 indica uma cadeia de caracteres C terminada por nulo.
typbyval bool   typbyval determina se as rotinas internas passam o valor deste tipo por valor ou por referência. É melhor typbyval ser falso se typlen não for igual a 1, 2 ou 4 (ou 8 nas máquinas com Datum igual a 8 bytes). Os tipos de comprimento variável são sempre passados por referência. Deve ser observado que typbyval pode ser falso mesmo quando o comprimento permite passar por valor; atualmente isto é verdade para o tipo float4, por exemplo.
typtype char   typtype é igual a b para um tipo base, igual a c para um tipo composto (ou seja, o tipo de uma linha de tabela), igual a d para um domínio, ou igual a p para um pseudotipo. Consulte também typrelid e typbasetype.
typisdefined bool   Verdade se o tipo estiver definido, falso se for uma entrada para guardar lugar para um tipo que ainda não está definido. Quando typisdefined for falso, não se poderá confiar em nada além do nome do tipo, espaço de nomes e OID.
typdelim char   Caractere que separa dois valores deste tipo ao analisar entrada na forma de matriz. Deve ser observado que o delimitador está associado ao tipo de dado do elemento, e não ao tipo de dado da matriz
typrelid oid pg_class.oid Se for um tipo composto (consulte typtype), então esta coluna aponta para a entrada em pg_class que define a tabela correspondente (Para um tipo composto independente, a entrada em pg_class não representa realmente uma tabela, mas de todo jeito é necessária para as entradas em pg_attribute do tipo fazerem ligação). Zero para os tipos não-compostos.
typelem oid pg_type.oid Se typelem não for 0, então identifica outra linha em pg_type. O tipo corrente pode ser acessado como qualquer matriz produzindo valores do tipo typelem. Um tipo matriz "de verdade" é de comprimento variável (typlen = -1), mas alguns tipos de comprimento fixo (typlen > 0) também possuem typelem diferente de zero como, por exemplo, name e oidvector. Se um tipo de comprimento fixo possui typelem, então sua representação interna deve ser alguma quantidade de valores do tipo de dado typelem com nenhum outro dado. Os tipos matriz de comprimento variável possuem um cabeçalho definido pelas subrotinas da matriz.
typinput regproc pg_proc.oid Função de conversão da entrada (formato texto)
typoutput regproc pg_proc.oid Função de conversão da saída (formato texto)
typreceive regproc pg_proc.oid Função de conversão da entrada (formato binário), ou 0 se nenhuma
typsend regproc pg_proc.oid Função de conversão da saída (formato binário), ou 0 se nenhuma
typanalyze regproc pg_proc.oid Função ANALYZE personalizada, ou 0 para utilizar a função padrão
typalign char  

typalign é o alinhamento requerido para armazenar um valor deste tipo. Se aplica ao armazenamento em disco, assim como a maioria das representações do valor dentro do PostgreSQL. Quando vários valores são armazenados consecutivamente, tal como na representação de uma linha completa no disco, é inserido um preenchimento antes do dado deste tipo para que comece na fronteira especificada. A referência de alinhamento é o início do primeiro dado na seqüência.

Os valores possíveis são:

  • c = alinhamento char, ou seja, nenhum alinhamento é necessário.

  • s = alinhamento short (2 bytes na maioria das máquinas).

  • i = alinhamento int (4 bytes na maioria das máquinas).

  • d = alinhamento double (8 bytes na maioria das máquinas, mas de forma alguma em todas).

Nota: Para os tipos utilizados nas tabelas do sistema, é crítico que o tamanho e o alinhamento definidos em pg_type estejam de acordo com a forma como o compilador organiza a coluna na estrutura que representa a linha da tabela.

typstorage char  

typstorage informa para os tipos varlena (aqueles com typlen = -1) se o tipo está preparado para o fatiamento (toasting), e qual deve ser a estratégia padrão para os atributos deste tipo. Os valores possíveis são:

  • p: O valor deve ser sempre armazenado diretamente.

  • e: O valor pode ser armazenado em uma relação "secundária" (se a relação possuir uma, consulte pg_class.reltoastrelid).

  • m: O valor pode ser armazenado em-linha comprimido.

  • x: O valor pode ser armazenado em-linha comprimido, ou posto no armazenamento "secundário".

Deve ser observado que as colunas do tipo m também podem ser movidas para o armazenamento secundário, mas somente como último recurso (Primeiro são movidas as colunas do tipo e e do tipo x).

typnotnull bool  

typnotnull representa uma restrição de não-nulo no tipo. Utilizado apenas em domínios.

typbasetype oid pg_type.oid

Se for um domínio (consulte typtype), então typbasetype identifica o tipo em que é baseado. Zero se não for um domínio.

typtypmod int4  

Os domínios utilizam typtypmod para registrar o typmod a ser aplicado ao seu tipo base (-1 se o tipo base não utilizar um typmod). -1 se este tipo não for um domínio.

typndims int4  

typndims é o número de dimensões da matriz para o domínio que é uma matriz (ou seja, typbasetype é um tipo matriz; o typelem do domínio corresponde ao tipo base de typelem). Zero para os tipos que não forem domínios matriz.

typdefaultbin text  

Se typdefaultbin não for nulo, é a representação nodeToString() da expressão padrão para o tipo. Utilizado apenas para domínios.

typdefault text  

typdefault é nulo se o tipo não tiver valor padrão associado. Se typdefaultbin não for nulo, typdefault deve conter uma versão humanamente legível da expressão padrão representada por typdefaultbin. Se typdefaultbin for nulo e typdefault não for, então typdefault é a representação externa do valor padrão do tipo, o qual pode ser introduzido no conversor de entrada do tipo para produzir uma constante.

SourceForge.net Logo CSS válido!