OSDN Git Service

Implement "fastupdate" support for GIN indexes, in which we try to accumulate
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 24 Mar 2009 20:17:18 +0000 (20:17 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 24 Mar 2009 20:17:18 +0000 (20:17 +0000)
commitff301d6e690bb5581502ea3d8591a1600fd87acc
tree9fd8b2fa00cf35f8b2e66b0960e7e9ca90dfaa66
parent9987f66001ef7f59dd8f8c92295732dba5507c4f
Implement "fastupdate" support for GIN indexes, in which we try to accumulate
multiple index entries in a holding area before adding them to the main index
structure.  This helps because bulk insert is (usually) significantly faster
than retail insert for GIN.

This patch also removes GIN support for amgettuple-style index scans.  The
API defined for amgettuple is difficult to support with fastupdate, and
the previously committed partial-match feature didn't really work with
it either.  We might eventually figure a way to put back amgettuple
support, but it won't happen for 8.4.

catversion bumped because of change in GIN's pg_am entry, and because
the format of GIN indexes changed on-disk (there's a metapage now,
and possibly a pending list).

Teodor Sigaev
30 files changed:
doc/src/sgml/gin.sgml
doc/src/sgml/indexam.sgml
doc/src/sgml/ref/create_index.sgml
doc/src/sgml/ref/vacuum.sgml
doc/src/sgml/textsearch.sgml
src/backend/access/common/reloptions.c
src/backend/access/gin/Makefile
src/backend/access/gin/ginbulk.c
src/backend/access/gin/gindatapage.c
src/backend/access/gin/ginfast.c [new file with mode: 0644]
src/backend/access/gin/ginget.c
src/backend/access/gin/gininsert.c
src/backend/access/gin/ginutil.c
src/backend/access/gin/ginvacuum.c
src/backend/access/gin/ginxlog.c
src/backend/access/gist/gistvacuum.c
src/backend/access/hash/hash.c
src/backend/access/index/indexam.c
src/backend/access/nbtree/nbtree.c
src/backend/catalog/index.c
src/backend/commands/analyze.c
src/backend/commands/vacuum.c
src/backend/commands/vacuumlazy.c
src/backend/nodes/tidbitmap.c
src/include/access/genam.h
src/include/access/gin.h
src/include/catalog/catversion.h
src/include/catalog/pg_am.h
src/include/catalog/pg_proc.h
src/include/nodes/tidbitmap.h