diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-11-15 02:52:18 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-11-15 02:52:18 +0000 |
commit | 93e54678a3bb39c59150fab9cd30ff1ea55ebc94 (patch) | |
tree | 56d51c3ef75687c9bb5c670f4b0a8011a4dadbdf | |
parent | 6b603e67dcd1a93a56f3c6b5f36fd8f08e2ee35d (diff) | |
download | postgresql-93e54678a3bb39c59150fab9cd30ff1ea55ebc94.tar.gz postgresql-93e54678a3bb39c59150fab9cd30ff1ea55ebc94.zip |
pg_dump for domain constraints.
Rod Taylor
-rw-r--r-- | src/bin/pg_dump/pg_dump.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 2b111bdce5b..dc2bdd83d5b 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -22,7 +22,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.306 2002/11/08 17:37:52 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.307 2002/11/15 02:52:18 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -3157,8 +3157,10 @@ dumpOneDomain(Archive *fout, TypeInfo *tinfo) PQExpBuffer q = createPQExpBuffer(); PQExpBuffer delq = createPQExpBuffer(); PQExpBuffer query = createPQExpBuffer(); + PQExpBuffer chkquery = createPQExpBuffer(); PGresult *res; int ntups; + int i; char *typnotnull; char *typdefn; char *typdefault; @@ -3228,6 +3230,34 @@ dumpOneDomain(Archive *fout, TypeInfo *tinfo) if (typdefault) appendPQExpBuffer(q, " DEFAULT %s", typdefault); + /* Fetch and process CHECK Constraints */ + appendPQExpBuffer(chkquery, "SELECT conname, consrc " + "FROM pg_catalog.pg_constraint " + "WHERE contypid = '%s'::pg_catalog.oid", + tinfo->oid); + + res = PQexec(g_conn, chkquery->data); + if (!res || + PQresultStatus(res) != PGRES_TUPLES_OK) + { + write_msg(NULL, "query to obtain domain constraint information failed: %s", + PQerrorMessage(g_conn)); + exit_nicely(); + } + + /* Expecting a single result only */ + ntups = PQntuples(res); + for (i = 0; i < ntups; i++) + { + char *conname; + char *consrc; + + conname = PQgetvalue(res, i, PQfnumber(res, "conname")); + consrc = PQgetvalue(res, i, PQfnumber(res, "consrc")); + + appendPQExpBuffer(q, " CONSTRAINT %s CHECK %s", fmtId(conname), consrc); + } + appendPQExpBuffer(q, ";\n"); (*deps)[depIdx++] = NULL; /* End of List */ |