VARCHAR to CIDR type cast - Mailing list pgsql-general

From Nicolas Huillard
Subject VARCHAR to CIDR type cast
Date
Msg-id 01C0EE87.F3505E20.nhuillard@ghs.fr
Whole thread Raw
List pgsql-general
Hello,

I use Postgres 6.5.3.
The following query doesn't work :

nhuillard=> SELECT login FROM vue_auth WHERE (login ~ '^[0-9./]+$') AND
(login::cidr >> '192.168.200.109'::inet);
ERROR:  No such function 'cidr' with the specified attributes

This query look for login (varchar) that look like IP network adresses
(cidr), then check if the provided IP adresses is within this network.

The only cidr function that exist in the catalog is "cidr_in" :

nhuillard=> SELECT t.typname as result, p.proname as function,
substr(oid8types(p.proargtypes),1,14) as arguments,
substr(obj_description(p.oid),1,34) as description FROM pg_proc p, pg_type
t WHERE (p.prorettype = t.oid) and (t.typname = 'cidr') ORDER BY result,
function, arguments;
result|function|arguments|description
------+--------+---------+-----------
cidr  |cidr_in |         |(internal)
(1 row)

This function seems to be the input function, but can't be used for
casting... Is there a way to use it for casting varchar to cidr, or
something else ?
I tried the following :

nhuillard=> create function cidr(text) returns cidr as 'cidr_in' language
'internal';
CREATE
nhuillard=> SELECT login FROM vue_auth WHERE (login ~ '^[0-9./]+$') AND
(login::cidr >> '192.168.200.109'::inet);
ERROR:  could not parse "s"

Any advice ?

Nicolas Huillard

pgsql-general by date:

Previous
From: Mathieu Arnold
Date:
Subject: pg_dump problem
Next
From: Andrew Gould
Date:
Subject: Re: pg_dump problem