Monday, September 8, 2008

Re: [ADMIN] problem with pg_stat_activity view

That explains it... I thought it was a precent encoding but at the same
time a strange place for a control character.

Regards,

Ben Kim


On Mon, 8 Sep 2008, Alvaro Herrera wrote:

>
>>> ERROR: invalid input syntax for type inet:
>>> "fe80::104d:416e:a8dc:c02e%12"
>>>
>>> SQL state: 22P02
>
> Interesting.
>
> When we HAVE_IPV6, there's code to remove stuff after a % in an address.
> My bet is that what you're running was not compiled with HAVE_IPV6 and
> so the code is not executed. Obviously this is invoked in
> pg_stat_get_backend_client_addr().
>
> /*
> * clean_ipv6_addr --- remove any '%zone' part from an IPv6 address string
> *
> * XXX This should go away someday!
> *
> * This is a kluge needed because we don't yet support zones in stored inet
> * values. Since the result of getnameinfo() might include a zone spec,
> * call this to remove it anywhere we want to feed getnameinfo's output to
> * network_in. Beats failing entirely.
> *
> * An alternative approach would be to let network_in ignore %-parts for
> * itself, but that would mean we'd silently drop zone specs in user input,
> * which seems not such a good idea.
> */
> void
> clean_ipv6_addr(int addr_family, char *addr)
> {
> #ifdef HAVE_IPV6
> if (addr_family == AF_INET6)
> {
> char *pct = strchr(addr, '%');
>
> if (pct)
> *pct = '\0';
> }
>

No comments: