Re: polymorphic SQL functions has a problem with domains - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: polymorphic SQL functions has a problem with domains
Date
Msg-id CAFj8pRB8fmpomQqKHPjc1B2rKDubipFNDJBWT24GkqaWtNbJ-A@mail.gmail.com
Whole thread Raw
In response to Re: polymorphic SQL functions has a problem with domains  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers



2014-04-02 17:19 GMT+02:00 Tom Lane <tgl@sss.pgh.pa.us>:
Pavel Stehule <pavel.stehule@gmail.com> writes:
> I was informed about impossibility to use a polymorphic functions together
> with domain types

> see

>  create domain xx as numeric(15);

> create or replace function g(anyelement, anyelement)
> returns anyelement as
> $$  select $1 + $2 $$
> language sql immutable;

> postgres=# select g(1::xx, 2::xx);
> ERROR:  return type mismatch in function declared to return xx
> DETAIL:  Actual return type is numeric.
> CONTEXT:  SQL function "g" during inlining

That example doesn't say you can't use polymorphic functions with domains.
It says that this particular polymorphic function definition is wrong:
it is not making sure its result is of the expected data type.  I don't
recall right now whether SQL functions will apply an implicit cast on the
result for you, but even if they do, an upcast from numeric to some domain
over numeric wouldn't be implicit.

But I am not able to enforce a casting in polymorphic function

or there is some possibility?

Regards

Pavel
 

                        regards, tom lane

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: polymorphic SQL functions has a problem with domains
Next
From: David Johnston
Date:
Subject: Re: polymorphic SQL functions has a problem with domains