>>>>> "Tom" == Tom Lane <t...@sss.pgh.pa.us> writes:

Someone mentioned LATERAL?

 >> Tom Lane <t...@sss.pgh.pa.us> writes:
 >>> 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);

 Tom> I don't think that does it.  Maybe I misunderstand LATERAL, but
 Tom> what that looks like to me is that each p1 will be separately
 Tom> filtered by each p2, giving rise to a distinct element in the
 Tom> output.  What we need is for each p1 to be filtered by *all*
 Tom> p2's, successively (though in any order).

Right, that's not a job for LATERAL, though it could be done easily
enough in one statement with a recursive CTE, I think.

-- 
Andrew (irc:RhodiumToad)

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to