52.11. pg_class #

O catálogo pg_class descreve tabelas e outros objetos que possuem colunas ou que, de outra forma, são semelhantes a uma tabela. Isto inclui índices (mas veja também pg_index), sequências (mas veja também pg_sequence), visões, visões materializadas, tipos de dados compostos e tabelas TOAST; veja relkind. Abaixo, quando nos referimos a todos estes tipos de objetos, falamos de relações. Nem todas as colunas de pg_class têm significado para todos os tipos de relação.

Tabela 52.11. Colunas de pg_class

Coluna Tipo de dados

Descrição

oid oid

Identificador da linha

relname name

Nome da tabela, índice, visão, etc.

relnamespace oid (referencia pg_namespace.oid)

OID do espaço de nomes que contém esta relação

reltype oid (referencia pg_type.oid)

OID do tipo de dados que corresponde ao tipo de linha dessa tabela, se houver; zero para índices, sequências e tabelas TOAST, que não possuem entrada em pg_type.

reloftype oid (referencia pg_type.oid)

Para tabelas tipadas [a], o OID do tipo de dados composto subjacente; zero para todas as outras relações

relowner oid (referencia pg_authid.oid)

Dono da relação

relam oid (referencia pg_am.oid)

O método de acesso usado para acessar esta tabela ou índice. Sem significado se a relação for uma sequência ou não possuir arquivo em disco, exceto para tabelas particionadas, nas quais, se definido, tem precedência sobre default_table_access_method ao determinar o método de acesso a ser usado para partições criadas quando não é especificado o método no comando de criação.

relfilenode oid

Nome do arquivo em disco dessa relação; zero significa que ela é uma relação mapeada cujo nome do arquivo em disco é determinado pelo estado de baixo-nível

reltablespace oid (referencia pg_tablespace.oid)

O espaço de tabelas onde esta relação está armazenada. Se for zero, considera-se o espaço de tabelas padrão do banco de dados. Sem significado quando a relação não possui um arquivo em disco, exceto no caso de tabelas particionadas, onde se trata do espaço de tabelas onde as partições serão criadas quando não for especificado algum no comando de criação.

relpages int4

Tamanho da representação em disco dessa tabela em páginas (de tamanho BLCKSZ). Esta é apenas uma estimativa usada pelo planejador. É atualizado por VACUUM, ANALYZE, e alguns comandos de DDL, como CREATE INDEX.

reltuples float4

Número de linhas ativas na tabela. Esta é apenas uma estimativa usada pelo planejador. É atualizado por VACUUM, ANALYZE, e alguns poucos comandos de DDL, como CREATE INDEX. Se a tabela nunca foi limpa ou analisada, reltuples conterá -1 indicando que a contagem de linhas é desconhecida.

relallvisible int4

Número de páginas marcadas como totalmente visíveis no mapa de visibilidade da tabela. Esta é apenas uma estimativa usada pelo planejador. É atualizado por VACUUM, ANALYZE, e alguns poucos comandos de DDL, como CREATE INDEX.

relallfrozen int4

Número de páginas marcadas como inteiramente congeladas no mapa de visibilidade da tabela. É apenas uma estimativa usada para acionar a limpeza automática (autovacuum). Também pode ser usado em conjunto com relallvisible para agendamento de limpezas manuais e ajustes do comportamento de congelamento da limpeza. É atualizado por VACUUM, ANALYZE, e alguns comandos de DDL, como CREATE INDEX.

reltoastrelid oid (referencia pg_class.oid)

OID da tabela TOAST associada a esta tabela, zero se nenhuma. A tabela TOAST armazena atributos grandes fora de linha em uma tabela secundária.

relhasindex bool

Verdade se for uma tabela e tiver (ou tiver tido recentemente) algum índice

relisshared bool

Verdade se esta tabela for compartilhada por todos os bancos de dados da instância. Apenas determinados catálogos do sistema (como pg_database) são compartilhados.

relpersistence char

p = tabela/sequência permanente, u = tabela/sequência sem registro no WAL (unlogged), t = tabela/sequência temporária

relkind char

r = tabela comum, i = índice, S = sequência, t = tabela TOAST, v = visão, m = visão materializada, c = tipo de dados composto, f = tabela estrangeira, p = tabela particionada, I = índice particionado

relnatts int2

Número de colunas do usuário na relação (as colunas do sistema não são contadas). Deve haver esta quantidade de entradas correspondentes em pg_attribute. Veja também pg_attribute.attnum.

relchecks int2

Número de restrições CHECK na tabela; veja o catálogo pg_constraint

relhasrules bool

Verdade se a tabela tiver (ou já teve) regras; veja o catálogo pg_rewrite

relhastriggers bool

Verdade se a tabela tiver (ou já teve) gatilhos; veja o catálogo pg_trigger

relhassubclass bool

Verdade se a tabela ou o índice tiver (ou já teve) quaisquer tabelas filhas de herança ou partições.

relrowsecurity bool

Verdade se a tabela tiver a segurança no nível de linha ativa; veja o catálogo pg_policy

relforcerowsecurity bool

Verdade se a segurança no nível de linha (quando ativa) também se aplicar ao dono da tabela; veja o catálogo pg_policy

relispopulated bool

Verdade se a relação estiver preenchida (é verdade para todas as relações, exceto algumas visões materializadas)

relreplident char

Colunas usadas para formar a identidade da réplica para as linhas: d = padrão (chave primária, se houver), n = nada, f = todas as colunas, i = índice com indisreplident definido (o mesmo que nada se o índice usado tiver sido excluído)

relispartition bool

Verdade se a tabela ou índice for uma partição

relrewrite oid (referencia pg_class.oid)

Para as novas relações escritas durante uma operação de DDL que requer a reescrita da tabela, contém o OID da relação original; caso contrário, zero. Este estado só é visível internamente; este campo nunca deve conter nada além de zero para uma relação visível ao usuário.

relfrozenxid xid

Todos os IDs de transação anteriores a este foram substituídos por um ID de transação permanente (congelado) nesta tabela. É usado para rastrear se a tabela precisa ser limpa para evitar o reinício do ID de transação, ou para permitir que pg_xact seja encolhido. Zero (InvalidTransactionId) se a relação não for uma tabela.

relminmxid xid

Todos os IDs multixact anteriores a este foram substituídos por um ID de transação nesta tabela. É usado para rastrear se a tabela precisa ser limpa para evitar o reinício do ID multixact, ou para permitir que pg_multixact seja encolhido. Zero (InvalidMultiXactId) se a relação não for uma tabela.

relacl aclitem[]

Privilégios de acesso; veja Privilégios para obter detalhes

reloptions text[]

Opções específicas do método de acesso, na forma de cadeias de caracteres palavra-chave=valor

relpartbound pg_node_tree

Se a tabela for uma partição (veja relispartition), a representação interna do limite da partição

[a] Tabelas tipadas são tabelas definidas com um tipo de dados estruturado definido pelo usuário. IBM DB2 – Typed tables (N. T.)


Vários sinalizadores booleanos em pg_class são mantidos frouxamente: são garantidos como sendo verdade se este for o estado correto, mas não podem ser redefinidos para falso imediatamente quando a condição não for mais verdadeira. Por exemplo, relhasindex é definido por CREATE INDEX, mas nunca é limpo por DROP INDEX. Em vez disso, VACUUM limpa relhasindex se descobrir que a tabela não tem índices. Este arranjo evita condições de concorrência e melhora a simultaneidade.