mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Add support for index-only scans in GiST.
This adds a new GiST opclass method, 'fetch', which is used to reconstruct the original Datum from the value stored in the index. Also, the 'canreturn' index AM interface function gains a new 'attno' argument. That makes it possible to use index-only scans on a multi-column index where some of the opclasses support index-only scans but some do not. This patch adds support in the box and point opclasses. Other opclasses can added later as follow-on patches (btree_gist would be particularly interesting). Anastasia Lubennikova, with additional fixes and modifications by me.
This commit is contained in:
@ -1404,6 +1404,14 @@ initGISTstate(Relation index)
|
||||
else
|
||||
giststate->distanceFn[i].fn_oid = InvalidOid;
|
||||
|
||||
/* opclasses are not required to provide a Fetch method */
|
||||
if (OidIsValid(index_getprocid(index, i + 1, GIST_FETCH_PROC)))
|
||||
fmgr_info_copy(&(giststate->fetchFn[i]),
|
||||
index_getprocinfo(index, i + 1, GIST_FETCH_PROC),
|
||||
scanCxt);
|
||||
else
|
||||
giststate->fetchFn[i].fn_oid = InvalidOid;
|
||||
|
||||
/*
|
||||
* If the index column has a specified collation, we should honor that
|
||||
* while doing comparisons. However, we may have a collatable storage
|
||||
|
Reference in New Issue
Block a user