Fix incorrect printing of queries with duplicated join names.
authorTom Lane
Wed, 12 Jun 2019 23:42:39 +0000 (19:42 -0400)
committerTom Lane
Wed, 12 Jun 2019 23:42:39 +0000 (19:42 -0400)
commit8ace51a6b114208f079407d8e9d7020160c5cc2a
tree05292c72884bfeae87d21fcd80cc3a76fc3b5ef7
parent9695ecf360afb5e69fe63b259f3d654c593f8d43
Fix incorrect printing of queries with duplicated join names.

Given a query in which multiple JOIN nodes used the same alias
(which'd necessarily be in different sub-SELECTs), ruleutils.c
would assign the JOIN nodes distinct aliases for clarity ...
but then it forgot to print the modified aliases when dumping
the JOIN nodes themselves.  This results in a dump/reload hazard
for views, because the emitted query is flat-out incorrect:
Vars will be printed with table names that have no referent.

This has been wrong for a long time, so back-patch to all supported
branches.

Philip Dubé

Discussion: https://postgr.es/m/CY4PR2101MB080246F2955FF58A6ED1FEAC98140@CY4PR2101MB0802.namprd21.prod.outlook.com
src/backend/utils/adt/ruleutils.c
src/test/regress/expected/create_view.out
src/test/regress/sql/create_view.sql