Skip to content
Snippets Groups Projects
Commit 5e9f4d26 authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Add CLUSTER tag to psql \d display.

parent d8fe99d9
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* Copyright (c) 2000-2003, PostgreSQL Global Development Group * Copyright (c) 2000-2003, PostgreSQL Global Development Group
* *
* $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.95 2004/03/22 03:38:24 momjian Exp $ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.96 2004/04/06 04:05:17 momjian Exp $
*/ */
#include "postgres_fe.h" #include "postgres_fe.h"
#include "describe.h" #include "describe.h"
...@@ -831,7 +831,7 @@ describeOneTableDetails(const char *schemaname, ...@@ -831,7 +831,7 @@ describeOneTableDetails(const char *schemaname,
PGresult *result; PGresult *result;
printfPQExpBuffer(&buf, printfPQExpBuffer(&buf,
"SELECT i.indisunique, i.indisprimary, a.amname, c2.relname,\n" "SELECT i.indisunique, i.indisprimary, i.indisclustered, a.amname, c2.relname,\n"
" pg_catalog.pg_get_expr(i.indpred, i.indrelid, true)\n" " pg_catalog.pg_get_expr(i.indpred, i.indrelid, true)\n"
"FROM pg_catalog.pg_index i, pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_am a\n" "FROM pg_catalog.pg_index i, pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_am a\n"
"WHERE i.indexrelid = c.oid AND c.oid = '%s' AND c.relam = a.oid\n" "WHERE i.indexrelid = c.oid AND c.oid = '%s' AND c.relam = a.oid\n"
...@@ -850,9 +850,10 @@ describeOneTableDetails(const char *schemaname, ...@@ -850,9 +850,10 @@ describeOneTableDetails(const char *schemaname,
{ {
char *indisunique = PQgetvalue(result, 0, 0); char *indisunique = PQgetvalue(result, 0, 0);
char *indisprimary = PQgetvalue(result, 0, 1); char *indisprimary = PQgetvalue(result, 0, 1);
char *indamname = PQgetvalue(result, 0, 2); char *indisclustered = PQgetvalue(result, 0, 2);
char *indtable = PQgetvalue(result, 0, 3); char *indamname = PQgetvalue(result, 0, 3);
char *indpred = PQgetvalue(result, 0, 4); char *indtable = PQgetvalue(result, 0, 4);
char *indpred = PQgetvalue(result, 0, 5);
if (strcmp(indisprimary, "t") == 0) if (strcmp(indisprimary, "t") == 0)
printfPQExpBuffer(&tmpbuf, _("PRIMARY KEY, ")); printfPQExpBuffer(&tmpbuf, _("PRIMARY KEY, "));
...@@ -869,6 +870,9 @@ describeOneTableDetails(const char *schemaname, ...@@ -869,6 +870,9 @@ describeOneTableDetails(const char *schemaname,
if (strlen(indpred)) if (strlen(indpred))
appendPQExpBuffer(&tmpbuf, _(", predicate (%s)"), indpred); appendPQExpBuffer(&tmpbuf, _(", predicate (%s)"), indpred);
if (strcmp(indisclustered, "t") == 0)
appendPQExpBuffer(&tmpbuf, _(", CLUSTER"));
footers = pg_malloc_zero(2 * sizeof(*footers)); footers = pg_malloc_zero(2 * sizeof(*footers));
footers[0] = pg_strdup(tmpbuf.data); footers[0] = pg_strdup(tmpbuf.data);
footers[1] = NULL; footers[1] = NULL;
...@@ -948,7 +952,7 @@ describeOneTableDetails(const char *schemaname, ...@@ -948,7 +952,7 @@ describeOneTableDetails(const char *schemaname,
if (tableinfo.hasindex) if (tableinfo.hasindex)
{ {
printfPQExpBuffer(&buf, printfPQExpBuffer(&buf,
"SELECT c2.relname, i.indisprimary, i.indisunique, " "SELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, "
"pg_catalog.pg_get_indexdef(i.indexrelid, 0, true)\n" "pg_catalog.pg_get_indexdef(i.indexrelid, 0, true)\n"
"FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i\n" "FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i\n"
"WHERE c.oid = '%s' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\n" "WHERE c.oid = '%s' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\n"
...@@ -1080,15 +1084,17 @@ describeOneTableDetails(const char *schemaname, ...@@ -1080,15 +1084,17 @@ describeOneTableDetails(const char *schemaname,
(strcmp(PQgetvalue(result1, i, 2), "t") == 0 (strcmp(PQgetvalue(result1, i, 2), "t") == 0
? _(" UNIQUE,") ? _(" UNIQUE,")
: "")); : ""));
/* Everything after "USING" is echoed verbatim */ /* Everything after "USING" is echoed verbatim */
indexdef = PQgetvalue(result1, i, 3); indexdef = PQgetvalue(result1, i, 4);
usingpos = strstr(indexdef, " USING "); usingpos = strstr(indexdef, " USING ");
if (usingpos) if (usingpos)
indexdef = usingpos + 7; indexdef = usingpos + 7;
appendPQExpBuffer(&buf, " %s", indexdef); appendPQExpBuffer(&buf, " %s", indexdef);
if (strcmp(PQgetvalue(result1, i, 3), "t") == 0)
appendPQExpBuffer(&buf, _(" CLUSTER"));
footers[count_footers++] = pg_strdup(buf.data); footers[count_footers++] = pg_strdup(buf.data);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment