Re: The problems of PQhost()

From: Noah Misch <noah(at)leadboat(dot)com>
To: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, MauMau <maumau307(at)gmail(dot)com>
Subject: Re: The problems of PQhost()
Date: 2014-11-27 03:38:32
Message-ID: 20141127033832.GA1171246@tornado.leadboat.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Nov 25, 2014 at 09:53:10PM +0900, Fujii Masao wrote:
> On Tue, Nov 25, 2014 at 12:37 PM, Noah Misch <noah(at)leadboat(dot)com> wrote:
> > On Wed, Jan 22, 2014 at 11:48:26PM +0900, Fujii Masao wrote:
> >> (3) PQhost() cannot return the hostaddr.
> >
> >> We can fix the problem (3) by changing PQhost() so that it also
> >> returns the hostaddr. But this change might break the existing
> >> application using PQhost(). So, I added new libpq function PQhostaddr()
> >> which returns the hostaddr, and changed \conninfo so that it reports
> >> correct connection information by using both PQhost() and PQhostaddr().
> >
> >> + <varlistentry id="libpq-pqhostaddr">
> >> + <term>
> >> + <function>PQhostaddr</function>
> >> + <indexterm>
> >> + <primary>PQhostaddr</primary>
> >> + </indexterm>
> >> + </term>
> >> +
> >> + <listitem>
> >> + <para>
> >> + Returns the server numeric IP address or host name of the connection.
> >> + <synopsis>
> >> + char *PQhostaddr(const PGconn *conn);
> >> + </synopsis>
> >> + </para>
> >> + </listitem>
> >> + </varlistentry>
> >
> > From reading this documentation, I assumed this function would return a
> > non-empty value for every TCP connection. After all, every TCP connection has
> > a peer IP address. In fact, PQhostaddr() returns the raw value of the
> > "hostaddr" connection parameter, whether from a libpq function argument or
> > from the PGHOSTADDR environment variable. (If the parameter and environment
> > variable are absent, it returns NULL. Adding "hostaddr=" to the connection
> > string makes it return the empty string.) A caller wanting the specific raw
> > value of a parameter could already use PQconninfo(). I suspect this new
> > function will confuse more than help. What do you think of reverting it and
> > having \conninfo use PQconninfo() to discover any "hostaddr" value?
>
> Sounds reasonable to me. Are you planning to implement and commit the patch?

Sure. I'll first issue "git revert 9f80f48", then apply the attached patch.
Since libpq ignores a hostaddr parameter equal to the empty string, this
implementation does likewise. Apart from that, I anticipate behavior
identical to today's code.

Attachment Content-Type Size
conninfo-hostaddr-v1.patch text/plain 1.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2014-11-27 03:49:11 Re: bug in json_to_record with arrays
Previous Message Tomas Vondra 2014-11-27 03:27:15 Re: BUG #12071: Stat collector went crasy (50MB/s constant writes)