oid oid Row identifier |
relname name Name of the table, index, view, etc. |
relnamespace oid (references pg_namespace.oid) The OID of the namespace that contains this relation |
reltype oid (references pg_type.oid) The OID of the data type that corresponds to this table's row type, if any; zero for indexes, sequences, and toast tables, which have no pg_type entry |
reloftype oid (references pg_type.oid) For typed tables, the OID of the underlying composite type; zero for all other relations |
relowner oid (references pg_authid.oid) Owner of the relation |
relam oid (references pg_am.oid) The access method used to access this table or index. Not meaningful if the relation is a sequence or has no on-disk file, except for partitioned tables, where, if set, it takes precedence over default_table_access_method when determining the access method to use for partitions created when one is not specified in the creation command. |
relfilenode oid Name of the on-disk file of this relation; zero means this is a “mapped” relation whose disk file name is determined by low-level state |
reltablespace oid (references pg_tablespace.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, except for partitioned tables, where this is the tablespace in which partitions will be created when one is not specified in the creation command. |
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 live 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. If the table has never yet been vacuumed or analyzed, reltuples contains -1 indicating that the row count is unknown. |
relallvisible int4 Number of pages that are marked all-visible in the table's visibility map. 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 (references pg_class.oid) OID of the TOAST table associated with this table, zero if none. The TOAST table stores large attributes “out of line” in a secondary table. |
relhasindex bool True if this is a table and it has (or recently had) any 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. |
relpersistence char p = permanent table/sequence, u = unlogged table/sequence, t = temporary table/sequence |
relkind char r = ordinary table, i = index, S = sequence, t = TOAST table, v = view, m = materialized view, c = composite type, f = foreign table, p = partitioned table, I = partitioned index |
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 |
relhasrules bool True if table has (or once had) rules; see pg_rewrite catalog |
relhastriggers bool True if table has (or once had) triggers; see pg_trigger catalog |
relhassubclass bool True if table or index has (or once had) any inheritance children or partitions |
relrowsecurity bool True if table has row-level security enabled; see pg_policy catalog |
relforcerowsecurity bool True if row-level security (when enabled) will also apply to table owner; see pg_policy catalog |
relispopulated bool True if relation is populated (this is true for all relations other than some materialized views) |
relreplident char Columns used to form “replica identity” for rows: d = default (primary key, if any), n = nothing, f = all columns, i = index with indisreplident set (same as nothing if the index used has been dropped) |
relispartition bool True if table or index is a partition |
relrewrite oid (references pg_class.oid) For new relations being written during a DDL operation that requires a table rewrite, this contains the OID of the original relation; otherwise zero. That state is only visible internally; this field should never contain anything other than zero for a user-visible relation. |
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_xact to be shrunk. Zero (InvalidTransactionId) if the relation is not a table. |
relminmxid xid All multixact IDs before this one have been replaced by a transaction ID in this table. This is used to track whether the table needs to be vacuumed in order to prevent multixact ID wraparound or to allow pg_multixact to be shrunk. Zero (InvalidMultiXactId) if the relation is not a table. |
relacl aclitem[] Access privileges; see Section 5.8 for details |
reloptions text[] Access-method-specific options, as “keyword=value” strings |
relpartbound pg_node_tree If table is a partition (see relispartition), internal representation of the partition bound |