pgsql: Fix UNION/INTERSECT/EXCEPT over no columns.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Fix UNION/INTERSECT/EXCEPT over no columns.
Date: 2017-12-22 17:08:54
Message-ID: E1eSQoY-0002KM-KU@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix UNION/INTERSECT/EXCEPT over no columns.

Since 9.4, we've allowed the syntax "select union select" and variants
of that. However, the planner wasn't expecting a no-column set operation
and ended up treating the set operation as if it were UNION ALL.

Turns out it's trivial to fix in v10 and later; we just need to be careful
about not generating a Sort node with no sort keys. However, since a weird
corner case like this is never going to be exercised by developers, we'd
better have thorough regression tests if we want to consider it supported.

Per report from Victor Yegorov.

Discussion: https://postgr.es/m/CAGnEbojGJrRSOgJwNGM7JSJZpVAf8xXcVPbVrGdhbVEHZ-BUMw@mail.gmail.com

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/c252ccda74295ad292c407a361c9d55ca0554e00

Modified Files
--------------
src/backend/optimizer/plan/createplan.c | 1 -
src/backend/optimizer/prep/prepunion.c | 26 +++-----
src/test/regress/expected/union.out | 115 ++++++++++++++++++++++++++++++++
src/test/regress/sql/union.sql | 43 ++++++++++++
4 files changed, 168 insertions(+), 17 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2017-12-22 17:52:25 Re: pgsql: Use new overflow aware integer operations.
Previous Message Alvaro Herrera 2017-12-22 16:47:56 Re: pgsql: Get rid of copy_partition_key