• Tom Lane's avatar
    Fix race conditions when an event trigger is added concurrently with DDL. · b1b71f16
    Tom Lane authored
    EventTriggerTableRewrite crashed if there were table_rewrite triggers
    present, but there had not been when the calling command started.
    
    EventTriggerDDLCommandEnd called ddl_command_end triggers if present,
    even if there had been no such triggers when the calling command started,
    which would lead to a failure in pg_event_trigger_ddl_commands.
    
    In both cases, fix by doing nothing; it's better to wait till the next
    command when things will be properly initialized.
    
    In passing, remove an elog(DEBUG1) call that might have seemed interesting
    four years ago but surely isn't today.
    
    We found this because of intermittent failures in the buildfarm.  Thanks
    to Alvaro Herrera and Andrew Gierth for analysis.
    
    Back-patch to 9.5; some of this code exists before that, but the specific
    hazards we need to guard against don't.
    
    Discussion: https://postgr.es/m/5767.1523995174@sss.pgh.pa.us
    b1b71f16
event_trigger.c 64.8 KB