Esta resposta é um pouco tarde, mas apareceu em uma pesquisa no Google eu fiz para pesquisar este problema. Nós só precisava de descrições de mesa, mas o método seria o mesmo para colunas. As descrições das colunas estão na tabela pg_description também, referenciado por objoid.
Adicionar este ponto de vista:
CREATE OR REPLACE VIEW our_tables AS
SELECT c.oid, n.nspname AS schemaname, c.relname AS tablename, d.description,
pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS "tablespace",
c.relhasindex AS hasindexes, c.relhasrules AS hasrules, c.reltriggers > 0 AS hastriggers
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
LEFT JOIN pg_description d ON c.oid = d.objoid
WHERE c.relkind = 'r'::"char";
ALTER TABLE our_tables OWNER TO postgres;
GRANT SELECT, UPDATE, INSERT IGNORE , DELETE, REFERENCES, TRIGGER ON TABLE our_tables TO postgres;
GRANT SELECT ON TABLE our_tables TO public;
Então corra:
SELECT tablename, description FROM our_tables WHERE schemaname = 'public'
A vista é uma versão modificada da vista pg_tables que acrescenta na coluna descrição. Você poderia também monkey ao redor com a definição vista a torná-lo uma única consulta.