Re: BUG #13488: Wrong netmask calculation

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: stn(at)inbox(dot)ru
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #13488: Wrong netmask calculation
Date: 2015-07-06 16:15:09
Message-ID: 29010.1436199309@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

stn(at)inbox(dot)ru writes:
> database=# select inet(routedest), inet(routemask) from iprouteinterface
> group by routedest, routemask order by routedest limit 3;
> inet | inet
> -----------+-------------
> 0.0.0.0 | 0.0.0.0
> 10.1.0.0 | 255.255.0.0
> 10.10.0.0 | 255.255.0.0
> (3 rows)

> database=# select inet(routedest), cidr(routemask) from iprouteinterface
> group by routedest, routemask order by routedest limit 3;
> inet | cidr
> -----------+----------------
> 0.0.0.0 | 0.0.0.0/32
> 10.1.0.0 | 255.255.0.0/32
> 10.10.0.0 | 255.255.0.0/32
> (3 rows)
> database=# select routedest, network(inet(routemask)) from iprouteinterface
> group by routedest, routemask order by routedest limit 3;
> routedest | network
> -----------+----------------
> 0.0.0.0 | 0.0.0.0/32
> 10.1.0.0 | 255.255.0.0/32
> 10.10.0.0 | 255.255.0.0/32
> (3 rows)

You did not say what you think is wrong here, but AFAICS all of these
results are probably per the documentation (I say "probably" because,
without having seen the input data, it's not entirely clear what
calculations you're actually doing).

I suspect what you are wishing for is a function that would take the
inputs "10.1.0.0" and "255.255.0.0" and produce the CIDR value 10.1/16.
That would be a reasonable thing to offer, perhaps, but it's not there
now. In the meantime you could probably build it easily enough as a
SQL function, at least for the set of mask values that actually occur
in your data.

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Heikki Linnakangas 2015-07-06 17:13:46 Re: PQexec() hangs on OOM
Previous Message Peter Kroon 2015-07-06 10:06:49 Re: dblink max per function