Re: About connectby() again

From: Masaru Sugawara <rk73(at)sea(dot)plala(dot)or(dot)jp>
To: Joe Conway <mail(at)joeconway(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: About connectby() again
Date: 2002-09-27 14:53:04
Message-ID: 20020927220557.8AF1.RK73@sea.plala.or.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, 26 Sep 2002 16:32:08 -0700
Joe Conway <mail(at)joeconway(dot)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

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andriy Tkachuk 2002-09-27 14:58:05 Re: query speed depends on lifetime of frozen db?
Previous Message Robert Treat 2002-09-27 13:31:41 Re: [PHP] WebDB Developers Wanted