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.



--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to