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):