postgresql/src/backend
Tom Lane 27336e4f7a Repair race condition introduced into heap_update() in 7.1 ---
PageGetFreeSpace() was being called while not holding the buffer lock, which
not only could yield a garbage answer, but even if it's the right answer there
might be less space available after we reacquire the buffer lock.

Also repair potential deadlock introduced by my recent performance improvement
in RelationGetBufferForTuple(): it was possible for two heap_updates to try to
lock two buffers in opposite orders.  The fix creates a global rule that
buffers of a single heap relation should be locked in decreasing block number
order.  Currently, this only applies to heap_update; VACUUM can get away with
ignoring the rule since it holds exclusive lock on the whole relation anyway.
However, if we try to implement a VACUUM that can run in parallel with other
transactions, VACUUM will also have to obey the lock order rule.
2001-05-16 22:35:12 +00:00
..
access Repair race condition introduced into heap_update() in 7.1 --- 2001-05-16 22:35:12 +00:00
bootstrap Make bootstrap debug messages more readable. Clean up some clutter. 2001-05-12 01:48:49 +00:00
catalog Re-add pg_index.indhaskeytype. 2001-05-15 03:49:35 +00:00
commands Remove unused tables pg_variable, pg_inheritproc, pg_ipl tables. Initdb 2001-05-14 20:30:21 +00:00
executor Remove unnecessary EvalPlanQual support code --- since this plan node 2001-05-15 16:11:58 +00:00
lib Remove dashes in comments that don't need them, rewrap with pgindent. 2001-03-22 06:16:21 +00:00
libpq Remove error report from pq_endmessage when pq_putmessage fails. The 2001-04-16 01:46:57 +00:00
main Remove useless setuid() call, instead add a check that real and effective 2001-04-21 18:29:29 +00:00
nodes Rewrite of planner statistics-gathering code. ANALYZE is now available as 2001-05-07 00:43:27 +00:00
optimizer Current implementation of FOR UPDATE has no hope of working correctly 2001-05-14 20:25:00 +00:00
parser Remove unused tables pg_variable, pg_inheritproc, pg_ipl tables. Initdb 2001-05-14 20:30:21 +00:00
port Add missing dlfcn.h includes. Fix "" vs <>. 2001-05-15 16:55:27 +00:00
postmaster Add extern int optreset declaration, per bug report from <info@decc.nl>. 2001-04-19 19:09:23 +00:00
regex pgindent run. Make it all clean. 2001-03-22 04:01:46 +00:00
rewrite Permission checking wasn't quite right for insert/update/delete rules, 2001-05-03 21:16:48 +00:00
storage Modify RelationGetBufferForTuple() so that we only do lseek and lock 2001-05-12 19:58:28 +00:00
tcop Rewrite of planner statistics-gathering code. ANALYZE is now available as 2001-05-07 00:43:27 +00:00
tioga Remove dashes in comments that don't need them, rewrap with pgindent. 2001-03-22 06:16:21 +00:00
utils Small include file fix for pg_variabie.h 2001-05-14 22:06:41 +00:00
Makefile Send 'cd' output to /dev/null. 2001-04-23 20:27:55 +00:00