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