VARCHAR to CIDR type cast

From: Nicolas Huillard <nhuillard(at)ghs(dot)fr>
To: "'pgsql-general(at)postgresql(dot)org'" <pgsql-general(at)postgresql(dot)org>
Subject: VARCHAR to CIDR type cast
Date: 2001-06-06 10:55:23
Message-ID: 01C0EE87.F3505E20.nhuillard@ghs.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

Browse pgsql-general by date

  From Date Subject
Next Message Andrew Gould 2001-06-06 11:24:53 Re: pg_dump problem
Previous Message Ognyan Kulev 2001-06-06 10:16:58 Database per user quotas