Restore RI trigger sanity check
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 20 Mar 2019 20:28:43 +0000 (17:28 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
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.t6wws6t6vrcu@alvherre.pgsql

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 &&