Fix dumping of DEFERRABLE/INITIALLY DEFERRED:
authorBruce Momjian <[email protected]>
Wed, 8 Jan 2003 22:54:36 +0000 (22:54 +0000)
committerBruce Momjian <[email protected]>
Wed, 8 Jan 2003 22:54:36 +0000 (22:54 +0000)
> The big problem is that while pg_dump's dump_trigger() looks at
> tginitdeferred and dumps accordingly, pg_get_constraintdef doesn't look
> at tginitdeferred, and therefore doesn't record the requirement as part
> of ALTER TABLE ADD CONSTRAINT.

pg_get_constraintdef should probably be looking at condeferrable and
condeferred in the pg_constraint row it's looking at.  Maybe something
like the attached.

(Added, output only non-default values.)

Stephan Szabo

src/backend/utils/adt/ruleutils.c

index 796eaa05069b07e56d32d9d7324033e32752878c..c70e74caab26c1c2459a80a6a9c2815c66a64422 100644 (file)
@@ -3,7 +3,7 @@
  *             back to source text
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.124 2002/09/19 23:40:56 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.124.2.1 2003/01/08 22:54:36 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -688,6 +688,11 @@ pg_get_constraintdef(PG_FUNCTION_ARGS)
                }
                appendStringInfo(&buf, " ON DELETE %s", string);
 
+               if (conForm->condeferrable)
+                   appendStringInfo(&buf, " DEFERRABLE");
+               if (conForm->condeferred)
+                   appendStringInfo(&buf, " INITIALLY DEFERRED");
+
                break;
            }