The pg_database catalog stores information about the available databases. Databases are created with the CREATE DATABASE command.
Unlike most system catalogs, pg_database is shared across all databases of a cluster: there is only one copy of pg_database per cluster, not one per database.
Table 20-6. pg_database Columns
Name | Type | References | Description |
---|---|---|---|
datname | name | Database name | |
datdba | int4 | pg_shadow.usesysid | Owner of the database, initially who created it |
encoding | int4 | Character/multibyte encoding for this database | |
datistemplate | bool | If true then this database can be used in the "TEMPLATE" clause of CREATE DATABASE to create the new database as a clone of this one. | |
datallowconn | bool | If false then no one can connect to this database. This is used to protect the template0 database from being altered. | |
datlastsysoid | oid | Last system OID in the database; useful particularly to pg_dump | |
datvacuumxid | xid | All tuples inserted or deleted by transaction IDs before this one have been marked as known committed or known aborted in this database. This is used to determine when commit-log space can be recycled. | |
datfrozenxid | xid | All tuples inserted by transaction IDs before this one have been relabeled with a permanent ("frozen") transaction ID in this database. This is useful to check whether a database must be vacuumed soon to avoid transaction ID wraparound problems. | |
datpath | text | If the database is stored at an alternative location then this records the location. It's either an environment variable name or an absolute path, depending how it was entered. |