Re: BUG #7575: "between" does not work properly with inet/cidr addresses - Mailing list pgsql-bugs

From Mr Dash Four
Subject Re: BUG #7575: "between" does not work properly with inet/cidr addresses
Date
Msg-id 506837BC.3050305@googlemail.com
Whole thread Raw
In response to Re: BUG #7575: "between" does not work properly with inet/cidr addresses  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: BUG #7575: "between" does not work properly with inet/cidr addresses  (Dimitri Fontaine <dimitri@2ndQuadrant.fr>)
List pgsql-bugs
> 10.1.1.0/24 is different from, and sorts before, 10.1.1.0/32
> (which is what '10.1.1.0'::inet is an abbreviation for).
>
> You might find that the net address inclusion operators (<< and friends)
> provide the semantics you're looking for.
That isn't possible in my case, because on the right side I have IP
ranges (from-to) and currently there isn't a PostgreSQL function which
converts IP ranges to cidr/inet, but even if there was such function
available, this may produce more than one cidr/inet ranges, so it won't
be of much use. Employing << and friends is of no use either, as they
work on inet/cidr on the right side - I can't use something like
"10.1.1.0/24 << (10.1.1.0-10.1.1.255)" for example.

>   BETWEEN only knows about
> btree sort ordering, which is fundamentally a brick or two shy of a
> load when considering two-dimensional quantities such as netmasks.
>
If BETWEEN can't handle operations between cidr/inet and IP ranges
(which is what I highlighted in the initial bug report), it should
either be fixed to produce the correct result or it should return an
error. Leaving things as they are can't be allowed.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #7575: "between" does not work properly with inet/cidr addresses
Next
From: Heikki Linnakangas
Date:
Subject: Re: BUG #7534: walreceiver takes long time to detect n/w breakdown