]> granicus.if.org Git - postgresql/commitdiff
pg_dump for domain constraints.
authorBruce Momjian <bruce@momjian.us>
Fri, 15 Nov 2002 02:52:18 +0000 (02:52 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 15 Nov 2002 02:52:18 +0000 (02:52 +0000)
Rod Taylor

src/bin/pg_dump/pg_dump.c

index 2b111bdce5b4b4b26e9fb6735ac70108df5a6792..dc2bdd83d5bd3775457d4f8472372119d1ea00f0 100644 (file)
@@ -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 */