mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Doc: improve description of IN and row-constructor comparisons.
IN and NOT IN work fine on records and arrays, so just say that they accept "expressions" not "scalar expressions". I think that that phrasing was meant to say that they don't work on set-returning expressions, but that's not the common meaning of "scalar". Revise the description of row-constructor comparisons to make it perhaps a bit less confusing. (This partially reverts some dubious wording changes made by commit f56651519.) Per gripe from Ilya Nenashev. Back-patch to supported branches. In HEAD and v16, also drop a NOTE about pre-8.2 behavior, which is hopefully no longer of interest to anybody. Discussion: https://postgr.es/m/168968062460.632.14303906825812821399@wrigleys.postgresql.org
This commit is contained in:
parent
dc2d9efcb4
commit
27e945944b
@ -20352,7 +20352,7 @@ WHERE EXISTS (SELECT 1 FROM tab2 WHERE col2 = tab1.col2);
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
The right-hand side is a parenthesized list
|
The right-hand side is a parenthesized list
|
||||||
of scalar expressions. The result is <quote>true</quote> if the left-hand expression's
|
of expressions. The result is <quote>true</quote> if the left-hand expression's
|
||||||
result is equal to any of the right-hand expressions. This is a shorthand
|
result is equal to any of the right-hand expressions. This is a shorthand
|
||||||
notation for
|
notation for
|
||||||
|
|
||||||
@ -20383,7 +20383,7 @@ OR
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
The right-hand side is a parenthesized list
|
The right-hand side is a parenthesized list
|
||||||
of scalar expressions. The result is <quote>true</quote> if the left-hand expression's
|
of expressions. The result is <quote>true</quote> if the left-hand expression's
|
||||||
result is unequal to all of the right-hand expressions. This is a shorthand
|
result is unequal to all of the right-hand expressions. This is a shorthand
|
||||||
notation for
|
notation for
|
||||||
|
|
||||||
@ -20494,26 +20494,24 @@ AND
|
|||||||
<para>
|
<para>
|
||||||
Each side is a row constructor,
|
Each side is a row constructor,
|
||||||
as described in <xref linkend="sql-syntax-row-constructors"/>.
|
as described in <xref linkend="sql-syntax-row-constructors"/>.
|
||||||
The two row values must have the same number of fields.
|
The two row constructors must have the same number of fields.
|
||||||
Each side is evaluated and they are compared row-wise. Row constructor
|
The given <replaceable>operator</replaceable> is applied to each pair
|
||||||
comparisons are allowed when the <replaceable>operator</replaceable> is
|
of corresponding fields. (Since the fields could be of different
|
||||||
|
types, this means that a different specific operator could be selected
|
||||||
|
for each pair.)
|
||||||
|
All the selected operators must be members of some B-tree operator
|
||||||
|
class, or be the negator of an <literal>=</literal> member of a B-tree
|
||||||
|
operator class, meaning that row constructor comparison is only
|
||||||
|
possible when the <replaceable>operator</replaceable> is
|
||||||
<literal>=</literal>,
|
<literal>=</literal>,
|
||||||
<literal><></literal>,
|
<literal><></literal>,
|
||||||
<literal><</literal>,
|
<literal><</literal>,
|
||||||
<literal><=</literal>,
|
<literal><=</literal>,
|
||||||
<literal>></literal> or
|
<literal>></literal>, or
|
||||||
<literal>>=</literal>.
|
<literal>>=</literal>,
|
||||||
Every row element must be of a type which has a default B-tree operator
|
or has semantics similar to one of these.
|
||||||
class or the attempted comparison may generate an error.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<note>
|
|
||||||
<para>
|
|
||||||
Errors related to the number or types of elements might not occur if
|
|
||||||
the comparison is resolved using earlier columns.
|
|
||||||
</para>
|
|
||||||
</note>
|
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The <literal>=</literal> and <literal><></literal> cases work slightly differently
|
The <literal>=</literal> and <literal><></literal> cases work slightly differently
|
||||||
from the others. Two rows are considered
|
from the others. Two rows are considered
|
||||||
|
Loading…
x
Reference in New Issue
Block a user