inet/cidr wierdness (casting)

Started by Alex Pilosovover 24 years ago2 messages
#1Alex Pilosov
alex@pilosoft.com

In case Tom isn't sick of me yet...

users=# select '10.1.2.3/24'::inet::cidr;
?column?
-------------
10.1.2.3/24

while:

users=# select '10.1.2.3/24'::cidr;
ERROR: invalid CIDR value '10.1.2.3/24': has bits set to right of mask

Apparently, since there's no explicit function to cast from inet to cidr,
postgresql assumes its always safe to do so, as they are
binary-compatible. Anyone mind if I create explicit function for this so
this could be flagged as error?

-alex

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alex Pilosov (#1)
Re: inet/cidr wierdness (casting)

Alex Pilosov <alex@pilosoft.com> writes:

Apparently, since there's no explicit function to cast from inet to cidr,
postgresql assumes its always safe to do so, as they are
binary-compatible.

Yes. I've thought for awhile that it was a mistake to treat them as
binary-compatible. However, you'd need a lot more operator/function
declarations if they're not so marked.

Anyone mind if I create explicit function for this so
this could be flagged as error?

Won't help if they are binary compatible...

regards, tom lane