diff options
Diffstat (limited to 'src/bin')
-rw-r--r-- | src/bin/pg_dump/pg_dump.c | 17 | ||||
-rw-r--r-- | src/bin/psql/describe.c | 27 |
2 files changed, 42 insertions, 2 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 4175ddc823e..6658fda83e3 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -9261,6 +9261,23 @@ dumpDomain(Archive *fout, DumpOptions *dopt, TypeInfo *tyinfo) tyinfo->dobj.namespace->dobj.name, tyinfo->rolname, tyinfo->typacl); + /* Dump any per-constraint comments */ + for (i = 0; i < tyinfo->nDomChecks; i++) + { + ConstraintInfo *domcheck = &(tyinfo->domChecks[i]); + PQExpBuffer labelq = createPQExpBuffer(); + + appendPQExpBuffer(labelq, "CONSTRAINT %s ", + fmtId(domcheck->dobj.name)); + appendPQExpBuffer(labelq, "ON DOMAIN %s", + fmtId(qtypname)); + dumpComment(fout, dopt, labelq->data, + tyinfo->dobj.namespace->dobj.name, + tyinfo->rolname, + domcheck->dobj.catId, 0, tyinfo->dobj.dumpId); + destroyPQExpBuffer(labelq); + } + destroyPQExpBuffer(q); destroyPQExpBuffer(delq); destroyPQExpBuffer(labelq); diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index 5a9ceca0df5..f2d33258d7b 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -952,7 +952,7 @@ objectDescription(const char *pattern, bool showSystem) gettext_noop("Object"), gettext_noop("Description")); - /* Constraint descriptions */ + /* Table constraint descriptions */ appendPQExpBuffer(&buf, " SELECT pgc.oid as oid, pgc.tableoid AS tableoid,\n" " n.nspname as nspname,\n" @@ -963,7 +963,7 @@ objectDescription(const char *pattern, bool showSystem) "ON c.oid = pgc.conrelid\n" " LEFT JOIN pg_catalog.pg_namespace n " " ON n.oid = c.relnamespace\n", - gettext_noop("constraint")); + gettext_noop("table constraint")); if (!showSystem && !pattern) appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n" @@ -973,6 +973,29 @@ objectDescription(const char *pattern, bool showSystem) false, "n.nspname", "pgc.conname", NULL, "pg_catalog.pg_table_is_visible(c.oid)"); + /* Domain constraint descriptions */ + appendPQExpBuffer(&buf, + "UNION ALL\n" + " SELECT pgc.oid as oid, pgc.tableoid AS tableoid,\n" + " n.nspname as nspname,\n" + " CAST(pgc.conname AS pg_catalog.text) as name," + " CAST('%s' AS pg_catalog.text) as object\n" + " FROM pg_catalog.pg_constraint pgc\n" + " JOIN pg_catalog.pg_type t " + "ON t.oid = pgc.contypid\n" + " LEFT JOIN pg_catalog.pg_namespace n " + " ON n.oid = t.typnamespace\n", + gettext_noop("domain constraint")); + + if (!showSystem && !pattern) + appendPQExpBufferStr(&buf, "WHERE n.nspname <> 'pg_catalog'\n" + " AND n.nspname <> 'information_schema'\n"); + + processSQLNamePattern(pset.db, &buf, pattern, !showSystem && !pattern, + false, "n.nspname", "pgc.conname", NULL, + "pg_catalog.pg_type_is_visible(t.oid)"); + + /* * pg_opclass.opcmethod only available in 8.3+ */ |