Thread: BUG #5071: abbrev() bug with IPv6

BUG #5071: abbrev() bug with IPv6

From
""
Date:
The following bug has been logged online:

Bug reference:      5071
Logged by:
Email address:      alexander.over@koeln.de
PostgreSQL version: 8.3.7
Operating system:   Debian Lenny 64Bit
Description:        abbrev() bug with IPv6
Details:

I have a Database to store IPV6 addresses.
Field "net" is type cidr.

e.g.: '2001:400::/32' as value.

"SELECT abbrev(net) FROM ipstore;"

expected result: "2001:400::/32" (its already short v6)

actual result: "2001:400/32" wich is invalid v6 Syntax.

Re: BUG #5071: abbrev() bug with IPv6

From
Robert Haas
Date:
On Tue, Sep 22, 2009 at 12:54 AM,  <alexander.over@koeln.de> wrote:
>
> The following bug has been logged online:
>
> Bug reference: =A0 =A0 =A05071
> Logged by:
> Email address: =A0 =A0 =A0alexander.over@koeln.de
> PostgreSQL version: 8.3.7
> Operating system: =A0 Debian Lenny 64Bit
> Description: =A0 =A0 =A0 =A0abbrev() bug with IPv6
> Details:
>
> I have a Database to store IPV6 addresses.
> Field "net" is type cidr.
>
> e.g.: '2001:400::/32' as value.
>
> "SELECT abbrev(net) FROM ipstore;"
>
> expected result: "2001:400::/32" (its already short v6)
>
> actual result: "2001:400/32" wich is invalid v6 Syntax.

I think this is the expected behavior.  The same thing happens with IPv4.

rhaas=3D# select abbrev('216.83.114.0/24'::cidr);
    abbrev
---------------
 216.83.114/24
(1 row)

It's also documented this way in the fine manual.

http://www.postgresql.org/docs/current/static/functions-net.html#CIDR-INET-=
FUNCTIONS-TABLE

You can get the behavior you want by casting your cidr to an inet
before applying abbrev.

...Robert