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

Aleksander Alekseev <aleksander@timescale.com>

From: Aleksander Alekseev <aleksander@timescale.com>
To: pgsql-bugs@lists.postgresql.org
Cc: Tom Lane <tgl@sss.pgh.pa.us>, exclusion@gmail.com
Date: 2024-07-15T12:16:09Z
Lists: pgsql-bugs
Hi,

> triggers an error:
> ERROR:  XX000: missing recursive reference
> LOCATION:  checkWellFormedRecursion, parse_cte.c:896

FWIW I couldn't reproduce the reported error on REL_17_STABLE
(b8bf76cbde39). The error I got seems reasonable:

```
46087 (master) =# WITH RECURSIVE t(n) AS (
    WITH t1 AS (SELECT 1 FROM t) SELECT 1
    UNION
    SELECT 1 FROM t1)
SELECT * FROM t;
ERROR:  recursive reference to query "t" must not appear within a subquery
LINE 2:     WITH t1 AS (SELECT 1 FROM t) SELECT 1
                                      ^
```

We should add regression tests though, as v2 does.

-- 
Best regards,
Aleksander Alekseev



Commits

  1. Avoid unhelpful internal error for incorrect recursive-WITH queries.