Fix a bug in the previous patch, which caused the title pointer to be used

before it was actually set.
This commit is contained in:
Alvaro Herrera 2008-05-13 00:14:11 +00:00
parent 1e9199e84c
commit e6a64bd3b6
2 changed files with 44 additions and 42 deletions

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2008, PostgreSQL Global Development Group * 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" #include "postgres_fe.h"
@ -865,6 +865,45 @@ describeOneTableDetails(const char *schemaname,
goto error_return; goto error_return;
numrows = PQntuples(res); 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 */ /* Set the number of columns, and their names */
cols = 2; cols = 2;
headers[0] = "Column"; headers[0] = "Column";
@ -937,45 +976,6 @@ describeOneTableDetails(const char *schemaname,
printTableAddCell(&cont, PQgetvalue(res, i, 5), false); 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 */ /* Make footers */
if (tableinfo.relkind == 'i') if (tableinfo.relkind == 'i')
{ {

View File

@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2008, PostgreSQL Global Development Group * 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" #include "postgres_fe.h"
@ -1918,8 +1918,10 @@ ClosePager(FILE *pagerpipe)
/* /*
* Initialise a table contents struct. * 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 * If you call this, you must call printTableCleanup once you're done with the
* table. * table.