Re: Functions, composite types and Notice - Mailing list pgsql-general

From Tom Lane
Subject Re: Functions, composite types and Notice
Date
Msg-id 11811.1170428637@sss.pgh.pa.us
Whole thread Raw
In response to Re: Functions, composite types and Notice  ("Hakan Kocaman" <Hakan.Kocaman@digame.de>)
Responses Re: Functions, composite types and Notice  ("Hakan Kocaman" <Hakan.Kocaman@digame.de>)
List pgsql-general
"Hakan Kocaman" <Hakan.Kocaman@digame.de> writes:
>> Try this way instead:
>> select * from public.check_notice(2,'hello');

> so i call the function now like this (obfuscated):
> select
>     public.check_notice(t1.a,t1.b,t2.c)
> from
>     public.tab1 t1,
>     public.tab2 t2

> I'm not clear how i can use the mentioned syntax with this kind of
> query.

No, you can't at the moment; you have to use the way you're doing it.
There's been some speculation that SQL2003's LATERAL syntax might fix
this problem, but no one's dug into it deeply enough to even be sure
of that, let alone figure out what it'll take to implement it.

If you're trying to avoid multiple evaluation of the function, the best
way is to use "OFFSET 0" as an optimization fence to prevent flattening
of a subquery.  I get what seems to be the right thing from

select (x).* from (select sumprod(f1,f2) as x from foo offset 0) ss;

            regards, tom lane

pgsql-general by date:

Previous
From: Alexander Staubo
Date:
Subject: Re: PostgreSQL/FireBird
Next
From: Tony Caduto
Date:
Subject: Re: I "might" have found a bug on 8.2.1 win32