Thread: minimum operators for b-tree, r-tree

minimum operators for b-tree, r-tree

From
elein
Date:
When creating a new data type, what are
the operators absolutely necessary for that
type to particpate in a btree index?

I know you need a "compare" that says = < or >=
so does that mean that those three operators
are the ones required?

If you also know that answer for our implementation
of R-trees that would also be helpful.
I believe it is intersects and overlaps but
it would be nice to get confirmation.

Thanks,
elein
============================================================
elein@varlena.com        Varlena, LLC        www.varlena.com

          PostgreSQL Consulting, Support & Training

PostgreSQL General Bits   http://www.varlena.com/GeneralBits/
=============================================================
I have always depended on the [QA] of strangers.


Re: minimum operators for b-tree, r-tree

From
Joe Conway
Date:
elein wrote:
> When creating a new data type, what are
> the operators absolutely necessary for that
> type to particpate in a btree index?
>
> I know you need a "compare" that says = < or >=
> so does that mean that those three operators
> are the ones required?

I don't remember the details, but here is a link to the pgsql-committers
post from when I submitted a patch to do the same for bytea.

   http://archives.postgresql.org/pgsql-committers/2001-08/msg00108.php
   --------------------------------------------------------------------
   CVSROOT:    /home/projects/pgsql/cvsroot
   Module name:    pgsql
   Changes by:    tgl ( at ) hub ( dot ) org    01/08/13 14:45:36

   Modified files:
    src/backend/utils/adt: selfuncs.c varlena.c
    src/include/catalog: catversion.h pg_amop.h pg_amproc.h
                         pg_opclass.h pg_operator.h pg_proc.h
    src/include/utils: builtins.h

   Log message:
    Add comparison operators and btree indexing support for type
         bytea. From Joe Conway.
   --------------------------------------------------------------------

You could go through cvs web to find the actual diffs, given the date
(13 Aug 2001):
   http://developer.postgresql.org/cvsweb.cgi/pgsql-server/

Joe

Re: minimum operators for b-tree, r-tree

From
Tom Lane
Date:
elein <elein@varlena.com> writes:
> When creating a new data type, what are
> the operators absolutely necessary for that
> type to particpate in a btree index?

You must supply all the operators described in the standard strategy
set:
http://www.postgresql.org/docs/7.4/static/xindex.html#XINDEX-STRATEGIES
plus the support function(s):
http://www.postgresql.org/docs/7.4/static/xindex.html#XINDEX-SUPPORT

The system is not designed to cope with an incomplete opclass, and I'm
not sure it would work if you tried.

BTW, although <> isn't part of a btree opclass it is a good idea to
provide it (and link it to the opclass by making it the negator of =).
There's at least one place in the system that knows about using this.

The way I prefer to handle this stuff for btree is to write a single
three-way comparison function (compare a to b, return +1/0/-1).  This
can be used directly as the btree support function, and then the six
comparison-operator functions are one-line wrappers around it.

            regards, tom lane