summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2008-09-16 01:56:35 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2008-09-16 01:56:35 +0000
commitf13a6f5abbf53a3b0b311287eca1c5548a5a6c6c (patch)
treeecbadbdbe00c02d761b0673db6fa7fb445bada5f /src
parent015f168f546afbcf1bbd77b3a2200f484993fe26 (diff)
Widen the nLocks counts in local lock tables from int to int64. This
forestalls potential overflow when the same table (or other object, but usually tables) is accessed by very many successive queries within a single transaction. Per report from Michael Milligan. Back-patch to 8.0, which is as far back as the patch conveniently applies. There have been no reports of overflow in pre-8.3 releases, but clearly the risk existed all along. (Michael's report suggests that 8.3 may consume lock counts faster than prior releases, but with no test case to look at it's hard to be sure about that. Widening the counts seems a good future-proofing measure in any event.)
Diffstat (limited to 'src')
-rw-r--r--src/include/storage/lock.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h
index f2d7aaecd7b..9ec5a8dcc91 100644
--- a/src/include/storage/lock.h
+++ b/src/include/storage/lock.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/storage/lock.h,v 1.112 2008/01/08 23:18:51 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/storage/lock.h,v 1.112.2.1 2008/09/16 01:56:35 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -393,7 +393,7 @@ typedef struct LOCALLOCKOWNER
* Must use a forward struct reference to avoid circularity.
*/
struct ResourceOwnerData *owner;
- int nLocks; /* # of times held by this owner */
+ int64 nLocks; /* # of times held by this owner */
} LOCALLOCKOWNER;
typedef struct LOCALLOCK
@@ -405,7 +405,7 @@ typedef struct LOCALLOCK
LOCK *lock; /* associated LOCK object in shared mem */
PROCLOCK *proclock; /* associated PROCLOCK object in shmem */
uint32 hashcode; /* copy of LOCKTAG's hash value */
- int nLocks; /* total number of times lock is held */
+ int64 nLocks; /* total number of times lock is held */
int numLockOwners; /* # of relevant ResourceOwners */
int maxLockOwners; /* allocated size of array */
LOCALLOCKOWNER *lockOwners; /* dynamically resizable array */