Re: WITH RECUSIVE patches 0723

Поиск
Список
Период
Сортировка
От Andrew Gierth
Тема Re: WITH RECUSIVE patches 0723
Дата
Msg-id 87d4kyrtlk.fsf@news-spur.riddles.org.uk
обсуждение исходный текст
Ответ на Re: WITH RECUSIVE patches 0723  (Tatsuo Ishii <ishii@postgresql.org>)
Список pgsql-hackers
>>>>> "Tatsuo" == Tatsuo Ishii <ishii@postgresql.org> writes:
>> This behaviour is clearly intentional, since the entire mechanism of>> estate-> es_disallow_tuplestore exists for no
otherreason, but it>> seems to me to be clearly wrong. What is the justification for it?
 
Tatsuo> Yes, this is due to prevent infinit recursion caused byTatsuo> following case for example.

[...]
Tatsuo> WITH RECURSIVE x AS (Tatsuo>   SELECT * FROM test WHERE a = 'aaa'
Tatsuo>   UNION ALL
Tatsuo>   SELECT test.* FROM x LEFT JOIN test on test.a = x.bTatsuo> ) SELECT * FROM x;
Tatsuo> Now we think that we were wrong. This type of query shouldTatsuo> run into infinit recursion and it's user's
responsibilityTatsuo>that he does not make such a query.
 

I agree.
Tatsuo> Another idea would be prohibiting *any* outer joins in theTatsuo> recursive term (DB2 style), but this may be
overkill.

There are legitimate cases for wanting to do a left join in the
recursion - for example, to use the content of another table to
prune the tree where matching records exist (consider the standard
bill-of-materials example with the addition of another table listing
components already in stock).

-- 
Andrew (irc:RhodiumToad)


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Heikki Linnakangas"
Дата:
Сообщение: Re: [PATCHES] odd output in restore mode
Следующее
От: Zdenek Kotala
Дата:
Сообщение: Re: Review: DTrace probes (merged version) ver_03