• Tom Lane's avatar
    Improve the internal implementation of ereport(). · 17a28b03
    Tom Lane authored
    Change all the auxiliary error-reporting routines to return void,
    now that we no longer need to pretend they are passing something
    useful to errfinish().  While this probably doesn't save anything
    significant at the machine-code level, it allows detection of some
    additional types of mistakes.
    
    Pass the error location details (__FILE__, __LINE__, PG_FUNCNAME_MACRO)
    to errfinish not errstart.  This shaves a few cycles off the case where
    errstart decides we're not going to emit anything.
    
    Re-implement elog() as a trivial wrapper around ereport(), removing
    the separate support infrastructure it used to have.  Aside from
    getting rid of some now-surplus code, this means that elog() now
    really does have exactly the same semantics as ereport(), in particular
    that it can skip evaluation work if the message is not to be emitted.
    
    Andres Freund and Tom Lane
    
    Discussion: https://postgr.es/m/CA+fd4k6N8EjNvZpM8nme+y+05mz-SM8Z_BgkixzkA34R+ej0Kw@mail.gmail.com
    17a28b03
parse_node.c 17.1 KB