Tom Lane-2 wrote
> Pavel Stehule <
> > writes:
>> I was informed about impossibility to use a polymorphic functions
>> with domain types
>> 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.
How would that be possible though? Since any number of domains could be
defined over numeric as soon as the "+" operator causes the domain to be
lost there is no way to get it back manually - you cannot just make it
"SELECT ($1 + $2)::xx".
Does something like:
SELECT ($1 + $2)::$1%TYPE
exist where you can explicitly cast to the type of the input argument?
View this message in context:
Sent from the PostgreSQL - hackers mailing list archive at Nabble.com.
Sent via pgsql-hackers mailing list (firstname.lastname@example.org)
To make changes to your subscription: