[HACKERS] Quick pointer required re indexing geometry

2009-08-11 Thread Paul Matthews
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?

Thanks.



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


Re: [HACKERS] Quick pointer required re indexing geometry

2009-08-11 Thread Dimitri Fontaine
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


Re: [HACKERS] Quick pointer required re indexing geometry

2009-08-11 Thread Paul Matthews




Dimitri Fontaine wrote:

  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?
  

Yes

  Without index support (but needed anyway), you implement your code in a
C module then make it visible from SQL.  ...cut... 
COMMENT ON OPERATOR @(box, point) IS 'box contains point?';
  

All done but the comment part :-) 

  
Now for adding support for index lookups, you have to see documentation
about OPERATOR CLASS and OPERATOR FAMILY.
Hope this helps, regards,
  

Thanks overlooked CLASS and FAMILY in my hurry. Hopefully that is where
the problem is.

What I am hoping to do is provide a "real" patch to make box@point
available for all. But we can get to that later. A lot of code in
pgsql, but not much in the way of comments.