mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 16:21:20 +03:00
Doc: clarify handling of duplicate elements in array containment tests.
The array <@ and @> operators do not worry about duplicates: if every member of array X matches some element of array Y, then X is contained in Y, even if several members of X get matched to the same Y member. This was not explicitly stated in the docs though, so improve matters. Discussion: https://postgr.es/m/156614120484.1310.310161642239149585@wrigleys.postgresql.org
This commit is contained in:
parent
096d34c3ba
commit
0652c3992e
@ -12591,14 +12591,14 @@ SELECT NULLIF(value, '(none)') ...
|
||||
<row>
|
||||
<entry> <literal>@></literal> </entry>
|
||||
<entry>contains</entry>
|
||||
<entry><literal>ARRAY[1,4,3] @> ARRAY[3,1]</literal></entry>
|
||||
<entry><literal>ARRAY[1,4,3] @> ARRAY[3,1,3]</literal></entry>
|
||||
<entry><literal>t</literal></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry> <literal><@</literal> </entry>
|
||||
<entry>is contained by</entry>
|
||||
<entry><literal>ARRAY[2,7] <@ ARRAY[1,7,4,2,6]</literal></entry>
|
||||
<entry><literal>ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6]</literal></entry>
|
||||
<entry><literal>t</literal></entry>
|
||||
</row>
|
||||
|
||||
@ -12641,8 +12641,10 @@ SELECT NULLIF(value, '(none)') ...
|
||||
</table>
|
||||
|
||||
<para>
|
||||
Array comparisons compare the array contents element-by-element,
|
||||
using the default B-tree comparison function for the element data type.
|
||||
The array ordering operators (<literal><</literal>,
|
||||
<literal>>=</literal>, etc) compare the array contents
|
||||
element-by-element, using the default B-tree comparison function for
|
||||
the element data type, and sort based on the first difference.
|
||||
In multidimensional arrays the elements are visited in row-major order
|
||||
(last subscript varies most rapidly).
|
||||
If the contents of two arrays are equal but the dimensionality is
|
||||
@ -12653,6 +12655,15 @@ SELECT NULLIF(value, '(none)') ...
|
||||
number of dimensions or subscript ranges were different.)
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The array containment operators (<literal><@</literal>
|
||||
and <literal>@></literal>) consider one array to be contained in
|
||||
another one if each of its elements appears in the other one.
|
||||
Duplicates are not treated specially, thus <literal>ARRAY[1]</literal>
|
||||
and <literal>ARRAY[1,1]</literal> are each considered to contain the
|
||||
other.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
See <xref linkend="arrays"> for more details about array operator
|
||||
behavior. See <xref linkend="indexes-types"> for more details about
|
||||
|
Loading…
x
Reference in New Issue
Block a user