* http://archives.postgresql.org/pgsql-bugs/2010-02/msg00187.php
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.577 2010/03/03 23:38:44 momjian Exp $
+ *   $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.578 2010/03/11 04:36:43 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
         * that is related by an internal dependency link to the index. If we
         * find one, create a CONSTRAINT entry linked to the INDEX entry.  We
         * assume an index won't have more than one internal dependency.
+        *
+        * As of 9.0 we don't need to look at pg_depend but can check for
+        * a match to pg_constraint.conindid.  The check on conrelid is
+        * redundant but useful because that column is indexed while conindid
+        * is not.
         */
        resetPQExpBuffer(query);
        if (g_fout->remoteVersion >= 90000)
                            "array_to_string(t.reloptions, ', ') AS options "
                              "FROM pg_catalog.pg_index i "
                      "JOIN pg_catalog.pg_class t ON (t.oid = i.indexrelid) "
-                             "LEFT JOIN pg_catalog.pg_depend d "
-                             "ON (d.classid = t.tableoid "
-                             "AND d.objid = t.oid "
-                             "AND d.deptype = 'i') "
                              "LEFT JOIN pg_catalog.pg_constraint c "
-                             "ON (d.refclassid = c.tableoid "
-                             "AND d.refobjid = c.oid) "
+                             "ON (i.indrelid = c.conrelid AND "
+                             "i.indexrelid = c.conindid AND "
+                             "c.contype IN ('p','u','x')) "
                              "WHERE i.indrelid = '%u'::pg_catalog.oid "
                              "ORDER BY indexname",
                              tbinfo->dobj.catId.oid);
 
  *
  * Copyright (c) 2000-2010, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.239 2010/03/01 20:55:45 heikki Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.240 2010/03/11 04:36:43 tgl Exp $
  */
 #include "postgres_fe.h"
 
        if (pset.sversion >= 90000)
            appendPQExpBuffer(&buf,
                              "  (NOT i.indimmediate) AND "
-                             "EXISTS (SELECT 1 FROM pg_catalog.pg_depend d, "
-                             "pg_catalog.pg_constraint con WHERE "
-               "d.classid = 'pg_catalog.pg_class'::pg_catalog.regclass AND "
-                             "d.objid = i.indexrelid AND "
-                             "d.refclassid = 'pg_catalog.pg_constraint'::pg_catalog.regclass AND "
-                             "d.refobjid = con.oid AND d.deptype = 'i' AND "
-                             "con.condeferrable) AS condeferrable,\n"
+                             "EXISTS (SELECT 1 FROM pg_catalog.pg_constraint "
+                             "WHERE conrelid = i.indrelid AND "
+                             "conindid = i.indexrelid AND "
+                             "contype IN ('p','u','x') AND "
+                             "condeferrable) AS condeferrable,\n"
                              "  (NOT i.indimmediate) AND "
-                             "EXISTS (SELECT 1 FROM pg_catalog.pg_depend d, "
-                             "pg_catalog.pg_constraint con WHERE "
-               "d.classid = 'pg_catalog.pg_class'::pg_catalog.regclass AND "
-                             "d.objid = i.indexrelid AND "
-                             "d.refclassid = 'pg_catalog.pg_constraint'::pg_catalog.regclass AND "
-                             "d.refobjid = con.oid AND d.deptype = 'i' AND "
-                             "con.condeferred) AS condeferred,\n");
+                             "EXISTS (SELECT 1 FROM pg_catalog.pg_constraint "
+                             "WHERE conrelid = i.indrelid AND "
+                             "conindid = i.indexrelid AND "
+                             "contype IN ('p','u','x') AND "
+                             "condeferred) AS condeferred,\n");
        else
            appendPQExpBuffer(&buf,
                        "  false AS condeferrable, false AS condeferred,\n");
            if (pset.sversion >= 90000)
                appendPQExpBuffer(&buf,
                                  ",\n  (NOT i.indimmediate) AND "
-                            "EXISTS (SELECT 1 FROM pg_catalog.pg_depend d, "
-                                 "pg_catalog.pg_constraint con WHERE "
-               "d.classid = 'pg_catalog.pg_class'::pg_catalog.regclass AND "
-                                 "d.objid = i.indexrelid AND "
-                                 "d.refclassid = 'pg_catalog.pg_constraint'::pg_catalog.regclass AND "
-                             "d.refobjid = con.oid AND d.deptype = 'i' AND "
-                                 "con.condeferrable) AS condeferrable"
+                                 "EXISTS (SELECT 1 FROM pg_catalog.pg_constraint "
+                                 "WHERE conrelid = i.indrelid AND "
+                                 "conindid = i.indexrelid AND "
+                                 "contype IN ('p','u','x') AND "
+                                 "condeferrable) AS condeferrable"
                                  ",\n  (NOT i.indimmediate) AND "
-                            "EXISTS (SELECT 1 FROM pg_catalog.pg_depend d, "
-                                 "pg_catalog.pg_constraint con WHERE "
-               "d.classid = 'pg_catalog.pg_class'::pg_catalog.regclass AND "
-                                 "d.objid = i.indexrelid AND "
-                                 "d.refclassid = 'pg_catalog.pg_constraint'::pg_catalog.regclass AND "
-                             "d.refobjid = con.oid AND d.deptype = 'i' AND "
-                                 "con.condeferred) AS condeferred");
+                                 "EXISTS (SELECT 1 FROM pg_catalog.pg_constraint "
+                                 "WHERE conrelid = i.indrelid AND "
+                                 "conindid = i.indexrelid AND "
+                                 "contype IN ('p','u','x') AND "
+                                 "condeferred) AS condeferred");
            else
                appendPQExpBuffer(&buf, ", false AS condeferrable, false AS condeferred");
            if (pset.sversion >= 80000)