• Tom Lane's avatar
    Centralize logic for skipping useless ereport/elog calls. · 789b938b
    Tom Lane authored
    While ereport() and elog() themselves are quite cheap when the
    error message level is too low to be printed, some places need to do
    substantial work before they can call those macros at all.  To allow
    optimizing away such setup work when nothing is to be printed, make
    elog.c export a new function message_level_is_interesting(elevel)
    that reports whether ereport/elog will do anything.  Make use of that
    in various places that had ad-hoc direct tests of log_min_messages etc.
    Also teach ProcSleep to use it to avoid some work.  (There may well
    be other places that could usefully use this; I didn't search hard.)
    
    Within elog.c, refactor a little bit to avoid having duplicate copies
    of the policy-setting logic.  When that code was written, we weren't
    relying on the availability of inline functions; so it had some
    duplications in the name of efficiency, which I got rid of.
    
    Alvaro Herrera and Tom Lane
    
    Discussion: https://postgr.es/m/129515.1606166429@sss.pgh.pa.us
    789b938b
walsender.c 104 KB