pgsql: Prevent inlining of multiply-referenced CTEs with outer recursiv

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Prevent inlining of multiply-referenced CTEs with outer recursiv
Date: 2019-04-09 19:47:53
Message-ID: E1hDwin-0004N7-0L@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Prevent inlining of multiply-referenced CTEs with outer recursive refs.

This has to be prevented because inlining would result in multiple
self-references, which we don't support (and in fact that's disallowed
by the SQL spec, see statements about linearly vs. nonlinearly
recursive queries). Bug fix for commit 608b167f9.

Per report from Yaroslav Schekin (via Andrew Gierth)

Discussion: https://postgr.es/m/87wolmg60q.fsf@news-spur.riddles.org.uk

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/9476131278c7bfc435ad9a21fc8e981272ac0dd2

Modified Files
--------------
src/backend/optimizer/plan/subselect.c | 66 +++++++++++++++++++++
src/test/regress/expected/subselect.out | 100 ++++++++++++++++++++++++++++++++
src/test/regress/sql/subselect.sql | 35 +++++++++++
3 files changed, 201 insertions(+)

Browse pgsql-committers by date

  From Date Subject
Next Message Thomas Munro 2019-04-09 21:21:52 pgsql: Fix typos.
Previous Message Alvaro Herrera 2019-04-09 17:46:53 Re: pgsql: Fix memory leak in pgbench