1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-07 00:36:50 +03:00

Add btree_gist support for searching on "not equals".

Jeff Davis, with slight editorialization by me.
This commit is contained in:
Robert Haas
2010-08-02 16:26:48 +00:00
parent 98c2383ba5
commit ad17ff95cf
5 changed files with 72 additions and 5 deletions

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gist.sgml,v 1.5 2010/03/17 17:12:31 petere Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/btree-gist.sgml,v 1.6 2010/08/02 16:26:48 rhaas Exp $ -->
<sect1 id="btree-gist">
<title>btree_gist</title>
@ -27,15 +27,51 @@
GiST operator classes.
</para>
<para>
In addition to the typical btree search operators, btree_gist also
provides search operators for <literal>&lt;&gt;</literal> ("not
equals"). This may be useful in combination with an
<link linkend="SQL-CREATETABLE-EXCLUDE">Exclusion Constraint</link>,
as descibed below.
</para>
<sect2>
<title>Example usage</title>
<para>
Simple example using btree_gist instead of btree:
</para>
<programlisting>
CREATE TABLE test (a int4);
-- create index
CREATE INDEX testidx ON test USING gist (a);
-- query
SELECT * FROM test WHERE a &lt; 10;
</programlisting>
<para>
Example using an <link linkend="SQL-CREATETABLE-EXCLUDE">Exclusion
Constraint</link> to enforce the constraint that a cage at a zoo
can contain only one kind of animal:
</para>
<programlisting>
=> CREATE TABLE zoo (
cage INTEGER,
animal TEXT,
EXCLUDE USING gist (cage WITH =, animal WITH <>)
);
=> INSERT INTO zoo VALUES(123, 'zebra');
INSERT 0 1
=> INSERT INTO zoo VALUES(123, 'zebra');
INSERT 0 1
=> INSERT INTO zoo VALUES(123, 'lion');
ERROR: conflicting key value violates exclusion constraint "zoo_cage_animal_excl"
DETAIL: Key (cage, animal)=(123, lion) conflicts with existing key (cage, animal)=(123, zebra).
=> INSERT INTO zoo VALUES(124, 'lion');
INSERT 0 1
</programlisting>
</sect2>