*** ./src/bin/psql/describe.c.orig Wed Mar 21 23:00:19 2001 --- ./src/bin/psql/describe.c Sat Oct 6 20:46:45 2001 *************** *** 748,754 **** /* count indices */ if (!error && tableinfo.hasindex) { ! sprintf(buf, "SELECT c2.relname\n" "FROM pg_class c, pg_class c2, pg_index i\n" "WHERE c.relname = '%s' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\n" "ORDER BY c2.relname", --- 748,754 ---- /* count indices */ if (!error && tableinfo.hasindex) { ! sprintf(buf, "SELECT c2.relname, i.indkey, i.indisprimary\n" "FROM pg_class c, pg_class c2, pg_index i\n" "WHERE c.relname = '%s' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\n" "ORDER BY c2.relname", *************** *** 810,823 **** /* print indices */ for (i = 0; i < index_count; i++) { ! sprintf(buf, "%s %s", ! index_count == 1 ? "Index:" : (i == 0 ? "Indices:" : " "), ! PQgetvalue(result1, i, 0) ); - if (i < index_count - 1) - strcat(buf, ","); footers[count_footers++] = xstrdup(buf); } /* print contraints */ --- 810,845 ---- /* print indices */ for (i = 0; i < index_count; i++) { ! char *indexname, *indexlist; ! indexname = PQgetvalue(result1, i, 0); ! indexlist = PQgetvalue(result1, i, 1); ! sprintf(buf, "%s %3d. %s (%s)%s", ! index_count == 1 ? "Index:" : (i == 0 ? "Indices:" : " "),i+1, ! indexname,indexlist, ! strcmp(PQgetvalue(result1, i, 2), "t") == 0 ? " (PRIMARY KEY)" : "" ); footers[count_footers++] = xstrdup(buf); + + /* strtokx is overkill here */ + int j; + char dummy[6]; /* Should be plenty */ + char showindex[10+31]; + int bar=0; + for (j=0; j<=strlen(indexlist); j++) { + if (indexlist[j]==0 || indexlist[j]==32) { + bar = atoi(dummy); + if (bar>0) /* pg_class has a -2! */ + { + sprintf(showindex, "(index #%d)", i+1); + if (cells[(bar-1) * cols + 2][0]) + strcat(cells[(bar-1) * cols + 2], " "); + strcat(cells[(bar-1) * cols + 2], showindex); + } + dummy[0] = '\0'; + } + else { strcat(dummy,&indexlist[j]); } + } } /* print contraints */