Re: BUG #18536: Using WITH inside WITH RECURSIVE triggers a "shouldn't happen" error

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: exclusion(at)gmail(dot)com
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18536: Using WITH inside WITH RECURSIVE triggers a "shouldn't happen" error
Date: 2024-07-14 17:30:55
Message-ID: 2946840.1720978255@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

I wrote:
> Hmm, that is probably too strong: it will break some queries we've
> historically accepted. What we need is just to forbid self-references
> within the WITH clause. The code actually does that already, it's
> just doing it too late; so we can fix this with a simple re-ordering
> of the error checks, as attached.

Oh ...

regression=# WITH RECURSIVE x(n) AS (
select 0 union select 1 order by (select n from x)) select * from x;
ERROR: missing recursive reference

We have to move *all* of those subsidiary-clause checks to before
the tests of the UNION proper.

regards, tom lane

Attachment Content-Type Size
v2-fix-bug-18536.patch text/x-diff 5.6 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2024-07-15 08:28:26 BUG #18540: Does PG16 standby database support function pg_replication_origin_advance?
Previous Message Tom Lane 2024-07-14 17:01:32 Re: BUG #18536: Using WITH inside WITH RECURSIVE triggers a "shouldn't happen" error