Chapter 44. System Catalogs

Table of Contents
44.1. Overview
44.2. pg_aggregate
44.3. pg_am
44.4. pg_amop
44.5. pg_amproc
44.6. pg_attrdef
44.7. pg_attribute
44.8. pg_cast
44.9. pg_class
44.10. pg_constraint
44.11. pg_conversion
44.12. pg_database
44.13. pg_depend
44.14. pg_description
44.15. pg_group
44.16. pg_index
44.17. pg_inherits
44.18. pg_language
44.19. pg_largeobject
44.20. pg_listener
44.21. pg_namespace
44.22. pg_opclass
44.23. pg_operator
44.24. pg_proc
44.25. pg_rewrite
44.26. pg_shadow
44.27. pg_statistic
44.28. pg_trigger
44.29. pg_type

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 particularly esoteric operations, such as adding index access methods.

44.1. Overview

Table 44-1 lists the system catalogs. More detailed documentation of each catalog follows below.

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 a cluster; these are marked in the descriptions of the individual catalogs.

Table 44-1. System Catalogs

Catalog NamePurpose
pg_aggregateaggregate functions
pg_amindex access methods
pg_amopaccess method operators
pg_amprocaccess method support procedures
pg_attrdefcolumn default values
pg_attributetable columns ("attributes")
pg_castcasts (data type conversions)
pg_classtables, indexes, sequences ("relations")
pg_constraintcheck constraints, unique constraints, primary key constraints, foreign key constraints
pg_conversionencoding conversion information
pg_databasedatabases within this database cluster
pg_dependdependencies between database objects
pg_descriptiondescriptions or comments on database objects
pg_groupgroups of database users
pg_indexadditional index information
pg_inheritstable inheritance hierarchy
pg_languagelanguages for writing functions
pg_largeobjectlarge objects
pg_listenerasynchronous notification support
pg_namespaceschemas
pg_opclassindex access method operator classes
pg_operatoroperators
pg_procfunctions and procedures
pg_rewritequery rewrite rules
pg_shadowdatabase users
pg_statisticplanner statistics
pg_triggertriggers
pg_typedata types