postgresql/src/backend
Heikki Linnakangas ac4ab97ec0 Fix race condition in GIN posting tree page deletion.
If a page is deleted, and reused for something else, just as a search is
following a rightlink to it from its left sibling, the search would continue
scanning whatever the new contents of the page are. That could lead to
incorrect query results, or even something more curious if the page is
reused for a different kind of a page.

To fix, modify the search algorithm to lock the next page before releasing
the previous one, and refrain from deleting pages from the leftmost branch
of the tree.

Add a new Concurrency section to the README, explaining why this works.
There is a lot more one could say about concurrency in GIN, but that's for
another patch.

Backpatch to all supported versions.
2013-11-08 22:21:42 +02:00
..
access Fix race condition in GIN posting tree page deletion. 2013-11-08 22:21:42 +02:00
bootstrap Prevent memory leaks from accumulating across printtup() calls. 2013-11-03 11:33:05 -05:00
catalog Add the notion of REPLICA IDENTITY for a table. 2013-11-08 12:30:43 -05:00
commands Add the notion of REPLICA IDENTITY for a table. 2013-11-08 12:30:43 -05:00
executor Prevent display of dropped columns in row constraint violation messages. 2013-11-07 14:41:36 -05:00
foreign Arrange to cache FdwRoutine structs in foreign tables' relcache entries. 2013-03-06 23:48:09 -05:00
lib Use improved vsnprintf calling logic in more places. 2013-10-24 21:43:57 -04:00
libpq Add large object functions catering to SQL callers. 2013-10-27 22:56:54 -04:00
main Renovate display of non-ASCII messages on Windows. 2013-06-26 11:17:33 -04:00
nodes Add the notion of REPLICA IDENTITY for a table. 2013-11-08 12:30:43 -05:00
optimizer Make contain_volatile_functions/contain_mutable_functions look into SubLinks. 2013-11-08 11:36:57 -05:00
parser Add the notion of REPLICA IDENTITY for a table. 2013-11-08 12:30:43 -05:00
po Translation updates 2013-10-07 16:51:52 -04:00
port Remove IRIX port. 2013-10-18 08:14:21 -04:00
postmaster Increase the number of different values used when seeding random(). 2013-10-24 17:00:18 +03:00
regex Fix regex match failures for backrefs combined with non-greedy quantifiers. 2013-07-18 21:22:37 -04:00
replication Fix typo in comment. 2013-09-03 13:17:09 +03:00
rewrite Fix breakage of MV column name list usage. 2013-11-04 14:31:07 -06:00
snowball Update copyrights for 2013 2013-01-01 17:15:01 -05:00
storage Make LOCK_PRINT & PROCLOCK_PRINT expand to ((void) 0) when not in use. 2013-11-07 19:07:48 -05:00
tcop Use appendStringInfoString instead of appendStringInfo where possible. 2013-10-31 10:55:59 -04:00
tsearch pgindent run for release 9.3 2013-05-29 16:58:43 -04:00
utils Add the notion of REPLICA IDENTITY for a table. 2013-11-08 12:30:43 -05:00
.gitignore Add gitignore for mingw/cygwin build outputs 2011-06-09 18:11:47 +02:00
Makefile Move relpath() to libpgcommon 2013-02-21 22:46:17 -03:00
common.mk Remove maintainer-check target, fold into normal build 2013-10-10 20:11:56 -04:00
nls.mk Add libpgcommon to backend gettext source files 2013-10-19 13:49:05 -04:00