Commit f4516f87 authored by Teodor Sigaev's avatar Teodor Sigaev

Small fixes

parent 3f558e3d
$PostgreSQL: pgsql/src/backend/access/gist/README,v 1.2 2005/09/15 17:44:27 neilc Exp $ $PostgreSQL: pgsql/src/backend/access/gist/README,v 1.3 2005/09/16 14:40:54 teodor Exp $
This directory contains an implementation of GiST indexing for Postgres. This directory contains an implementation of GiST indexing for Postgres.
...@@ -21,7 +21,9 @@ The current implementation of GiST supports: ...@@ -21,7 +21,9 @@ The current implementation of GiST supports:
* Concurrency * Concurrency
* Recovery support via WAL logging * Recovery support via WAL logging
The support for concurrency implemented in PostgreSQL was developed based on the paper "Access Methods for Next-Generation Database Systems" by Marcel Kornaker: The support for concurrency implemented in PostgreSQL was developed based on
the paper "Access Methods for Next-Generation Database Systems" by
Marcel Kornaker:
http://www.sai.msu.su/~megera/postgres/gist/papers/concurrency/access-methods-for-next-generation.pdf.gz http://www.sai.msu.su/~megera/postgres/gist/papers/concurrency/access-methods-for-next-generation.pdf.gz
...@@ -31,11 +33,11 @@ The original algorithms were modified in several ways: ...@@ -31,11 +33,11 @@ The original algorithms were modified in several ways:
algorithm was considerably changed, because in PostgreSQL function search algorithm was considerably changed, because in PostgreSQL function search
should return one tuple (next), not all tuples at once. Also, it should should return one tuple (next), not all tuples at once. Also, it should
release page locks between calls. release page locks between calls.
* Since we added support for variable length keys, it's not possible to guarantee * Since we added support for variable length keys, it's not possible to
enough free space for all keys on pages after splitting. User defined function guarantee enough free space for all keys on pages after splitting. User
picksplit doesn't have information about size of tuples (each tuple may defined function picksplit doesn't have information about size of tuples
contain several keys as in multicolumn index while picksplit could work with (each tuple may contain several keys as in multicolumn index while picksplit
only one key) and pages. could work with only one key) and pages.
* We modified original INSERT algorithm for performance reason. In particular, * We modified original INSERT algorithm for performance reason. In particular,
it is now a single-pass algorithm. it is now a single-pass algorithm.
* Since the papers were theoretical, some details were omitted and we * Since the papers were theoretical, some details were omitted and we
...@@ -197,7 +199,7 @@ placetopage(page, keysarray) ...@@ -197,7 +199,7 @@ placetopage(page, keysarray)
if ( no space left on page ) if ( no space left on page )
keysarray = pageSplit(page, [ extract_keys(page), keysarray]) keysarray = pageSplit(page, [ extract_keys(page), keysarray])
last page in chain gets old NSN, last page in chain gets old NSN,
original and others - new NSN from current LSN original and others - new NSN equals to LSN
if ( page is root ) if ( page is root )
make new root with keysarray make new root with keysarray
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment