But after this iteration, the paths will be:
A B 1
B C 1
C B 1
A C 2
A B 3

in next iteration, the recursive statement will generate (A,C,2), (A,B,3),
and (A,C,4), after the group by, it will still be (A,C,2) and (A,B,3)
so I think it should stop after this iteration.


On Wed, Nov 6, 2013 at 8:10 AM, Albe Laurenz <laurenz.a...@wien.gv.at>wrote:

> Jing Fan wrote:
> > I am sorry but I still don't understand why it doesn't work. Possibly I
> misunderstand how with
> > recursive works?
> > In my opinion,
> > with recursive table as{
> >     seed statement
> >     union
> >     recursive statement
> > }
> > In every iteration, It will just generate results from seed statement
> union recursive statement and
> > put them into a new temporary table, and then compare the results with
> the former temporary table and
> > check if there are any new tuples. If no new tuples, just stop
> iteration. Is there any tricky things
> > about recursive statement?
>
> That is correct.
>
> Let's assume that we have three nodes A, B and C.
> Also, A points to B, B points to C and C points to B.
>
> Let's assume that we already generated (A, B, 1) and (A, C, 2)
> in previous iterations.
>
> Then the "recursive statement" will generate the new
> rows (A, C, 2) and (A, B, 3).
> The SELECT ... GROUP BY only surrounds the recursive statement,
> So the result will still be (A, C, 2) and (A, B, 3).
>
> Then the UNION will take care of the first triple, but the second
> one will be added in this iteration.
>
> And so on ad infinitum.
>
> Yours,
> Laurenz Albe
>

Reply via email to