Re: BUG #19034: Recursive function with sql_body can replace an existing function but can not be created on it's own

David G. Johnston <david.g.johnston@gmail.com>

From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Laurenz Albe <laurenz.albe@cybertec.at>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Yushu Chen <gentcys@gmail.com>, "katja.henke@foo.ag" <katja.henke@foo.ag>, "pgsql-bugs@lists.postgresql.org" <pgsql-bugs@lists.postgresql.org>
Date: 2025-09-05T12:55:53Z
Lists: pgsql-bugs
On Friday, September 5, 2025, Laurenz Albe <laurenz.albe@cybertec.at> wrote:

> On Thu, 2025-09-04 at 11:24 -0400, Tom Lane wrote:
> > Given that recursive SQL functions are a tiny-minority use case
> > and there's already a perfectly serviceable way to make them
> > (ie use an old-style body), I seriously doubt that we'll do
> > anything about this request.
>
> Sure, but creating a dump that will fail to load is not good.
> I don't have a smarter idea that dumping standard SQL functions
> in two statements like you suggested...
>

When resolving the dependency graph for such a function can we prevent the
oid of the parent and the oid of the child being the same value?  Prohibit
direct self-references so it fails even if you use “or replace”.

David J.