Re: Recusrive Functions in 7.0.3 - Mailing list pgsql-sql

From Tom Lane
Subject Re: Recusrive Functions in 7.0.3
Date
Msg-id 28783.981775759@sss.pgh.pa.us
Whole thread Raw
In response to Recusrive Functions in 7.0.3  (<plpgsql@polar-digital.com>)
Responses Recusrive Functions in 7.0.3  (mark proctor <m.proctor@bigfoot.com>)
List pgsql-sql
<plpgsql@polar-digital.com> writes:
> Are recursive functions allowed in in 7.0.3

Sure.

play=> create function myfactorial(int) returns int as '
play'> begin
play'>   if $1 > 1 then
play'>     return $1 * myfactorial($1 - 1);
play'>   end if;
play'>   return $1;
play'> end;' language 'plpgsql';
CREATE
play=> select myfactorial(1);myfactorial
-------------          1
(1 row)

play=> select myfactorial(10);myfactorial
-------------    3628800
(1 row)

play=>

I get a stack overflow crash at about myfactorial(7500), but that seems
like a sufficient level of recursion depth for normal purposes ...

> as I seem to be unable to
> get them to work in plpgsql,

Are you sure you aren't asking for infinite recursion, eg by invoking
the same function with the same argument?
        regards, tom lane


pgsql-sql by date:

Previous
From: "guard"
Date:
Subject: how to download postgresql 7.1 beta
Next
From: Tom Lane
Date:
Subject: Re: Recusrive Functions in 7.0.3