diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 751af1c3792d6489e8f2e8f6679517297328b952..0eb77fe6f1964924bc2e93880a97a98f44908a63 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -8,7 +8,7 @@ * * Copyright (c) 2000-2009, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.219 2009/07/03 18:56:50 petere Exp $ + * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.220 2009/07/06 17:01:42 petere Exp $ */ #include "postgres_fe.h" @@ -1163,6 +1163,8 @@ describeOneTableDetails(const char *schemaname, "\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 (tableinfo.relkind == 'i') + appendPQExpBuffer(&buf, ", pg_get_indexdef(i.indexrelid,a.attnum, TRUE) AS indexdef"); if (verbose) appendPQExpBuffer(&buf, ", a.attstorage, pg_catalog.col_description(a.attrelid, a.attnum)"); appendPQExpBuffer(&buf, "\nFROM pg_catalog.pg_attribute a"); @@ -1232,6 +1234,9 @@ describeOneTableDetails(const char *schemaname, if (tableinfo.relkind == 'S') headers[cols++] = gettext_noop("Value"); + if (tableinfo.relkind == 'i') + headers[cols++] = gettext_noop("Definition"); + if (verbose) { headers[cols++] = gettext_noop("Storage"); @@ -1297,10 +1302,15 @@ describeOneTableDetails(const char *schemaname, if (tableinfo.relkind == 'S') printTableAddCell(&cont, seq_values[i], false); + /* Expression for index */ + if (tableinfo.relkind == 'i') + printTableAddCell(&cont, PQgetvalue(res, i, 5), false); + /* Storage and Description */ if (verbose) { - char *storage = PQgetvalue(res, i, 5); + int fnum = (tableinfo.relkind == 'i' ? 6 : 5); + char *storage = PQgetvalue(res, i, fnum); /* these strings are literal in our syntax, so not translated. */ printTableAddCell(&cont, (storage[0] == 'p' ? "plain" : @@ -1309,7 +1319,7 @@ describeOneTableDetails(const char *schemaname, (storage[0] == 'e' ? "external" : "???")))), false); - printTableAddCell(&cont, PQgetvalue(res, i, 6), false); + printTableAddCell(&cont, PQgetvalue(res, i, fnum + 1), false); } }