mirror of
https://github.com/postgres/postgres.git
synced 2025-08-31 17:02:12 +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:
@@ -722,11 +722,14 @@ index_vacuum_cleanup(IndexVacuumInfo *info,
|
||||
}
|
||||
|
||||
/* ----------------
|
||||
* index_can_return - does index support index-only scans?
|
||||
* index_can_return
|
||||
*
|
||||
* Does the index access method support index-only scans for the given
|
||||
* column?
|
||||
* ----------------
|
||||
*/
|
||||
bool
|
||||
index_can_return(Relation indexRelation)
|
||||
index_can_return(Relation indexRelation, int attno)
|
||||
{
|
||||
FmgrInfo *procedure;
|
||||
|
||||
@@ -738,8 +741,9 @@ index_can_return(Relation indexRelation)
|
||||
|
||||
GET_REL_PROCEDURE(amcanreturn);
|
||||
|
||||
return DatumGetBool(FunctionCall1(procedure,
|
||||
PointerGetDatum(indexRelation)));
|
||||
return DatumGetBool(FunctionCall2(procedure,
|
||||
PointerGetDatum(indexRelation),
|
||||
Int32GetDatum(attno)));
|
||||
}
|
||||
|
||||
/* ----------------
|
||||
|
Reference in New Issue
Block a user