Restore RI trigger sanity check
authorAlvaro Herrera <[email protected]>
Wed, 20 Mar 2019 20:28:43 +0000 (17:28 -0300)
committerAlvaro Herrera <[email protected]>
Wed, 20 Mar 2019 20:28:43 +0000 (17:28 -0300)
I unnecessarily removed this check in 3de241dba86f because I
misunderstood what the final representation of constraints across a
partitioning hierarchy was to be.  Put it back (in both branches).

Discussion: https://postgr.es/m/201901222145[email protected]

src/backend/utils/adt/ri_triggers.c

index b4d0029877b5d3b8693b758353f2400cf6a8d121..6d443db7e2fa8386cf7ee0aa1475b1dc9ba75e60 100644 (file)
@@ -1739,6 +1739,13 @@ ri_FetchConstraintInfo(Trigger *trigger, Relation trig_rel, bool rel_is_pk)
            elog(ERROR, "wrong pg_constraint entry for trigger \"%s\" on table \"%s\"",
                 trigger->tgname, RelationGetRelationName(trig_rel));
    }
+   else
+   {
+       if (riinfo->fk_relid != RelationGetRelid(trig_rel) ||
+           riinfo->pk_relid != trigger->tgconstrrelid)
+           elog(ERROR, "wrong pg_constraint entry for trigger \"%s\" on table \"%s\"",
+                trigger->tgname, RelationGetRelationName(trig_rel));
+   }
 
    if (riinfo->confmatchtype != FKCONSTR_MATCH_FULL &&
        riinfo->confmatchtype != FKCONSTR_MATCH_PARTIAL &&