From: | Dimitri Fontaine <dfontaine(at)hi-media(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Scott Bailey <artacus(at)comcast(dot)net>, hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Range types |
Date: | 2009-12-17 09:38:09 |
Message-ID: | 87ws0mym7y.fsf@hi-media-techno.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:
> Dimitri Fontaine <dfontaine(at)hi-media(dot)com> writes:
>> Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> writes:
>>> foreach p2_member in unnest(p2) loop
>>> p1 := array(select period_except(p1_member, p2_member)
>>> from unnest(p1) p1_member);
>>> end loop;
>>>
>>> But maybe it can be done in a single SQL command.
>
>> Yeah, as soon as you have LATERAL, I think. Without it there's no way to
>> compose SRF in SQL, AFAIK.
>
> Hm, how would you do it with LATERAL? The problem is not so much
> composition as the need for a variable number of rounds of
> composition.
Let's have a try at it:
select p2_member, array_accum(p1)
from unnest(p2) as p2_member
lateral (select period_except(p1_member, p2_member)
from unnest(p1) p1_member) as x(p1);
I'm not sure I understand how the explicit looping over unnest(p2) is different
from using lateral, or even if that's what you're talking about when
mentioning variable number of rounds.
Regards,
--
dim
From | Date | Subject | |
---|---|---|---|
Next Message | Fujii Masao | 2009-12-17 09:50:58 | How should the notice message from the primary be handled in the standby? |
Previous Message | Fujii Masao | 2009-12-17 09:12:49 | Re: Streaming replication and non-blocking I/O |