• Tom Lane's avatar
    Fix thinko in construction of old_conpfeqop list. · 3093eb2b
    Tom Lane authored
    This should lappend the OIDs, not lcons them; the existing code produced
    a list in reversed order.  This is harmless for single-key FKs or FKs
    where all the key columns are of the same type, which probably explains
    how it went unnoticed.  But if those conditions are not met,
    ATAddForeignKeyConstraint would make the wrong decision about whether an
    existing FK needs to be revalidated.  I think it would almost always err
    in the safe direction by revalidating a constraint that didn't need it.
    You could imagine scenarios where the pfeqop check was fooled by
    swapping the types of two FK columns in one ALTER TABLE, but that case
    would probably be rejected by other tests, so it might be impossible to
    get to the worst-case scenario where an FK should be revalidated and
    isn't.  (And even then, it's likely to be fine, unless there are weird
    inconsistencies in the equality behavior of the replacement types.)
    However, this is a performance bug at least.
    
    Noted while poking around to see whether lcons calls could be converted
    to lappend.
    
    This bug is old, dating to commit cb3a7c2b, so back-patch to all
    supported branches.
    3093eb2b
tablecmds.c 508 KB