Re: plpgsql recursion - Mailing list pgsql-sql

From Stephan Szabo
Subject Re: plpgsql recursion
Date
Msg-id 20030520104342.L69760-100000@megazone23.bigpanda.com
Whole thread Raw
In response to plpgsql recursion  ("Kluge" <kluge@despammed.com>)
List pgsql-sql
On Tue, 20 May 2003, Kluge wrote:

> Greetings!
> I have a table like:
>
> node parent
>    1       2
>    2       3
>    3       4
>
> Since i traverse this table with a recursive function, i want to avoid
> infinite recursion loop. I have wrote a function to check that a new record
> does not create a circular dependency. The function i wrote is as follow:
>
> CREATE OR REPLACE FUNCTION dba_test(INTEGER,INTEGER) RETURNS TEXT AS '
>   DECLARE
>     traversing ALIAS FOR $1;
>     testing ALIAS FOR $2;
>     t_rec RECORD;
>   BEGIN
>     FOR t_rec IN SELECT node,parent FROM dba_test WHERE parent = traversing
> LOOP
>       IF t_rec.node = testing THEN
>         RETURN ''Circular'';
>       ELSE
>         PERFORM dba_test(t_rec.node,testing);

Here you're calling dba_test recursively and ignoring its result and going
on.  I don't think that'll do what you want.  If parent is unique, I think
you can just RETURN dba_test(t_rec.node, testing).  If it's not, you'll
have to do some additional work to return the correct result.



pgsql-sql by date:

Previous
From: "Jan Bodey"
Date:
Subject: Re: Date comparison question
Next
From: Stephan Szabo
Date:
Subject: Re: how to do this query?