• Tom Lane's avatar
    Improve PQhost() to return useful data for default Unix-socket connections. · 40cb21f7
    Tom Lane authored
    Previously, if no host information had been specified at connection time,
    PQhost() would return NULL (unless you are on Windows, in which case you
    got "localhost").  This is an unhelpful definition for a couple of reasons:
    it can cause corner-case crashes in applications (cf commit c5ef8ce5),
    and there's no well-defined way for applications to find out the socket
    directory path that's actually in use.  As an example of the latter
    problem, psql substituted DEFAULT_PGSOCKET_DIR for NULL in a couple of
    places, but this is subtly wrong because it's conceivable that psql is
    using a libpq shared library that was built with a different setting.
    
    Hence, change PQhost() to return DEFAULT_PGSOCKET_DIR when appropriate,
    and strip out the now-dead substitutions in psql.  (There is still one
    remaining reference to DEFAULT_PGSOCKET_DIR in psql, in prompt.c, which
    I don't see a nice way to get rid of.  But it only controls a prompt
    abbreviation decision, so it seems noncritical.)
    
    Also update the docs for PQhost, which had never previously mentioned
    the possibility of a socket directory path being returned.  In passing
    fix the outright-incorrect code comment about PGconn.pgunixsocket.
    40cb21f7
libpq-int.h 23.9 KB