]> granicus.if.org Git - postgresql/commitdiff
Make psql use pg_table_size instead of pg_relation_size on 9.0+ servers.
authorRobert Haas <rhaas@postgresql.org>
Fri, 8 Apr 2011 19:52:49 +0000 (15:52 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 8 Apr 2011 19:52:49 +0000 (15:52 -0400)
Per discussion, pg_table_size() is a more helpful number than
pg_relation_size().

Bernd Helmle, reviewed by Susanne Ebrecht and me.

src/bin/psql/describe.c

index a89c9385c047d1496cb5ba414e7d20d6be2846f4..09a40093d1f6789cf2b2aa0da4e53751b06e7936 100644 (file)
@@ -2522,14 +2522,25 @@ listTables(const char *tabtypes, const char *pattern, bool verbose, bool showSys
                                                  ",\n c2.relname as \"%s\"",
                                                  gettext_noop("Table"));
 
-       if (verbose && pset.sversion >= 80100)
-               appendPQExpBuffer(&buf,
-                                                 ",\n  pg_catalog.pg_size_pretty(pg_catalog.pg_relation_size(c.oid)) as \"%s\"",
-                                                 gettext_noop("Size"));
        if (verbose)
+       {
+               /*
+                * As of PostgreSQL 9.0, use pg_table_size() to show a more acurate size
+                * of a table, including FSM, VM and TOAST tables.
+                */
+               if (pset.sversion >= 90000)
+                       appendPQExpBuffer(&buf,
+                                                         ",\n  pg_catalog.pg_size_pretty(pg_catalog.pg_table_size(c.oid)) as \"%s\"",
+                                                         gettext_noop("Size"));
+               else if (pset.sversion >= 80100)
+                       appendPQExpBuffer(&buf,
+                                                         ",\n  pg_catalog.pg_size_pretty(pg_catalog.pg_relation_size(c.oid)) as \"%s\"",
+                                                         gettext_noop("Size"));
+
                appendPQExpBuffer(&buf,
                          ",\n  pg_catalog.obj_description(c.oid, 'pg_class') as \"%s\"",
                                                  gettext_noop("Description"));
+       }
 
        appendPQExpBuffer(&buf,
                                          "\nFROM pg_catalog.pg_class c"