From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Rod Taylor <rbt(at)rbt(dot)ca> |
Cc: | Peter Eisentraut <peter_e(at)gmx(dot)net>, Marek Lewczuk <newsy(at)lewczuk(dot)com>, pgsql-general(at)postgresql(dot)org, PostgreSQL Development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Needed function IF(expr, expr, expr) |
Date: | 2003-09-08 00:38:05 |
Message-ID: | 16032.1062981485@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general pgsql-hackers |
Rod Taylor <rbt(at)rbt(dot)ca> writes:
>> Any comments on the UNKNOWN issue? It's not too late to change that for
>> 7.4, if we have consensus that we should.
> I would actually prefer to get UNKNOWN so I can apply my own default
> type, but we're not even given the chance to resolve the unknown issue
> ourselves.
> CREATE OR REPLACE FUNCTION if(bool,anyelement,anyelement)
> RETURNS anyelement
> AS 'SELECT
> CASE WHEN $2 is of (unknown) THEN
> CASE WHEN $1 THEN $2::point ELSE $3::point END
> ELSE
> CASE WHEN $1 THEN $2 ELSE $3 END
> END' language SQL;
There's no chance of that working --- the parser has to be able to
determine the result type of a function invocation without reference
to the function body. (Otherwise CREATE OR REPLACE FUNCTION invalidates
every use of the function.)
I don't feel that the anyelement in -> anyelement out mechanism is the
last word in polymorphism, though. Care to propose additional features
of the same kind? If you can find a way to describe the behavior you
want in terms of the function signature, it'd be worth considering ...
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-09-08 00:57:04 | Re: Unixware 713 probs |
Previous Message | Rod Taylor | 2003-09-07 23:25:30 | Re: Needed function IF(expr, expr, expr) |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-09-08 00:43:53 | Re: mcxt.c |
Previous Message | Alvaro Herrera | 2003-09-07 23:52:39 | Re: table-level and row-level locks. |