Supported Versions: Current (17) / 16 / 15 / 14 / 13
Development Versions: devel
Unsupported versions: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

Chapter 48. System Catalogs

Table of Contents
48.1. Overview
48.2. pg_aggregate
48.3. pg_am
48.4. pg_amop
48.5. pg_amproc
48.6. pg_attrdef
48.7. pg_attribute
48.8. pg_authid
48.9. pg_auth_members
48.10. pg_cast
48.11. pg_class
48.12. pg_collation
48.13. pg_constraint
48.14. pg_conversion
48.15. pg_database
48.16. pg_db_role_setting
48.17. pg_default_acl
48.18. pg_depend
48.19. pg_description
48.20. pg_enum
48.21. pg_event_trigger
48.22. pg_extension
48.23. pg_foreign_data_wrapper
48.24. pg_foreign_server
48.25. pg_foreign_table
48.26. pg_index
48.27. pg_inherits
48.28. pg_language
48.29. pg_largeobject
48.30. pg_largeobject_metadata
48.31. pg_namespace
48.32. pg_opclass
48.33. pg_operator
48.34. pg_opfamily
48.35. pg_pltemplate
48.36. pg_proc
48.37. pg_range
48.38. pg_rewrite
48.39. pg_replication_slots
48.40. pg_seclabel
48.41. pg_shdepend
48.42. pg_shdescription
48.43. pg_shseclabel
48.44. pg_statistic
48.45. pg_tablespace
48.46. pg_trigger
48.47. pg_ts_config
48.48. pg_ts_config_map
48.49. pg_ts_dict
48.50. pg_ts_parser
48.51. pg_ts_template
48.52. pg_type
48.53. pg_user_mapping
48.54. System Views
48.55. pg_available_extensions
48.56. pg_available_extension_versions
48.57. pg_cursors
48.58. pg_group
48.59. pg_indexes
48.60. pg_locks
48.61. pg_matviews
48.62. pg_prepared_statements
48.63. pg_prepared_xacts
48.64. pg_roles
48.65. pg_rules
48.66. pg_seclabels
48.67. pg_settings
48.68. pg_shadow
48.69. pg_stats
48.70. pg_tables
48.71. pg_timezone_abbrevs
48.72. pg_timezone_names
48.73. pg_user
48.74. pg_user_mappings
48.75. pg_views

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.