Fix a bug in the previous patch, which caused the title pointer to be used
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 13 May 2008 00:14:11 +0000 (00:14 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 13 May 2008 00:14:11 +0000 (00:14 +0000)
before it was actually set.

src/bin/psql/describe.c
src/bin/psql/print.c

index cd807230272bb3a273896d46d8ceb5c05f9fe3b2..a4fe9d997ea6eae9d2810b1fb0440ea40b054d21 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2008, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.171 2008/05/12 22:59:58 alvherre Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.172 2008/05/13 00:14:11 alvherre Exp $
  */
 #include "postgres_fe.h"
 
@@ -865,6 +865,45 @@ describeOneTableDetails(const char *schemaname,
        goto error_return;
    numrows = PQntuples(res);
 
+   /* Make title */
+   switch (tableinfo.relkind)
+   {
+       case 'r':
+           printfPQExpBuffer(&title, _("Table \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       case 'v':
+           printfPQExpBuffer(&title, _("View \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       case 'S':
+           printfPQExpBuffer(&title, _("Sequence \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       case 'i':
+           printfPQExpBuffer(&title, _("Index \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       case 's':
+           /* not used as of 8.2, but keep it for backwards compatibility */
+           printfPQExpBuffer(&title, _("Special relation \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       case 't':
+           printfPQExpBuffer(&title, _("TOAST table \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       case 'c':
+           printfPQExpBuffer(&title, _("Composite type \"%s.%s\""),
+                             schemaname, relationname);
+           break;
+       default:
+           /* untranslated unknown relkind */
+           printfPQExpBuffer(&title, "?%c? \"%s.%s\"",
+                             tableinfo.relkind, schemaname, relationname);
+           break;
+   }
+
    /* Set the number of columns, and their names */
    cols = 2;
    headers[0] = "Column";
@@ -937,45 +976,6 @@ describeOneTableDetails(const char *schemaname,
            printTableAddCell(&cont, PQgetvalue(res, i, 5), false);
    }
 
-   /* Make title */
-   switch (tableinfo.relkind)
-   {
-       case 'r':
-           printfPQExpBuffer(&title, _("Table \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       case 'v':
-           printfPQExpBuffer(&title, _("View \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       case 'S':
-           printfPQExpBuffer(&title, _("Sequence \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       case 'i':
-           printfPQExpBuffer(&title, _("Index \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       case 's':
-           /* not used as of 8.2, but keep it for backwards compatibility */
-           printfPQExpBuffer(&title, _("Special relation \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       case 't':
-           printfPQExpBuffer(&title, _("TOAST table \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       case 'c':
-           printfPQExpBuffer(&title, _("Composite type \"%s.%s\""),
-                             schemaname, relationname);
-           break;
-       default:
-           /* untranslated unknown relkind */
-           printfPQExpBuffer(&title, "?%c? \"%s.%s\"",
-                             tableinfo.relkind, schemaname, relationname);
-           break;
-   }
-
    /* Make footers */
    if (tableinfo.relkind == 'i')
    {
index 2dcf964a8a95abc87927acb7e0d9caa764350fd3..f27c1e1f4887135df589aa526f514badf2d05cb6 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2008, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.100 2008/05/12 22:59:58 alvherre Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.101 2008/05/13 00:14:11 alvherre Exp $
  */
 #include "postgres_fe.h"
 
@@ -1918,8 +1918,10 @@ ClosePager(FILE *pagerpipe)
 
 /*
  * Initialise a table contents struct.
+ *     Must be called before any other printTable method is used.
  *
- * Must be called before any other printTable method is used.
+ * The title is not duplicated; the caller must ensure that the buffer
+ * is available for the lifetime of the printTableContent struct.
  *
  * If you call this, you must call printTableCleanup once you're done with the
  * table.