>> SQL state: 22P02
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
* 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.
clean_ipv6_addr(int addr_family, char *addr)
if (addr_family == AF_INET6)
char *pct = strchr(addr, '%');
*pct = '\0';