52.7. pg_attribute #

O catálogo pg_attribute armazena informações sobre colunas de tabela. Há exatamente uma linha em pg_attribute para cada coluna em cada tabela do banco de dados. (Há também entradas de atributos para índices e, na verdade, todos os objetos que possuem entradas em pg_class.)

O termo atributo equivale a coluna sendo usado por motivos históricos.

Tabela 52.7. Colunas de pg_attribute

Coluna Tipo de dados

Descrição

attrelid oid (referencia pg_class.oid)

A tabela à qual esta coluna pertence

attname name

O nome da coluna

atttypid oid (referencia pg_type.oid)

O tipo de dados dessa coluna (zero para uma coluna excluída)

attlen int2

Uma cópia de pg_type.typlen do tipo de dados dessa coluna

attnum int2

O número da coluna. As colunas comuns são numeradas de 1 para cima. As colunas do sistema, como ctid, possuem números negativos (arbitrários).

atttypmod int4

atttypmod registra dados específicos do tipo de dados, fornecidos no momento da criação da tabela (por exemplo, o comprimento máximo de uma coluna varchar). É passado para funções de entrada específicas de tipo de dados e funções de coerção de comprimento. O valor geralmente é -1 para tipos de dados que não necessitam de atttypmod.

attndims int2

Número de dimensões, se a coluna for do tipo matriz; caso contrário, 0. (No momento, o número de dimensões de uma matriz não é obrigatório, então qualquer valor diferente de zero significa efetivamente que é uma matriz.)

attbyval bool

Uma cópia de pg_type.typbyval do tipo de dados desta coluna

attalign char

Uma cópia de pg_type.typalign do tipo de dados dessa coluna

attstorage char

Normalmente uma cópia de pg_type.typstorage do tipo de dados dessa coluna. Para tipos de dados compatíveis com TOAST, pode ser alterado após a criação da coluna para controlar a política de armazenamento.

attcompression char

O método de compressão corrente da coluna. Normalmente é '\0' para especificar o uso da configuração padrão corrente (veja default_toast_compression). Caso contrário, 'p' seleciona a compressão pglz, enquanto 'l' seleciona a compressão LZ4. Entretanto, este campo é ignorado sempre que attstorage não permite compressão.

attnotnull bool

Esta coluna possui uma restrição de não-nulo (possivelmente inválida).

atthasdef bool

Esta coluna tem uma expressão padrão ou expressão de geração, caso em que haverá uma entrada correspondente no catálogo pg_attrdef que realmente define a expressão. (Verifique attgenerated para determinar se é uma expressão padrão ou de geração.)

atthasmissing bool

Esta coluna tem um valor usado quando a coluna está totalmente ausente da linha, como acontece quando uma coluna é adicionada com um valor DEFAULT não volátil após a linha ser criada. O valor real usado é armazenado na coluna attmissingval.

attidentity char

Se for um byte zero (''), então não é uma coluna de identidade. Caso contrário, a = gerado sempre, e d = gerado por padrão.

attgenerated char

Se for um byte zero (''), então não é uma coluna gerada. Caso contrário, s = armazenada, v = virtual. Uma coluna gerada armazenada é armazenada fisicamente como uma coluna normal. Uma coluna gerada virtual é armazenada fisicamente como um valor nulo, sendo o valor efetivo calculado em tempo de execução.

attisdropped bool

Esta coluna foi excluída e não é mais válida. Uma coluna excluída permanece fisicamente presente na tabela, mas é ignorada pelo analisador e, portanto, não pode ser acessada via SQL.

attislocal bool

Esta coluna é definida localmente na relação. Note-se que uma coluna pode ser definida localmente e herdada simultaneamente.

attinhcount int2

O número de ancestrais diretos que esta coluna possui. Uma coluna com um número diferente de zero de ancestrais não pode ser excluída nem renomeada.

attcollation oid (referencia pg_collation.oid)

A ordenação definida da coluna, ou zero se a coluna não for de um tipo de dados ordenável.

attstattarget int2

attstattarget controla o nível de detalhamento das estatísticas acumuladas para esta coluna pelo comando ANALYZE. Um valor zero indica que nenhuma estatística deve ser coletada. Um valor nulo indica que deve ser utilizada a meta de estatísticas padrão do sistema. O significado exato dos valores positivos depende do tipo de dado. Para tipos de dados escalares, attstattarget é tanto o número-alvo de valores mais comuns a serem coletados quanto o número desejado de intervalos do histograma a serem criados.

attacl aclitem[]

Privilégios de acesso no nível de coluna, se tiver sido concedido algum especificamente nesta coluna.

attoptions text[]

Opções no nível de atributo, na forma de cadeias de caracteres palavra-chave=valor

attfdwoptions text[]

Opções do empacotador de dados estrangeiros no nível de atributo, na forma de cadeias de caracteres palavra-chave=valor

attmissingval anyarray

Esta coluna possui uma matriz de um elemento contendo o valor usado quando a coluna está totalmente ausente da linha, como acontece quando a coluna é adicionada com um valor DEFAULT não volátil após a linha ser criada. O valor só é usado quando atthasmissing é verdade. Se não houver valor, a coluna será nula.


Na entrada pg_attribute de uma coluna excluída, atttypid é redefinido para zero, mas attlen e os outros campos copiados de pg_type ainda são válidos. Este arranjo é necessário para lidar com a situação em que o tipo de dados da coluna excluída foi excluído posteriormente e, portanto, não há mais nenhuma linha em pg_type. Então attlen e os demais campos podem ser usados ​​para interpretar o conteúdo de uma linha da tabela.