Thread: domain casting?
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)
"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