Re: BUG #7575: "between" does not work properly with inet/cidr addresses

From: Mr Dash Four <mr(dot)dash(dot)four(at)googlemail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #7575: "between" does not work properly with inet/cidr addresses
Date: 2012-09-30 12:14:52
Message-ID: 506837BC.3050305@googlemail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Heikki Linnakangas 2012-10-01 10:38:49 Re: BUG #7534: walreceiver takes long time to detect n/w breakdown
Previous Message Tom Lane 2012-09-30 05:26:02 Re: BUG #7575: "between" does not work properly with inet/cidr addresses