Hi,

Paul Matthews <p...@netspace.net.au> writes:
> Witting a box@>point function easy. Having a spot of trouble trying to
> figure out where and how to graft this into the GiST stuff. Could
> someone please point me in the general direction?

You want index support for it, I suppose?

Without index support (but needed anyway), you implement your code in a
C module then make it visible from SQL. I'm not sure you're asking help
for the C part so don't expand, please ask more if needed:

CREATE OR REPLACE FUNCTION box_contains_point(box, point)
RETURNS bool
AS 'MODULE_PATHNAME'
LANGUAGE 'C' IMMUTABLE STRICT;

CREATE OPERATOR @> (
        LEFTARG    = box,
        RIGHTARG   = point,
        PROCEDURE  = box_contains_point,
        COMMUTATOR = '<@',
        RESTRICT   = contsel,
        JOIN       = contjoinsel
);
COMMENT ON OPERATOR @>(box, point) IS 'box contains point?';


Now for adding support for index lookups, you have to see documentation
about OPERATOR CLASS and OPERATOR FAMILY. I guess you need to make a
family out of point and box if none already exists, add the @> operator
there and point to your function.

I'm unclear if you need to add it to an OPERATOR CLASS too and which, so
I won't risk into writing the commands. Cross datatype indexing support,
as far as I've understood, is tied together with operator families.

Hope this helps, regards,
-- 
dim

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to