The system catalogs are the place where a relational database management system stores schema metadata, such as information about tables and columns, and internal bookkeeping information. PostgreSQL's system catalogs are regular tables. You can drop and recreate the tables, add columns, insert and update values, and severely mess up your system that way. Normally one should not change the system catalogs by hand, there are always SQL commands to do that. (For example, CREATE DATABASE inserts a row into the pg_database catalog -- and actually creates the database on disk.) There are some exceptions for especially esoteric operations, such as adding index access methods.
Most system catalogs are copied from the template database during database creation, and are thereafter database-specific. A few catalogs are physically shared across all databases in an installation; these are marked in the descriptions of the individual catalogs.
Table 3-1. System Catalogs
| Catalog Name | Purpose |
|---|---|
| pg_aggregate | aggregate functions |
| pg_am | index access methods |
| pg_amop | access method operators |
| pg_amproc | access method support procedures |
| pg_attrdef | column default values |
| pg_attribute | table columns ("attributes", "fields") |
| pg_cast | casts (data type conversions) |
| pg_class | tables, indexes, sequences ("relations") |
| pg_constraint | check constraints, unique / primary key constraints, foreign key constraints |
| pg_conversion | encoding conversion information |
| pg_database | databases within this database cluster |
| pg_depend | dependencies between database objects |
| pg_description | descriptions or comments on database objects |
| pg_group | groups of database users |
| pg_index | additional index information |
| pg_inherits | table inheritance hierarchy |
| pg_language | languages for writing functions |
| pg_largeobject | large objects |
| pg_listener | asynchronous notification |
| pg_namespace | namespaces (schemas) |
| pg_opclass | index access method operator classes |
| pg_operator | operators |
| pg_proc | functions and procedures |
| pg_rewrite | query rewriter rules |
| pg_shadow | database users |
| pg_statistic | optimizer statistics |
| pg_trigger | triggers |
| pg_type | data types |
More detailed documentation of each catalog follows below.
Please use this form to add your own comments regarding your experience with particular features of PostgreSQL, clarifications of the documentation, or hints for other users. Please note, this is not a support forum, and your IP address will be logged. If you have a question or need help, please see the faq, try a mailing list, or join us on IRC. Note that submissions containing URLs or other keywords commonly found in 'spam' comments may be silently discarded. Please contact the webmaster if you think this is happening to you in error.
In order to submit a comment, you must have a community account.
* denotes required field