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 never has to 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 esoteric operations, such as adding index access methods.
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_class | tables, indexes, sequences ("relations") |
pg_database | databases |
pg_description | descriptions or comments on database objects |
pg_group | user groups |
pg_index | additional index information |
pg_inheritproc | (not used) |
pg_inherits | table inheritance hierarchy |
pg_ipl | (not used) |
pg_language | languages for writing functions |
pg_largeobject | large objects |
pg_listener | asynchronous notification |
pg_opclass | index access method operator classes |
pg_operator | operators |
pg_proc | functions and procedures |
pg_relcheck | check constraints |
pg_rewrite | query rewriter rules |
pg_shadow | database users |
pg_statistic | optimizer statistics |
pg_trigger | triggers |
pg_type | data types |
More detailed documentation of most catalogs follow below. The catalogs that relate to index access methods are explained in the Programmer's Guide. Some catalogs don't have any documentation, yet.