On Wed, 6 Mar 2002, Eric Lu wrote:

> To whom it may concern:
>
>  I found a constraint bug on PostgreSQL lastest version (7.2).

Yes, it's still seeing some invalid states of the table. I believe
the following will fix the case (it was part of a larger patch that
was rejected, but I think this part is safe -- if not I'm sure someone
will jump in).

*** pgsql/src/backend/utils/adt/ri_triggers.c.orig      Tue Mar 12 23:33:32 2002
--- pgsql/src/backend/utils/adt/ri_triggers.c   Tue Mar 12 23:33:47 2002
***************
*** 208,213 ****
--- 208,224 ----
                new_row = trigdata->tg_trigtuple;
        }

+         /*
+          * We should not even consider checking the row if it is no longer
+          * valid since it was either deleted (doesn't matter) or updated
+          * (in which case it'll be checked with its final values).
+          */
+         if (new_row) {
+                 if (!HeapTupleSatisfiesItself(new_row->t_data)) {
+                         return PointerGetDatum(NULL);
+                 }
+         }
+
        /* ----------
         * SQL3 11.9 <referential constraint definition>
         *      Gereral rules 2) a):



---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/users-lounge/docs/faq.html

Reply via email to