]> granicus.if.org Git - postgresql/commit
Concurrency for GiST
authorTeodor Sigaev <teodor@sigaev.ru>
Mon, 27 Jun 2005 12:45:23 +0000 (12:45 +0000)
committerTeodor Sigaev <teodor@sigaev.ru>
Mon, 27 Jun 2005 12:45:23 +0000 (12:45 +0000)
commite8cab5fe49c45e9dc2990e36ecd6a42bf01dc4bc
treeb4950c8a1550ce26aa276a157b8680732ae3ac9b
parentc3be085ab7a21e01f530357d962fa22f74a637ef
Concurrency for GiST
- full concurrency for insert/update/select/vacuum:
        - select and vacuum never locks more than one page simultaneously
        - select (gettuple) hasn't any lock across it's calls
        - insert never locks more than two page simultaneously:
                - during search of leaf to insert it locks only one page
                  simultaneously
                - while walk upward to the root it locked only parent (may be
                  non-direct parent) and child. One of them X-lock, another may
                  be S- or X-lock
- 'vacuum full' locks index
- improve gistgetmulti
- simplify XLOG records

Fix bug in index_beginscan_internal: LockRelation may clean
  rd_aminfo structure, so move GET_REL_PROCEDURE after LockRelation
12 files changed:
src/backend/access/gist/gist.c
src/backend/access/gist/gistget.c
src/backend/access/gist/gistscan.c
src/backend/access/gist/gistutil.c
src/backend/access/gist/gistvacuum.c
src/backend/access/gist/gistxlog.c
src/backend/access/index/indexam.c
src/include/access/gist.h
src/include/access/gist_private.h
src/include/access/gistscan.h
src/include/catalog/catversion.h
src/include/catalog/pg_am.h