On Wed, Nov 25, 2015 at 11:59 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Currently, libpq's PQhost() function will return NULL if the connection is > using the default Unix-socket connection address. This seems like a > pretty dubious definition to me. psql works around it in several places > with > > host = PQhost(pset.db); > if (host == NULL) > host = DEFAULT_PGSOCKET_DIR; > > That seems rather duplicative, and it also means that both libpq and psql > have the default socket directory hard-wired into them, which does not > seem like a good thing. It's conceivable that psql could get used with > a libpq built with a different default, in which case these places would > be outright lying about which socket is being used. > > I think we should do this: > > char * > PQhost(const PGconn *conn) > { > if (!conn) > return NULL; > if (conn->pghost != NULL && conn->pghost[0] != '\0') > return conn->pghost; > else > { > #ifdef HAVE_UNIX_SOCKETS > - return conn->pgunixsocket; > + if (conn->pgunixsocket != NULL && conn->pgunixsocket[0] != '\0') > + return conn->pgunixsocket; > + else > + return DEFAULT_PGSOCKET_DIR; > #else > return DefaultHost; > #endif > } > } > > As a definitional change, this would be for HEAD only. > > Comments? > I agree with this change in genera. But I wonder if there's a risk here that we break some applications isnt' it? It's clearly a backwards incompatible change, so wouldn't it require a bump of libpq version? And I'm not sure it's worth that on it's own... -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/