The catalog pg_class
catalogs tables and most
everything else that has columns or is otherwise similar to a
table. This includes indexes (but see also
pg_index
), sequences, views, composite types,
and TOAST tables; see relkind
.
Below, when we mean all of these
kinds of objects we speak of “relations”. Not all
columns are meaningful for all relation types.
Table 43.12. pg_class
Columns
Name | Type | References | Description |
---|---|---|---|
relname |
name |
Name of the table, index, view, etc. | |
relnamespace |
oid |
|
The OID of the namespace that contains this relation |
reltype |
oid |
|
The OID of the data type that corresponds to this table's row type,
if any (zero for indexes, which have no pg_type entry)
|
relowner |
oid |
|
Owner of the relation |
relam |
oid |
|
If this is an index, the access method used (B-tree, hash, etc.) |
relfilenode |
oid |
Name of the on-disk file of this relation; 0 if none | |
reltablespace |
oid |
|
The tablespace in which this relation is stored. If zero, the database's default tablespace is implied. (Not meaningful if the relation has no on-disk file.) |
relpages |
int4 |
Size of the on-disk representation of this table in pages (of size
BLCKSZ ). This is only an estimate used by the
planner. It is updated by VACUUM ,
ANALYZE , and a few DDL commands such as
CREATE INDEX
|
|
reltuples |
float4 |
Number of rows in the table. This is only an estimate used by the
planner. It is updated by VACUUM ,
ANALYZE , and a few DDL commands such as
CREATE INDEX
|
|
reltoastrelid |
oid |
|
OID of the TOAST table associated with this table, 0 if none. The TOAST table stores large attributes “out of line” in a secondary table |
reltoastidxid |
oid |
|
For a TOAST table, the OID of its index. 0 if not a TOAST table |
relhasindex |
bool |
True if this is a table and it has (or recently had) any
indexes. This is set by CREATE INDEX , but
not cleared immediately by DROP INDEX .
VACUUM clears relhasindex if it finds the
table has no indexes
|
|
relisshared |
bool |
True if this table is shared across all databases in the cluster. Only
certain system catalogs (such as pg_database )
are shared
|
|
relkind |
char |
r = ordinary table, i = index,
S = sequence, v = view, c =
composite type, t = TOAST
table
|
|
relnatts |
int2 |
Number of user columns in the relation (system columns not
counted). There must be this many corresponding entries in
pg_attribute . See also
pg_attribute.attnum
|
|
relchecks |
int2 |
Number of check constraints on the table; see
pg_constraint catalog
|
|
reltriggers |
int2 |
Number of triggers on the table; see
pg_trigger catalog
|
|
relukeys |
int2 |
Unused (not the number of unique keys) | |
relfkeys |
int2 |
Unused (not the number of foreign keys on the table) | |
relrefs |
int2 |
Unused | |
relhasoids |
bool |
True if we generate an OID for each row of the relation | |
relhaspkey |
bool |
True if the table has (or once had) a primary key | |
relhasrules |
bool |
True if table has rules; see
pg_rewrite catalog
|
|
relhassubclass |
bool |
True if table has (or once had) any inheritance children | |
relfrozenxid |
xid |
All transaction IDs before this one have been replaced with a permanent
(“frozen”) transaction ID in this table. This is used to track
whether the table needs to be vacuumed in order to prevent transaction
ID wraparound or to allow pg_clog to be shrunk. Zero
(InvalidTransactionId ) if the relation is not a table
|
|
relacl |
aclitem[] |
Access privileges; see GRANT and REVOKE for details | |
reloptions |
text[] |
Access-method-specific options, as “keyword=value” strings |