• Tom Lane's avatar
    Rewrite PQping to be more like what we agreed to last week. · db96e1cc
    Tom Lane authored
    Basically, we want to distinguish all cases where the connection was
    not made from those where it was.  A convenient proxy for this is to
    see if we got a message with a SQLSTATE code back from the postmaster.
    This presumes that the postmaster will always send us a SQLSTATE in
    a failure message, which is true for 7.4 and later postmasters in
    every case except fork failure.  (We could possibly complicate the
    postmaster code to do something about that, but it seems not worth
    the trouble, especially since pg_ctl's response for that case should
    be to keep waiting anyway.)
    
    If we did get a SQLSTATE from the postmaster, there are basically only
    two cases, as per last week's discussion: ERRCODE_CANNOT_CONNECT_NOW
    and everything else.  Any other error code implies that the postmaster
    is in principle willing to accept connections, it just didn't like or
    couldn't handle this particular request.  We want to make a special
    case for ERRCODE_CANNOT_CONNECT_NOW so that "pg_ctl start -w" knows
    it should keep waiting.
    
    In passing, pick names for the enum constants that are a tad less
    likely to present collision hazards in future.
    db96e1cc
libpq.sgml 266 KB