Thread: domain casting?

domain casting?

From
"Pavel Stehule"
Date:
Hello

I try casting function for domains. I can do it, but it doesn't work.

betal=# create domain mydomain text;
CREATE DOMAIN
betal=#
betal=# create or replace function mydomain_todate(mydomain)
betal-# returns date as $$
betal$#   select to_date($1, 'YYYYMMDD');
betal$# $$ language sql;
CREATE FUNCTION
betal=#
betal=# create cast (mydomain as date)
betal-# with function mydomain_todate(mydomain);
CREATE CAST
betal=#
betal=# select mydomain_todate('20070715777'::mydomain);mydomain_todate
-----------------2007-07-15
(1 row)

betal=#
betal=# select '20070715777'::mydomain::date;
ERROR:  invalid input syntax for type date: "20070715777"
betal=#

Is possible casting domain?

Regards
Pavel Stehule

betal=# select version();                                               version
-------------------------------------------------------------------------------------------------------PostgreSQL
8.3develon i686-pc-linux-gnu, compiled by GCC gcc (GCC)
 
4.1.2 20070502 (Red Hat 4.1.2-12)
(1 row)


Re: domain casting?

From
Tom Lane
Date:
"Pavel Stehule" <pavel.stehule@gmail.com> writes:
> Is possible casting domain?

No, because find_coercion_pathway() expects that only base types are
listed in pg_cast, so it starts by stripping domains.  Function lookup
tends to do that too, so it's hard even to declare a function as taking
a domain.

Elein was going to look into devising a more domain-friendly set of
type coercion rules, but I dunno if she's made any progress.
        regards, tom lane