51.30. pg_largeobject
The catalog
pg_largeobject
holds the data making up
"
large objects
"
. A large object is identified by an OID
assigned when it is created. Each large object is broken into
segments or
"
pages
"
small enough to be conveniently stored as rows
in
pg_largeobject
.
The amount of data per page is defined to be
LOBLKSIZE
(which is currently
BLCKSZ/4
, or typically 2 kB).
Prior to
PostgreSQL
9.0, there was no permission structure
associated with large objects. As a result,
pg_largeobject
was publicly readable and could be
used to obtain the OIDs (and contents) of all large objects in the system.
This is no longer the case; use
pg_largeobject_metadata
to obtain a list of large object OIDs.
Table 51.30.
pg_largeobject
Columns
Name | Type | References | Description |
---|---|---|---|
loid
|
oid
|
|
Identifier of the large object that includes this page |
pageno
|
int4
|
Page number of this page within its large object (counting from zero) | |
data
|
bytea
|
Actual data stored in the large object.
This will never be more than
LOBLKSIZE
bytes and might be less.
|
Each row of
pg_largeobject
holds data
for one page of a large object, beginning at
byte offset (
pageno * LOBLKSIZE
) within the object. The implementation
allows sparse storage: pages might be missing, and might be shorter than
LOBLKSIZE
bytes even if they are not the last page of the object.
Missing regions within a large object read as zeroes.