]> granicus.if.org Git - postgresql/commit
Fix UNION/INTERSECT/EXCEPT over no columns.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 22 Dec 2017 17:08:06 +0000 (12:08 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 22 Dec 2017 17:08:06 +0000 (12:08 -0500)
commitc4c2885cbb1803f772e58f6db4c8951d8cd672cd
treedbbee347118a299ec8c35e4276d4dca3fbb46b94
parent854823fa334cb826eed50da751801d0693b10173
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
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/prep/prepunion.c
src/test/regress/expected/union.out
src/test/regress/sql/union.sql