I can reproduce this failure here too. I am actually quite confused because:
1) I know this deferrable stuff works or used to work 2) I can't find relivant references to condeferrable/Anum_pg_constraint_condeferrable and condeferred/Anum_pg_constraint_condeferred in the code. I see the values being stored on constriant creation, but not being used anywhere: $ rgrepc condefer ./backend/catalog/pg_constraint.c: values[Anum_pg_constraint_condeferrable - 1] = BoolGetDatum(isDeferrable); ./backend/catalog/pg_constraint.c: values[Anum_pg_constraint_condeferred - 1] = BoolGetDatum(isDeferred); ./include/catalog/pg_constraint.h: bool condeferrable; /* deferrable constraint? */ ./include/catalog/pg_constraint.h: bool condeferred; /* deferred by default? */ ./include/catalog/pg_constraint.h:#define Anum_pg_constraint_condeferrable 4 ./include/catalog/pg_constraint.h:#define Anum_pg_constraint_condeferred 5 I am confused. --------------------------------------------------------------------------- Magnus Hagander wrote: > Postgresql 7.3.1 on Linux i386 - but from what I can see it is on all platforms > > It seems pg_get_constraintdef does not remember the setting "DEFERRABLE" on a >constraint. This has the effect that it does not show up in psql \d commands, and it >is also *not* included in backups from pg_dump. > > > Reproduce: > CREATE TABLE foo.prim(i int PRIMARY KEY); > CREATE TABLE foo.for1(j int REFERENCES foo.prim(i) NOT DEFERRABLE); > CREATE TABLE foo.for2(j int REFERENCES foo.prim(i) DEFERRABLE); > > "\d foo.for1" and "\d foo.for2" will then show the exact same definition of the >constraint: > Table "foo.for2" > Column | Type | Modifiers > --------+---------+----------- > j | integer | > Foreign Key constraints: $1 FOREIGN KEY (j) REFERENCES foo.prim(i) ON UPDATE NO >ACTION ON DELETE NO ACTION > > > > Seems to me like ruleutils.c at around line 600 is the place, and that is has no >concept of DEFERRABLE anywhere near that, but I'm not comfortable enough in there to >produce a patch myself... > > > //Magnus > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: Have you searched our list archives? > > http://archives.postgresql.org > -- Bruce Momjian | http://candle.pha.pa.us [EMAIL PROTECTED] | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster