-/* $PostgreSQL: pgsql/contrib/intarray/_int.sql.in,v 1.30 2009/04/05 00:40:35 tgl Exp $ */
+/* $PostgreSQL: pgsql/contrib/intarray/_int.sql.in,v 1.31 2009/06/07 20:09:34 tgl Exp $ */
-- Adjust this setting to control where the objects get created.
SET search_path = public;
-- JOIN = neqjoinsel
--);
---CREATE OPERATOR @> (
--- LEFTARG = _int4,
--- RIGHTARG = _int4,
--- PROCEDURE = _int_contains,
--- COMMUTATOR = '<@',
--- RESTRICT = contsel,
--- JOIN = contjoinsel
---);
+CREATE OPERATOR @> (
+ LEFTARG = _int4,
+ RIGHTARG = _int4,
+ PROCEDURE = _int_contains,
+ COMMUTATOR = '<@',
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
---CREATE OPERATOR <@ (
--- LEFTARG = _int4,
--- RIGHTARG = _int4,
--- PROCEDURE = _int_contained,
--- COMMUTATOR = '@>',
--- RESTRICT = contsel,
--- JOIN = contjoinsel
---);
+CREATE OPERATOR <@ (
+ LEFTARG = _int4,
+ RIGHTARG = _int4,
+ PROCEDURE = _int_contained,
+ COMMUTATOR = '@>',
+ RESTRICT = contsel,
+ JOIN = contjoinsel
+);
-- obsolete:
CREATE OPERATOR @ (
DEFAULT FOR TYPE _int4 USING gist AS
OPERATOR 3 &&,
OPERATOR 6 = (anyarray, anyarray),
- OPERATOR 7 @> (anyarray, anyarray),
- OPERATOR 8 <@ (anyarray, anyarray),
+ OPERATOR 7 @>,
+ OPERATOR 8 <@,
OPERATOR 13 @,
OPERATOR 14 ~,
OPERATOR 20 @@ (_int4, query_int),
AS
OPERATOR 3 &&,
OPERATOR 6 = (anyarray, anyarray),
- OPERATOR 7 @> (anyarray, anyarray),
- OPERATOR 8 <@ (anyarray, anyarray),
+ OPERATOR 7 @>,
+ OPERATOR 8 <@,
OPERATOR 13 @,
OPERATOR 14 ~,
OPERATOR 20 @@ (_int4, query_int),
AS
OPERATOR 3 &&,
OPERATOR 6 = (anyarray, anyarray),
- OPERATOR 7 @> (anyarray, anyarray),
- OPERATOR 8 <@ (anyarray, anyarray),
+ OPERATOR 7 @>,
+ OPERATOR 8 <@,
OPERATOR 13 @,
OPERATOR 14 ~,
OPERATOR 20 @@ (_int4, query_int),
-/* $PostgreSQL: pgsql/contrib/intarray/uninstall__int.sql,v 1.11 2009/04/05 00:40:35 tgl Exp $ */
+/* $PostgreSQL: pgsql/contrib/intarray/uninstall__int.sql,v 1.12 2009/06/07 20:09:34 tgl Exp $ */
-- Adjust this setting to control where the objects get created.
SET search_path = public;
DROP FUNCTION intset(int4);
+DROP OPERATOR <@ (_int4, _int4);
+
+DROP OPERATOR @> (_int4, _int4);
+
DROP OPERATOR ~ (_int4, _int4);
DROP OPERATOR @ (_int4, _int4);
-<!-- $PostgreSQL: pgsql/doc/src/sgml/intarray.sgml,v 1.7 2009/04/05 00:40:35 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/intarray.sgml,v 1.8 2009/06/07 20:09:34 tgl Exp $ -->
<sect1 id="intarray">
<title>intarray</title>
<entry>overlap — <literal>true</> if arrays have at least one common element</entry>
</row>
<row>
- <entry><literal>int[] @ int[]</literal></entry>
+ <entry><literal>int[] @> int[]</literal></entry>
<entry><type>boolean</type></entry>
<entry>contains — <literal>true</> if left array contains right array</entry>
</row>
<row>
- <entry><literal>int[] ~ int[]</literal></entry>
+ <entry><literal>int[] <@ int[]</literal></entry>
<entry><type>boolean</type></entry>
<entry>contained — <literal>true</> if left array is contained in right array</entry>
</row>
</table>
<para>
- The containment operators <literal>@</> and <literal>~</> are functionally
- equivalent to <productname>PostgreSQL</>'s built-in operators
- <literal>@></> and <literal><@</>, respectively, except that
- <literal>@</> and <literal>~</> work only on integer arrays. These
- operator names are deprecated and will eventually be retired. (Notice that
- these names are reversed from the convention formerly followed by the core
- geometric datatypes!)
+ (Before PostgreSQL 8.2, the containment operators <literal>@></> and
+ <literal><@</> were respectively called <literal>@</> and <literal>~</>.
+ These names are still available, but are deprecated and will eventually be
+ retired. Notice that the old names are reversed from the convention
+ formerly followed by the core geometric datatypes!)
+ </para>
+
+ <para>
+ The containment operators <literal>@></> and <literal><@</> are
+ approximately equivalent to <productname>PostgreSQL</>'s built-in operators
+ of the same names, except that they work only on integer arrays while the
+ built-in operators work for any array type. An important difference is
+ that <filename>intarray</>'s operators do not consider an empty array to be
+ contained in anything else. This is consistent with the behavior of
+ GIN-indexed queries, but not with the usual mathematical definition of
+ containment.
</para>
<para>
<para>
<filename>intarray</> provides index support for the
- <literal>&&</>, <literal>@</>, <literal>~</>,
- and <literal>@@</> operators, as well as regular array equality
- and the built-in <literal>@></> and <literal><@</> operators
- (when used on integer arrays).
+ <literal>&&</>, <literal>@></>, <literal><@</>,
+ and <literal>@@</> operators, as well as regular array equality.
</para>
<para>
-<!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.7 2009/05/27 22:12:53 tgl Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.8 2009/06/07 20:09:34 tgl Exp $ -->
<!-- See header comment in release.sgml about typical markup -->
<sect1 id="release-8-4">
</para>
</listitem>
- <listitem>
- <para>
- Remove <filename>contrib/intarray</>'s definitions of the
- <literal><@</> and <literal>@></> operators (Tom)
- </para>
-
- <para>
- This avoids confusion with the equivalent built-in operators.
- If needed, the <filename>contrib/intarray</> implementations
- are still available under their historical names <literal>@</>
- and <literal>~</>.
- </para>
- </listitem>
-
<listitem>
<para>
Make <filename>contrib/pg_standby</> recover all available WAL before