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
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 |