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.
Showing
- doc/src/sgml/catalogs.sgml 2 additions, 2 deletionsdoc/src/sgml/catalogs.sgml
- doc/src/sgml/gist.sgml 70 additions, 3 deletionsdoc/src/sgml/gist.sgml
- doc/src/sgml/indexam.sgml 8 additions, 7 deletionsdoc/src/sgml/indexam.sgml
- src/backend/access/gist/gist.c 8 additions, 0 deletionssrc/backend/access/gist/gist.c
- src/backend/access/gist/gistget.c 64 additions, 2 deletionssrc/backend/access/gist/gistget.c
- src/backend/access/gist/gistproc.c 37 additions, 0 deletionssrc/backend/access/gist/gistproc.c
- src/backend/access/gist/gistscan.c 18 additions, 0 deletionssrc/backend/access/gist/gistscan.c
- src/backend/access/gist/gistutil.c 63 additions, 1 deletionsrc/backend/access/gist/gistutil.c
- src/backend/access/index/indexam.c 8 additions, 4 deletionssrc/backend/access/index/indexam.c
- src/backend/access/spgist/spgscan.c 1 addition, 0 deletionssrc/backend/access/spgist/spgscan.c
- src/backend/optimizer/path/indxpath.c 12 additions, 10 deletionssrc/backend/optimizer/path/indxpath.c
- src/backend/optimizer/util/plancat.c 2 additions, 1 deletionsrc/backend/optimizer/util/plancat.c
- src/include/access/genam.h 1 addition, 1 deletionsrc/include/access/genam.h
- src/include/access/gist.h 2 additions, 1 deletionsrc/include/access/gist.h
- src/include/access/gist_private.h 8 additions, 1 deletionsrc/include/access/gist_private.h
- src/include/catalog/catversion.h 1 addition, 1 deletionsrc/include/catalog/catversion.h
- src/include/catalog/pg_am.h 1 addition, 1 deletionsrc/include/catalog/pg_am.h
- src/include/catalog/pg_amproc.h 2 additions, 0 deletionssrc/include/catalog/pg_amproc.h
- src/include/catalog/pg_proc.h 8 additions, 2 deletionssrc/include/catalog/pg_proc.h
- src/include/nodes/relation.h 2 additions, 1 deletionsrc/include/nodes/relation.h
Loading
Please register or sign in to comment