Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

auto_explain.c

Blame
    • Tom Lane's avatar
      57e85fa2
      Fix contrib/auto_explain to not cause problems in parallel workers. · 57e85fa2
      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
      57e85fa2
      History
      Fix contrib/auto_explain to not cause problems in parallel workers.
      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
    auto_explain.c 9.68 KiB