@@ -1296,7 +1296,17 @@ describeOneTableDetails(const char *schemaname,
12961296 if (tableinfo .relkind == 'i' )
12971297 appendPQExpBuffer (& buf , ",\n pg_catalog.pg_get_indexdef(a.attrelid, a.attnum, TRUE) AS indexdef" );
12981298 if (verbose )
1299- appendPQExpBuffer (& buf , ",\n a.attstorage, pg_catalog.col_description(a.attrelid, a.attnum)" );
1299+ {
1300+ appendPQExpBuffer (& buf , ",\n a.attstorage" );
1301+ /*
1302+ * In 9.0+, we have column comments for: relations, views, composite
1303+ * types, and foreign tables (c.f. CommentObject() in comment.c).
1304+ */
1305+ if (tableinfo .relkind == 'r' || tableinfo .relkind == 'v' ||
1306+ tableinfo .relkind == 'f' || tableinfo .relkind == 'c' )
1307+ appendPQExpBuffer (& buf , ", pg_catalog.col_description(a.attrelid, a.attnum)" );
1308+ }
1309+
13001310 appendPQExpBuffer (& buf , "\nFROM pg_catalog.pg_attribute a" );
13011311 appendPQExpBuffer (& buf , "\nWHERE a.attrelid = '%s' AND a.attnum > 0 AND NOT a.attisdropped" , oid );
13021312 appendPQExpBuffer (& buf , "\nORDER BY a.attnum;" );
@@ -1379,7 +1389,10 @@ describeOneTableDetails(const char *schemaname,
13791389 if (verbose )
13801390 {
13811391 headers [cols ++ ] = gettext_noop ("Storage" );
1382- headers [cols ++ ] = gettext_noop ("Description" );
1392+ /* Column comments, if the relkind supports this feature. */
1393+ if (tableinfo .relkind == 'r' || tableinfo .relkind == 'v' ||
1394+ tableinfo .relkind == 'c' || tableinfo .relkind == 'f' )
1395+ headers [cols ++ ] = gettext_noop ("Description" );
13831396 }
13841397
13851398 printTableInit (& cont , & myopt , title .data , cols , numrows );
@@ -1471,8 +1484,11 @@ describeOneTableDetails(const char *schemaname,
14711484 (storage [0 ] == 'e' ? "external" :
14721485 "???" )))),
14731486 false, false);
1474- printTableAddCell (& cont , PQgetvalue (res , i , firstvcol + 1 ),
1475- false, false);
1487+ /* Column comments, if the relkind supports this feature. */
1488+ if (tableinfo .relkind == 'r' || tableinfo .relkind == 'v' ||
1489+ tableinfo .relkind == 'c' || tableinfo .relkind == 'f' )
1490+ printTableAddCell (& cont , PQgetvalue (res , i , firstvcol + 1 ),
1491+ false, false);
14761492 }
14771493 }
14781494
0 commit comments