diff options
| author | Teodor Sigaev <teodor@sigaev.ru> | 2005-06-27 12:45:23 +0000 |
|---|---|---|
| committer | Teodor Sigaev <teodor@sigaev.ru> | 2005-06-27 12:45:23 +0000 |
| commit | e8cab5fe49c45e9dc2990e36ecd6a42bf01dc4bc (patch) | |
| tree | b4950c8a1550ce26aa276a157b8680732ae3ac9b /src/include/access/gistscan.h | |
| parent | c3be085ab7a21e01f530357d962fa22f74a637ef (diff) | |
| download | postgresql-e8cab5fe49c45e9dc2990e36ecd6a42bf01dc4bc.tar.gz | |
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
Diffstat (limited to 'src/include/access/gistscan.h')
| -rw-r--r-- | src/include/access/gistscan.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/include/access/gistscan.h b/src/include/access/gistscan.h index 12a7a0ea73..8920f023fa 100644 --- a/src/include/access/gistscan.h +++ b/src/include/access/gistscan.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/access/gistscan.h,v 1.26 2004/12/31 22:03:21 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/access/gistscan.h,v 1.27 2005/06/27 12:45:22 teodor Exp $ * *------------------------------------------------------------------------- */ @@ -15,13 +15,14 @@ #define GISTSCAN_H #include "access/relscan.h" +#include "access/xlogdefs.h" extern Datum gistbeginscan(PG_FUNCTION_ARGS); extern Datum gistrescan(PG_FUNCTION_ARGS); extern Datum gistmarkpos(PG_FUNCTION_ARGS); extern Datum gistrestrpos(PG_FUNCTION_ARGS); extern Datum gistendscan(PG_FUNCTION_ARGS); -extern void gistadjscans(Relation r, int op, BlockNumber blkno, OffsetNumber offnum); +extern void gistadjscans(Relation r, int op, BlockNumber blkno, OffsetNumber offnum, XLogRecPtr newlsn, XLogRecPtr oldlsn); extern void ReleaseResources_gist(void); #endif /* GISTSCAN_H */ |
