pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Luis Sousa <llsousa@ualg.pt>
To: Stefano Vita Finzi <stefano.vita@pronesis.it>
Cc: pgsql-sql@postgresql.org
Subject: Re: plpgsql recursion
Date: Wed, 28 May 2003 10:03:42 +0100
Message-ID: <3ED47B6E.6010209@ualg.pt> (raw)
In-Reply-To: <01a601c31ef0$4a628220$0600a8c0@stefano>
References: <01a601c31ef0$4a628220$0600a8c0@stefano>

Can you post the recursion function that you use on this case to get out 
the information from the table ?

Thanks,
Luis Sousa

Stefano Vita Finzi 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);
>      END IF;
>    END LOOP;
>    RETURN ''ok'' || testing::text;
>  END;
>' LANGUAGE 'plpgsql';
>
>I would use this function BEFORE inserting the new row. But if i try SELECT
>dba_test(4,1); i don't have the result i expect. Can i you give me an hint
>where am i wrong?
>
>Thank you!
>
>Stefano Vita Finzi
>kluge@despammed.com
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>
>
>  
>





view thread (5+ messages)

Message-ID: <3ED47B6E.6010209@ualg.pt>
Permalink:  ../3ED47B6E.6010209@ualg.pt/
Also on:    postgresql.org/message-id/3ED47B6E.6010209@ualg.pt

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: llsousa@ualg.pt, stefano.vita@pronesis.it
  Subject: Re: plpgsql recursion
  In-Reply-To: <3ED47B6E.6010209@ualg.pt>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox