| From: | Joe Conway <mail(at)joeconway(dot)com> | 
|---|---|
| To: | Masaru Sugawara <rk73(at)sea(dot)plala(dot)or(dot)jp> | 
| Cc: | pgsql-hackers(at)postgresql(dot)org | 
| Subject: | Re: About connectby() again | 
| Date: | 2002-09-26 23:32:08 | 
| Message-ID: | 3D9398F8.1070202@joeconway.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
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,
Joe
| Attachment | Content-Type | Size | 
|---|---|---|
| contrib-tablefunc-fixes-2.1.patch | text/plain | 4.8 KB | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jim Mercer | 2002-09-27 00:26:51 | hacker help: PHP-4.2.3 patch to allow restriction of database access | 
| Previous Message | Doug McNaught | 2002-09-26 23:26:03 | Re: [HACKERS] Performance while loading data and indexing |