PostgreSQL テーブルのコメント一覧を抽出

設計者がつけるテーブルの論理名もしくはコメントの一覧を抽出する方法

CREATE TABLE 文で設計者が命名するテーブル論理名を付けるのは見たことがなく
 COMMENT ON TABLE 対象テーブル IS 'コメント’ ;
でコメントを付与しているであろう。
テーブル名とコメントの一覧を抽出するクエリは、以下となる。

SELECT 
	a.table_name, b.description 
FROM information_schema.TABLES a
LEFT JOIN (
	SELECT c.relname, d.description
	FROM pg_class c
	INNER JOIN pg_description d ON c.oid = d.objoid AND d.objsubid = 0
) b
	ON a.table_name = b.relname
WHERE a.table_type = 'BASE TABLE'
	AND a.table_schema = 'public'
ORDER BY a.table_name ASC

コメントを付与していないテーブルは、description が NULL である。

もしくは、ユーザテーブルのみ、限定すれば、pg_stat_user_tables を使えば簡単で、

SELECT 
      a.relname AS table_name, b.description 
FROM pg_stat_user_tables a
LEFT JOIN pg_description b ON a.relid = b.objoid AND b.objsubid = 0
WHERE a.schemaname  = 'public'
ORDER BY a.relname ASC

でもよい。