2014-03-18 18:47 GMT+04:00 Robert Haas
<robertmhaas@gmail.com>
> If the fetch() is specified by the developer, then using it, algorithm can
> retrieve the data directly to output areas at this stage, without reference
> to the heap.
This seems to be the crux of your proposal, but it seems vague: what
exactly do you mean by "retrieve the data directly to output areas"?
What data are you going to retrieve and where are you going to put it?
I meant Datum that storages in Gist-tree nodes. Now gistgettuple() returns xs_ctup.t_self (item pointer). I'm going to add index-only scan functionality: gistsettuple() will return pointer and Datum itself as xs_itup . So queue will contain both the pointer and the Datum. If visibilitymap_test returns true then Datum from xs_itup would be added into queue. Otherwise page must be scanned.
Another question to consider is: which operator classes do you
anticipate that this will work for and which ones do you anticipate
that it will not work for? Any operator class that lossifies that
input data before storing it in the index is presumably doomed, but
which ones do that, and which do not?
about amcanreturn:
I'm going to create function gistcanreturn() = If fetch() is defined for all indexed columns?
And last point of my project is to implement fetch() for existing opclasses based on GIST.
--
Best regards,
Lubennikova Anastasia