<!-- doc/src/sgml/btree-gin.sgml -->

<sect1 id="btree-gin" xreflabel="btree_gin">
 <title>btree_gin</title>

 <indexterm zone="btree-gin">
  <primary>btree_gin</primary>
 </indexterm>

 <para>
  <filename>btree_gin</filename> provides sample GIN operator classes that
  implement B-tree equivalent behavior for the data types
  <type>int2</type>, <type>int4</type>, <type>int8</type>, <type>float4</type>,
  <type>float8</type>, <type>timestamp with time zone</type>,
  <type>timestamp without time zone</type>, <type>time with time zone</type>,
  <type>time without time zone</type>, <type>date</type>, <type>interval</type>,
  <type>oid</type>, <type>money</type>, <type>"char"</type>,
  <type>varchar</type>, <type>text</type>, <type>bytea</type>, <type>bit</type>,
  <type>varbit</type>, <type>macaddr</type>, <type>macaddr8</type>, <type>inet</type>,
  <type>cidr</type>, and all <type>enum</type> types.
 </para>

 <para>
  In general, these operator classes will not outperform the equivalent
  standard B-tree index methods, and they lack one major feature of the
  standard B-tree code: the ability to enforce uniqueness.  However,
  they are useful for GIN testing and as a base for developing other
  GIN operator classes.  Also, for queries that test both a GIN-indexable
  column and a B-tree-indexable column, it might be more efficient to create
  a multicolumn GIN index that uses one of these operator classes than to create
  two separate indexes that would have to be combined via bitmap ANDing.
 </para>

 <sect2>
  <title>Example Usage</title>

<programlisting>
CREATE TABLE test (a int4);
-- create index
CREATE INDEX testidx ON test USING GIN (a);
-- query
SELECT * FROM test WHERE a &lt; 10;
</programlisting>

 </sect2>

 <sect2>
  <title>Authors</title>

  <para>
   Teodor Sigaev (<email>teodor@stack.net</email>) and
   Oleg Bartunov (<email>oleg@sai.msu.su</email>).  See
   <ulink url="http://www.sai.msu.su/~megera/oddmuse/index.cgi/Gin"></ulink>
   for additional information.
  </para>

 </sect2>

</sect1>
