Re: \d+ should display the storage options for columns - Mailing list pgsql-patches

From Gregory Stark
Subject Re: \d+ should display the storage options for columns
Date
Msg-id 878wy3nzs7.fsf@oxford.xeocode.com
Whole thread Raw
In response to \d+ should display the storage options for columns  (Gregory Stark <stark@enterprisedb.com>)
Responses Re: \d+ should display the storage options for columns  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-patches
"Gregory Stark" <stark@enterprisedb.com> writes:

> Oleg pointed out to me here that while we have a command to *set* the toast
> storage characteristics there's no actual supported way to display the current
> settings.
>
> It seems like this would be a reasonable thing to add to \d+

Sorry, sent the wrong diff before. The previous diff didn't work due to an
array overflow.

Index: src/bin/psql/describe.c
===================================================================
RCS file: /home/stark/src/REPOSITORY/pgsql/src/bin/psql/describe.c,v
retrieving revision 1.170
diff -c -r1.170 describe.c
*** src/bin/psql/describe.c    5 May 2008 01:21:03 -0000    1.170
--- src/bin/psql/describe.c    21 May 2008 20:25:26 -0000
***************
*** 791,797 ****
      printTableOpt myopt = pset.popt.topt;
      int            i;
      char       *view_def = NULL;
!     const char *headers[5];
      char      **cells = NULL;
      char      **footers = NULL;
      char      **ptr;
--- 791,797 ----
      printTableOpt myopt = pset.popt.topt;
      int            i;
      char       *view_def = NULL;
!     const char *headers[6];
      char      **cells = NULL;
      char      **footers = NULL;
      char      **ptr;
***************
*** 865,871 ****

      if (verbose)
      {
!         cols++;
          headers[cols - 1] = _("Description");
      }

--- 865,872 ----

      if (verbose)
      {
!         cols+=2;
!         headers[cols - 2] = _("Storage");
          headers[cols - 1] = _("Description");
      }

***************
*** 877,883 ****
                        "\n  (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)"
                        "\n   FROM pg_catalog.pg_attrdef d"
                        "\n   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),"
!                       "\n  a.attnotnull, a.attnum");
      if (verbose)
          appendPQExpBuffer(&buf, ", pg_catalog.col_description(a.attrelid, a.attnum)");
      appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_attribute a");
--- 878,884 ----
                        "\n  (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)"
                        "\n   FROM pg_catalog.pg_attrdef d"
                        "\n   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),"
!                       "\n  a.attnotnull, a.attnum, a.attstorage");
      if (verbose)
          appendPQExpBuffer(&buf, ", pg_catalog.col_description(a.attrelid, a.attnum)");
      appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_attribute a");
***************
*** 957,967 ****

          /* Description */
          if (verbose)
  #ifdef WIN32
!             cells[i * cols + cols - 1] = mbvalidate(PQgetvalue(res, i, 5), myopt.encoding);
  #else
!             cells[i * cols + cols - 1] = PQgetvalue(res, i, 5);
  #endif
      }

      /* Make title */
--- 958,978 ----

          /* Description */
          if (verbose)
+         {
+             char *storage = PQgetvalue(res, i, 5);
+
+             cells[i * cols + cols -2] =
+                 (storage[0]=='p' ? _("plain") :
+                  (storage[0]=='m' ? _("main") :
+                   (storage[0]=='x' ? _("extended") :
+                    (storage[0]=='e' ? _("external") :
+                     "???"))));
  #ifdef WIN32
!             cells[i * cols + cols - 1] = mbvalidate(PQgetvalue(res, i, 6), myopt.encoding);
  #else
!             cells[i * cols + cols - 1] = PQgetvalue(res, i, 6);
  #endif
+         }
      }

      /* Make title */

--
  Gregory Stark
  EnterpriseDB          http://www.enterprisedb.com
  Get trained by Bruce Momjian - ask me about EnterpriseDB's PostgreSQL training!

pgsql-patches by date:

Previous
From: Gregory Stark
Date:
Subject: \d+ should display the storage options for columns
Next
From: "Jaime Casanova"
Date:
Subject: Extending grant insert on tables to sequences