52.30. pg_largeobject #

O catálogo pg_largeobject contém os dados que compõem objetos grandes. Um objeto grande é identificado por um OID atribuído quando é criado. Cada objeto grande é dividido em segmentos ou páginas pequenos o suficiente para serem convenientemente armazenados como linhas em pg_largeobject. A quantidade de dados por página é definida como LOBLKSIZE (que no momento é BLCKSZ/4, ou normalmente 2 kB).

Antes do PostgreSQL 9.0, não havia estrutura de permissão associada a objetos grandes. Como resultado, pg_largeobject era legível publicamente, podendo ser usado para obter os OIDs (e conteúdos) de todos os objetos grandes no sistema. Este não é mais o caso; deve ser usado pg_largeobject_metadata para obter uma lista de OIDs de objetos grandes.

Tabela 52.30. Colunas de pg_largeobject

Coluna Tipo de dados

Descrição

loid oid (referencia pg_largeobject_metadata.oid)

Identificador do objeto grande que inclui esta página

pageno int4

Número da página dessa página dentro de seu objeto grande (contado a partir de zero)

data bytea

Dados reais armazenados no objeto grande. Nunca será maior que LOBLKSIZE bytes, podendo ser menor.


Cada linha de pg_largeobject contém dados para uma página de um objeto grande, começando no deslocamento de bytes (pageno * LOBLKSIZE) dentro do objeto. A implementação permite armazenamento esparso: páginas podem estar faltando e podem ser menores que LOBLKSIZE bytes, mesmo que não sejam a última página do objeto. Regiões ausentes em um objeto grande são lidas como zeros.

Veja também