role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>+</literal> <type>integer</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Adds element to end of array.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>+</literal> <type>integer[]</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Concatenates the arrays.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>-</literal> <type>integer</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Removes entries matching the right argument from the array.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>-</literal> <type>integer[]</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Removes elements of the right array from the left array.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>|</literal> <type>integer</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Computes the union of the arguments.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>|</literal> <type>integer[]</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Computes the union of the arguments.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>&</literal> <type>integer[]</type>
<returnvalue>integer[]</returnvalue>
</para>
<para>
Computes the intersection of the arguments.
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>integer[]</type> <literal>@@</literal> <type>query_int</type>
<returnvalue>boolean</returnvalue>
</para>
<para>
Does array satisfy query? (see below)
</para></entry>
</row>
<row>
<entry role="func_table_entry"><para role="func_signature">
<type>query_int</type> <literal>~~</literal> <type>integer[]</type>
<returnvalue>boolean</returnvalue>
</para>
<para>
Does array satisfy query? (commutator of <literal>@@</literal>)
</para></entry>
</row>
</tbody>
</tgroup>
</table>
<para>
The operators <literal>&&</literal>, <literal>@></literal> and
<literal><@</literal> are equivalent to <productname>PostgreSQL</productname>'s built-in
operators of the same names, except that they work only on integer arrays
that do not contain nulls, while the built-in operators work for any array
type. This restriction makes them faster than the built-in operators
in many cases.
</para>
<para>
The <literal>@@</literal> and <literal>~~</literal> operators test whether an array
satisfies a <firstterm>query</firstterm>, which is expressed as a value of a
specialized data type <type>query_int</type>. A <firstterm>query</firstterm>
consists of integer values that are checked against the elements of
the array, possibly combined using the operators <literal>&</literal>
(AND), <literal>|</literal> (OR), and <literal>!</literal> (NOT). Parentheses
can be used as needed. For example,
the query <literal>1&(2|3)</literal> matches arrays that contain 1
and also contain either 2 or 3.
</para>
</sect2>