Commit cbf4c967 authored by Tom Lane's avatar Tom Lane

psql's \d command wasn't doing the right things with 'char' (type 18)

fields, nor with bpchar and varchar fields that have typmod -1.  The
latter effectively have an unspecified length, so I made them display
as char() and varchar() rather than falsely equating them to char(1)
and varchar(1).
parent 6f11af0c
......@@ -3,7 +3,7 @@
*
* Copyright 2000 by PostgreSQL Global Development Group
*
* $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.17 2000/02/16 13:15:26 momjian Exp $
* $Header: /cvsroot/pgsql/src/bin/psql/describe.c,v 1.18 2000/02/26 18:31:25 tgl Exp $
*/
#include "postgres.h"
#include "describe.h"
......@@ -631,9 +631,7 @@ describeTableDetails(const char *name, bool desc)
attype++;
}
/* (convert some internal type names to SQL'ish) */
if (strcmp(attype, "bpchar")==0)
typename = "char";
else if (strcmp(attype, "int2")==0)
if (strcmp(attype, "int2")==0)
typename = "smallint";
else if (strcmp(attype, "int4")==0)
typename = "integer";
......@@ -646,13 +644,26 @@ describeTableDetails(const char *name, bool desc)
/* more might need to be added when date/time types are sorted out */
cells[i * cols + 1] = xmalloc(NAMEDATALEN + 16);
if (strcmp(typename, "char") == 0)
sprintf(cells[i * cols + 1], "char(%d)", attypmod != -1 ? attypmod - VARHDRSZ : 1);
if (strcmp(typename, "bpchar") == 0)
{
if (attypmod != -1)
sprintf(cells[i * cols + 1], "char(%d)", attypmod - VARHDRSZ);
else
sprintf(cells[i * cols + 1], "char()");
}
else if (strcmp(typename, "varchar") == 0)
sprintf(cells[i * cols + 1], "varchar(%d)", attypmod != -1 ? attypmod - VARHDRSZ : 1);
{
if (attypmod != -1)
sprintf(cells[i * cols + 1], "varchar(%d)", attypmod - VARHDRSZ);
else
sprintf(cells[i * cols + 1], "varchar()");
}
else if (strcmp(typename, "numeric") == 0)
sprintf(cells[i * cols + 1], "numeric(%d,%d)", ((attypmod - VARHDRSZ) >> 16) & 0xffff,
{
sprintf(cells[i * cols + 1], "numeric(%d,%d)",
((attypmod - VARHDRSZ) >> 16) & 0xffff,
(attypmod - VARHDRSZ) & 0xffff);
}
else
strcpy(cells[i * cols + 1], typename);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment