• Alvaro Herrera's avatar
    Remove bogus restriction from BEFORE UPDATE triggers · 6f5c8a8e
    Alvaro Herrera authored
    In trying to protect the user from inconsistent behavior, commit
    487e9861 "Enable BEFORE row-level triggers for partitioned tables"
    tried to prevent BEFORE UPDATE FOR EACH ROW triggers from moving the row
    from one partition to another.  However, it turns out that the
    restriction is wrong in two ways: first, it fails spuriously, preventing
    valid situations from working, as in bug #16794; and second, they don't
    protect from any misbehavior, because tuple routing would cope anyway.
    
    Fix by removing that restriction.
    
    We keep the same restriction on BEFORE INSERT FOR EACH ROW triggers,
    though.  It is valid and useful there.  In the future we could remove it
    by having tuple reroute work for inserts as it does for updates.
    
    Backpatch to 13.
    
    Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
    Reported-by: default avatarPhillip Menke <pg@pmenke.de>
    Discussion: https://postgr.es/m/16794-350a655580fbb9ae@postgresql.org
    6f5c8a8e
trigger.c 178 KB