• Etsuro Fujita's avatar
    postgres_fdw: Fix subabort cleanup of connections used in asynchronous execution. · 700e8fe6
    Etsuro Fujita authored
    Commit 27e1f145 resets the per-connection states of connections used to
    scan foreign tables asynchronously during abort cleanup at main
    transaction end, but it failed to do so during subabort cleanup at
    subtransaction end, leading to a segmentation fault when re-executing an
    asynchronous-foreign-table-scan query in a transaction that was
    cancelled in a subtransaction of it.
    
    Fix by modifying pgfdw_abort_cleanup() to reset the per-connection state
    of a given connection also when called for subabort cleanup.  Also,
    modify that function to do the reset in both the abort-cleanup and
    subabort-cleanup cases if necessary, to save cycles, and improve a
    comment on it a little bit.
    
    Back-patch to v14 where the aforesaid commit came in.
    
    Reviewed by Alexander Pyhalov
    
    Discussion: https://postgr.es/m/CAPmGK14cCV-JA7kNsyt2EUTKvZ4xkr2LNRthi1U1C3cqfGppAw@mail.gmail.com
    700e8fe6
connection.c 51.7 KB