• Tom Lane's avatar
    Stabilize NOTIFY behavior by transmitting notifies before ReadyForQuery. · 79002697
    Tom Lane authored
    This patch ensures that, if any notify messages were received during
    a just-finished transaction, they get sent to the frontend just before
    not just after the ReadyForQuery message.  With libpq and other client
    libraries that act similarly, this guarantees that the client will see
    the notify messages as available as soon as it thinks the transaction
    is done.
    
    This probably makes no difference in practice, since in realistic
    use-cases the application would have to cope with asynchronous
    arrival of notify events anyhow.  However, it makes it a lot easier
    to build cross-session-notify test cases with stable behavior.
    I'm a bit surprised now that we've not seen any buildfarm instability
    with the test cases added by commit b10f40bf.  Tests that I intend
    to add in an upcoming bug fix are definitely unstable without this.
    
    Back-patch to 9.6, which is as far back as we can do NOTIFY testing
    with the isolationtester infrastructure.
    
    Discussion: https://postgr.es/m/13881.1574557302@sss.pgh.pa.us
    79002697
postgres.c 127 KB