• Thomas Munro's avatar
    Defer restoration of libraries in parallel workers. · 6c3c9d41
    Thomas Munro authored
    Several users of extensions complained of crashes in parallel workers
    that turned out to be due to syscache access from their _PG_init()
    functions.  Reorder the initialization of parallel workers so that
    libraries are restored after the caches are initialized, and inside a
    transaction.
    
    This was reported in bug #15350 and elsewhere.  We don't consider it
    to be a bug: extensions shouldn't do that, because then they can't be
    used in shared_preload_libraries.  However, it's a fairly obscure
    hazard and these extensions worked in practice before parallel query
    came along.  So let's make it work.  Later commits might add a warning
    message and eventually an error.
    
    Back-patch to 9.6, where parallel query landed.
    
    Author: Thomas Munro
    Reviewed-by: Amit Kapila
    Reported-by: Kieran McCusker, Jimmy
    Discussion: https://postgr.es/m/153512195228.1489.8545997741965926448%40wrigleys.postgresql.org
    6c3c9d41
parallel.c 46.6 KB