On 1/13/18 22:19, Haribabu Kommi wrote: > While working on [1], we find out the inconsistency in PQHost() behavior > if the connecting string that is passed to connect to the server contains > multiple hosts with both host and hostaddr types. For example, > > host=host1,host2 hostaddr=127.0.0.1,127.0.0.1 port=5434,5432 > > As the hostaddr is given preference when both host and hostaddr is > specified, so the connection type for both addresses of the above > conninfo is CHT_HOST_ADDRESS. So the PQhost() returns the > conn->pghost value i.e "host1,host2" instead of the actual host that > is connected. > > Instead of checking the connection type while returning the host > details, it should check whether the host is NULL or not? with this > change it returns the expected value for all the connection types.
I agree that something is wrong here. It seems, however, that PGhost() has always been broken for hostaddr use. In 9.6 (before the multiple-hosts stuff was introduced), when connecting to "hostaddr=127.0.0.1", PGhost() returns "/tmp". Urgh. I think we should decide what PGhost() is supposed to mean when hostaddr is in use, and then make a fix for that consistently across all versions. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services