• Tom Lane's avatar
    Fix contrib/auto_explain to not cause problems in parallel workers. · 2cd4e835
    Tom Lane authored
    A parallel worker process should not be making any decisions of its
    own about whether to auto-explain.  If the parent session process
    passed down flags asking for instrumentation data, do that, otherwise
    not.  Trying to enable instrumentation anyway leads to bugs like the
    "could not find key N in shm TOC" failure reported in bug #15821
    from Christian Hofstaedtler.
    
    We can implement this cheaply by piggybacking on the existing logic
    for not doing anything when we've chosen not to sample a statement.
    
    While at it, clean up some tin-eared coding related to the sampling
    feature, including an off-by-one error that meant that asking for 1.0
    sampling rate didn't actually result in sampling every statement.
    
    Although the specific case reported here only manifested in >= v11,
    I believe that related misbehaviors can be demonstrated in any version
    that has parallel query; and the off-by-one error is certainly there
    back to 9.6 where that feature was added.  So back-patch to 9.6.
    
    Discussion: https://postgr.es/m/15821-5eb422e980594075@postgresql.org
    2cd4e835
auto_explain.c 10.7 KB