O catálogo pg_attribute armazena informações sobre as colunas das tabelas. Existe exatamente uma linha em pg_attribute para cada coluna de cada tabela do banco de dados (Também existem entradas de atributo para os índices, e todos os objetos que possuem entrada em pg_class).
O termo atributo equivale a coluna, sendo usado por motivos históricos.
Tabela 42-7. Colunas de pg_attribute
Nome | Tipo | Referencia | Descrição |
---|---|---|---|
attrelid | oid | pg_class.oid | Tabela que esta coluna pertence |
attname | name | Nome da coluna | |
atttypid | oid | pg_type.oid | Tipo de dado desta coluna |
attstattarget | int4 | attstattarget controla o nível de detalhe das estatísticas acumuladas para esta coluna pelo comando ANALYZE. O valor zero indica que não deve ser coletada nenhuma estatística. Um valor negativo diz para usar o padrão do sistema para estatísticas. O significado exato dos valores positivos é dependente do tipo de dado. Para os tipos de dado escalares, attstattarget é tanto o número de "valores mais comuns" a serem coletados, quanto o número de barras do histograma a serem criadas | |
attlen | int2 | Cópia de pg_type.typlen do tipo desta coluna | |
attnum | int2 | Número da coluna. As colunas comuns são numeradas a partir de um. As colunas do sistema, tal como oid, possuem números negativos (arbitrários) | |
attndims | int4 | Número de dimensões, se a coluna for de um tipo matriz; senão zero (Atualmente o número de dimensões de uma matriz não é imposto, portanto qualquer valor diferente de zero significa de fato "isto é uma matriz") | |
attcacheoff | int4 | Sempre -1 no armazenamento, mas quando carregado na memória em um descritor de linha pode ser atualizado para guardar o deslocamento do atributo na linha. | |
atttypmod | int4 | atttypmod registra dados específicos do tipo, fornecidos na hora da criação da tabela (por exemplo, o comprimento máximo de uma coluna varchar). É passado para as funções de entrada específicas dos tipos, e para as funções de imposição de comprimento. Geralmente o valor é -1 para os tipos que não necessitam de atttypmod | |
attbyval | bool | Cópia de pg_type.typbyval do tipo desta coluna | |
attstorage | char | Normalmente uma cópia de pg_type.typstorage do tipo desta coluna. Para os tipos de dado fatiáveis (TOAST), pode ser alterado após a criação da coluna para controlar a política de armazenamento | |
attalign | char | Cópia de pg_type.typalign do tipo desta coluna | |
attnotnull | bool | Representa uma restrição de não-nulo. É possível modificar esta coluna para ativar ou desativar a restrição | |
atthasdef | bool | Indica se esta coluna possui um valor padrão e, neste caso, existe uma entrada correspondente no catálogo pg_attrdef que realmente define o valor | |
attisdropped | bool | Indica se esta coluna foi removida e, portanto, não é mais válida. Uma coluna removida continua presente na tabela, mas é ignorada pelo analisador e, portanto, não pode ser acessada via SQL | |
attislocal | bool | Indica se a coluna é definida localmente na relação. Deve ser observado que a coluna pode ser definida localmente e herdada simultaneamente. | |
attinhcount | int4 | Número de ancestrais diretos que a coluna possui. Uma coluna com um número de ancestrais diferente de zero não pode ser removida nem renomeada. |
Na entrada em pg_attribute da coluna removida, atttypid é redefinido como zero, mas attlen e os outros campos copiados de pg_type ainda são válidos. Esta arrumação é necessária para lidar com a situação onde o tipo de dado da coluna removida foi removido posteriormente, e portanto não existe mais a linha em pg_type. attlen e os outros campos podem ser utilizados para interpretar o conteúdo da linha da tabela.