# pg_class_internal The system catalog table `pg_class_internal` catalogs tables and most everything else that has columns or is otherwise similar to a table (also known as *relations*). This includes indexes (see also [pg_index](./pg_index.md)), sequences, views, composite types, and TOAST tables. Not all columns are meaningful for all relation types. Table 1. `pg_catalog.pg_class_internal` | column | type | references | description | | :--------------- | :-------- | :---------------- | :----------------------------------------------------------- | | `relrootoid` | oid | | The root OID of the object. For partition table, this column store OID of root table of the child table | | `relname` | name | | Name of the table, index, view, etc. | | `relnamespace` | oid | pg_namespace.oid | The OID of the namespace (schema) that contains this relation | | `reltype` | oid | pg_type.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 | pg_authid.oid | Owner of the relation | | `relam` | oid | pg_am.oid | If this is an index, the access method used (B-tree, Bitmap, hash, etc.) | | `relfilenode` | oid | | Name of the on-disk file of this relation; `0` if none. | | `reltablespace` | oid | 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.) | | `rellocidx` | smallint | | index of filespace location array | | `relpages` | integer | | Size of the on-disk representation of this table in pages (of 32K each). This is only an estimate used by the planner. It is updated by `ANALYZE`, and a few DDL commands. | | `reltuples` | real | | 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. | | `reltoastrelid` | oid | pg_class_internal.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 | pg_class_internal.oid | For a TOAST table, the OID of its index. `0` if not a TOAST table. | | `relhasindex` | boolean | | 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` will clear if it finds the table has no indexes. | | `relisshared` | boolean | | True if this table is shared across all databases in the system. Only certain system catalog tables are shared. | | `relkind` | char | | The type of object`r` = heap table, `i` = index, `S` = sequence, `v` = view, `c` = composite type, `t` = TOAST value, `c` = composite type, `u` = uncataloged temporary heap table | | `relstorage` | char | | The storage mode of a table`a` = append-only, `h` = heap, `p` = append-only parquet, `v` = virtual, `x`= external table. | | `relnatts` | smallint | | Number of user columns in the relation (system columns not counted). There must be this many corresponding entries in pg_attribute. | | `relchecks` | smallint | | Number of check constraints on the table. | | `reltriggers` | smallint | | Number of triggers on the table. | | `relukeys` | smallint | | Unused | | `relfkeys` | smallint | | Unused | | `relrefs` | smallint | | Unused | | `relhasoids` | boolean | | True if an OID is generated for each row of the relation. | | `relhaspkey` | boolean | | True if the table once had a primary key. | | `relhasrules` | boolean | | True if table has rules. | | `relhassubclass` | boolean | | 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 assigned by `GRANT` and `REVOKE`. | | `reloptions` | text[] | | Access-method-specific options, as “keyword=value” strings. |