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:
@ -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><></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 < 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>
|
||||
|
Reference in New Issue
Block a user