From: | Dimitri Fontaine <dfontaine(at)hi-media(dot)com> |
---|---|
To: | Marios Vodas <mvodas(at)gmail(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: gist access methods parameter types |
Date: | 2010-09-27 14:03:55 |
Message-ID: | 87ocbj8er8.fsf@hi-media-techno.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Marios Vodas <mvodas(at)gmail(dot)com> writes:
> I am implementing consistent, union, compress, decompress, penalty,
> picksplit and same.
[…]
> The problem is that some of these methods take as input parameters
> the d_type and some the struct type that I internally implemented in
> c (which will be saved to the tree).
That shouldn't be a problem as you're going to implement the functions
in C too, I guess. After all an index is all about performances.
http://www.postgresql.org/docs/current/static/gist-implementation.html
http://wiki.postgresql.org/wiki/Image:Prato_2008_prefix.pdf
Please not that the documentation here has been true in 8.3 too but
didn't get backpatched there. Maybe we should consider?
> If I understand correctly consistent and compress are the only
> functions that will have input parameter of d_type. The others will
> have my c internal type.
> Is this correct?
Well how is your C coded type different from d_type and why?
> Something else, will a non-leaf node have one entry that will be
> produced by union? I am asking because I want the leaf node entries
> to be of different type from non-leaf node entries (the difference
> between them is that non-leaf entry will not keep the id attribute).
Non-leaf nodes will contain a page full of entries all consistent with
each-other and sharing a common union. You can have leaf nodes entries
of a different type with the STORAGE option of the CREATE OPERATOR CLASS
command here, and the compress() and decompress() methods:
http://www.postgresql.org/docs/current/static/sql-createopclass.html
Then you have to take care about that in several of the functions in the
GiST API, in particular in consistent, see the GIST_LEAF(entry) macro.
Your main source of documentation at this point lies in the source of
the different GiST implementations, see ip4r, period, prefix and some
more.
Regards,
--
dim
From | Date | Subject | |
---|---|---|---|
Next Message | Shigeru HANADA | 2010-09-27 14:05:07 | Re: patch: SQL/MED(FDW) DDL |
Previous Message | Robert Haas | 2010-09-27 13:45:57 | Re: A small update for postgresql.conf.sample |