]> granicus.if.org Git - postgresql/commit
Fix dumping of outer joins with empty qual lists.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 20 Jul 2017 15:29:36 +0000 (11:29 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 20 Jul 2017 15:29:36 +0000 (11:29 -0400)
commit6ab4a1136ed949fa77e74d97dd4fecdb8bc8c380
tree7ec26e9801b2cae5f88d429512e0201d4f7670e2
parentf5c5d6a754a2367dd6058ac1313cd8590b5f5a21
Fix dumping of outer joins with empty qual lists.

Normally, a JoinExpr would have empty "quals" only if it came from CROSS
JOIN syntax.  However, it's possible to get to this state by specifying
NATURAL JOIN between two tables with no common column names, and there
might be other ways too.  The code previously printed no ON clause if
"quals" was empty; that's right for CROSS JOIN but syntactically invalid
if it's some type of outer join.  Fix by printing ON TRUE in that case.

This got broken by commit 2ffa740be, which stopped using NATURAL JOIN
syntax in ruleutils output due to its brittleness in the face of
column renamings.  Back-patch to 9.3 where that commit appeared.

Per report from Tushar Ahuja.

Discussion: https://postgr.es/m/98b283cd-6dda-5d3f-f8ac-87db8c76a3da@enterprisedb.com
src/backend/utils/adt/ruleutils.c
src/test/regress/expected/create_view.out
src/test/regress/sql/create_view.sql