| PostgreSQL 9.0.13 Documentation | ||||
|---|---|---|---|---|
| Prev | Up | Chapter 45. System Catalogs | Next | |
The catalog pg_description stores optional descriptions (comments) for each database object. Descriptions can be manipulated with the COMMENT command and viewed with psql's \d commands. Descriptions of many built-in system objects are provided in the initial contents of pg_description.
See also pg_shdescription, which performs a similar function for descriptions involving objects that are shared across a database cluster.
Table 45-18. pg_description Columns
| Name | Type | References | Description |
|---|---|---|---|
| objoid | oid | any OID column | The OID of the object this description pertains to |
| classoid | oid | pg_class.oid | The OID of the system catalog this object appears in |
| objsubid | int4 | For a comment on a table column, this is the column number (the objoid and classoid refer to the table itself). For all other object types, this column is zero. | |
| description | text | Arbitrary text that serves as the description of this object |
You can retrieve comments, if any, alongside with the table definitions of a given table using a query like this:
select
tables.table_name,
descr.description as comments
from information_schema.tables tables
join pg_catalog.pg_class klass on (tables.table_name = klass.relname and klass.relkind = 'r')
left join pg_catalog.pg_description descr on (descr.objoid = klass.oid and descr.objsubid = 0)
where tables.table_schema = 'public' and tables.table_name = 'mytable';
And you can retrieve comments, if any, alongside with column definitions of a given table using a query like this:
select
ordinal_position,
column_name,
data_type,
character_maximum_length,
numeric_precision,
numeric_scale,
is_nullable,
column_default,
descr.description as comment
from information_schema.columns columns
join pg_catalog.pg_class klass on (columns.table_name = klass.relname and klass.relkind = 'r')
left join pg_catalog.pg_description descr on (descr.objoid = klass.oid and descr.objsubid = columns.ordinal_position)
where columns.table_schema = 'public' and columns.table_name = 'mytable'
order by columns.ordinal_position;