Allow an alias to be attached to a JOIN ... USING
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 31 Mar 2021 15:09:24 +0000 (17:09 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Wed, 31 Mar 2021 15:10:50 +0000 (17:10 +0200)
commit055fee7eb4dcc78e58672aef146334275e1cc40d
tree2034e69c471453e9aea59712b09d3fed95bce330
parent27e1f14563cf982f1f4d71e21ef247866662a052
Allow an alias to be attached to a JOIN ... USING

This allows something like

    SELECT ... FROM t1 JOIN t2 USING (a, b, c) AS x

where x has the columns a, b, c and unlike a regular alias it does not
hide the range variables of the tables being joined t1 and t2.

Per SQL:2016 feature F404 "Range variable for common column names".

Reviewed-by: Vik Fearing <vik.fearing@2ndquadrant.com>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/454638cf-d563-ab76-a585-2564428062af@2ndquadrant.com
22 files changed:
doc/src/sgml/ref/select.sgml
src/backend/catalog/sql_features.txt
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/plan/subselect.c
src/backend/parser/analyze.c
src/backend/parser/gram.y
src/backend/parser/parse_clause.c
src/backend/parser/parse_expr.c
src/backend/parser/parse_relation.c
src/backend/utils/adt/ruleutils.c
src/include/nodes/parsenodes.h
src/include/nodes/primnodes.h
src/include/parser/parse_node.h
src/include/parser/parse_relation.h
src/test/regress/expected/create_view.out
src/test/regress/expected/join.out
src/test/regress/sql/create_view.sql
src/test/regress/sql/join.sql