summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2017-07-20 12:41:26 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2017-07-20 12:41:37 -0400
commit315ca7ffb90939af8b3e08f5a2a6afbfc6d89c7d (patch)
tree5baa18a8c67c065e91844e94f910d32fb4b715f7
parentc2bbec9f2b3672f57be27e20f26db141ab430da8 (diff)
downloadpostgresql-315ca7ffb90939af8b3e08f5a2a6afbfc6d89c7d.tar.gz
Doc: clarify description of degenerate NATURAL joins.
Claiming that NATURAL JOIN is equivalent to CROSS JOIN when there are no common column names is only strictly correct if it's an inner join; you can't say e.g. CROSS LEFT JOIN. Better to explain it as meaning JOIN ON TRUE, instead. Per a suggestion from David Johnston. Discussion: https://postgr.es/m/CAKFQuwb+mYszQhDS9f_dqRrk1=Pe-S6D=XMkAXcDf4ykKPmgKQ@mail.gmail.com
-rw-r--r--doc/src/sgml/queries.sgml4
-rw-r--r--doc/src/sgml/ref/select.sgml7
2 files changed, 7 insertions, 4 deletions
diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml
index 92e54067c9..5adba0af33 100644
--- a/doc/src/sgml/queries.sgml
+++ b/doc/src/sgml/queries.sgml
@@ -393,8 +393,8 @@ FROM <replaceable>table_reference</replaceable> <optional>, <replaceable>table_r
consisting of all column names that appear in both
input tables. As with <literal>USING</>, these columns appear
only once in the output table. If there are no common
- column names, <literal>NATURAL</literal> behaves like
- <literal>CROSS JOIN</literal>.
+ column names, <literal>NATURAL JOIN</literal> behaves like
+ <literal>JOIN ... ON TRUE</literal>, producing a cross-product join.
</para>
<note>
diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml
index ac84022c01..95f2321974 100644
--- a/doc/src/sgml/ref/select.sgml
+++ b/doc/src/sgml/ref/select.sgml
@@ -603,9 +603,12 @@ TABLE [ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ]
<varlistentry>
<term><literal>NATURAL</literal></term>
<listitem>
- <para><literal>NATURAL</literal> is shorthand for a
+ <para>
+ <literal>NATURAL</literal> is shorthand for a
<literal>USING</> list that mentions all columns in the two
- tables that have the same names.
+ tables that have matching names. If there are no common
+ column names, <literal>NATURAL</literal> is equivalent
+ to <literal>ON TRUE</>.
</para>
</listitem>
</varlistentry>