Re: About connectby() again - Mailing list pgsql-hackers

From Masaru Sugawara
Subject Re: About connectby() again
Date
Msg-id 20020927220557.8AF1.RK73@sea.plala.or.jp
Whole thread Raw
In response to Re: About connectby() again  (Joe Conway <mail@joeconway.com>)
List pgsql-hackers
On Thu, 26 Sep 2002 16:32:08 -0700
Joe Conway <mail@joeconway.com> wrote:


> Masaru Sugawara wrote:
> > The previous patch fixed an infinite recursion bug in 
> > contrib/tablefunc/tablefunc.c:connectby. But, other unmanageable error
> > seems to occur even if a table has commonplace tree data(see below).
> > 
> > I would think the patch, ancestor check, should be
> > 
> >   if (strstr(branch_delim || branchstr->data || branch_delim,
> >                        branch_delim || current_key || branch_delim))
> > 
> > This is my image, not a real code. However, if branchstr->data includes
> > branch_delim, my image will not be perfect.
> 
> Good point. Thank you Masaru for the suggested fix.
> 
> Attached is a patch to fix the bug found by Masaru. His example now produces:
> 
> regression=# SELECT * FROM connectby('connectby_tree', 'keyid', 
> 'parent_keyid', '11', 0, '-') AS t(keyid int, parent_keyid int, level int, 
> branch text);
>   keyid | parent_keyid | level |  branch
> -------+--------------+-------+----------
>      11 |              |     0 | 11
>      10 |           11 |     1 | 11-10
>     111 |           11 |     1 | 11-111
>       1 |          111 |     2 | 11-111-1
> (4 rows)
> 
> While making the patch I also realized that the "no show branch" form of the 
> function was not going to work very well for recursion detection. Therefore 
> there is now a default branch delimiter ('~') that is used internally, for 
> that case, to enable recursion detection to work. If you need a different 
> delimiter for your specific data, you will have to use the "show branch" form 
> of the function.
> 
> If there are no objections, please apply. Thanks,

I have no objection to your internally adding strings to detect a recursion.
And I agree with your definition--the default delimiter is a tilde.
Thanks a lot.



Regards,
Masaru Sugawara




pgsql-hackers by date:

Previous
From: Robert Treat
Date:
Subject: Re: [PHP] WebDB Developers Wanted
Next
From: Joe Conway
Date:
Subject: Re: [ODBC] [s.hetze@linux-ag.de: PostgreSQL integration Visual Basic,