Fix for trigger handling:
authorBruce Momjian <bruce@momjian.us>
Tue, 19 Mar 2002 02:57:15 +0000 (02:57 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 19 Mar 2002 02:57:15 +0000 (02:57 +0000)
         * 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).

Stephan Szabo

src/backend/utils/adt/ri_triggers.c

index 965655491b1ff29f2db8c602a66f46fc869ee031..f92999bc3832db12a4c385dcd7df58e446d889c0 100644 (file)
@@ -208,6 +208,17 @@ RI_FKey_check(PG_FUNCTION_ARGS)
                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):