diff options
Diffstat (limited to 'src/backend/storage/lmgr/lock.c')
| -rw-r--r-- | src/backend/storage/lmgr/lock.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index 577b420797..3eb0104827 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.89 2001/06/22 00:04:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.90 2001/06/27 23:31:39 tgl Exp $ * * NOTES * Outside modules can create a lock table and acquire/release @@ -40,6 +40,13 @@ #include "utils/memutils.h" #include "utils/ps_status.h" + +/* This configuration variable is used to set the lock table size */ +int max_locks_per_xact; /* set by guc.c */ + +#define NLOCKENTS(maxBackends) (max_locks_per_xact * (maxBackends)) + + static int WaitOnLock(LOCKMETHOD lockmethod, LOCKMODE lockmode, LOCK *lock, HOLDER *holder); static void LockCountMyLocks(SHMEM_OFFSET lockOffset, PROC *proc, @@ -1388,6 +1395,7 @@ int LockShmemSize(int maxBackends) { int size = 0; + long max_table_size = NLOCKENTS(maxBackends); size += MAXALIGN(sizeof(PROC_HDR)); /* ProcGlobal */ size += maxBackends * MAXALIGN(sizeof(PROC)); /* each MyProc */ @@ -1395,12 +1403,12 @@ LockShmemSize(int maxBackends) * lockMethodTable->ctl */ /* lockHash table */ - size += hash_estimate_size(NLOCKENTS(maxBackends), + size += hash_estimate_size(max_table_size, SHMEM_LOCKTAB_KEYSIZE, SHMEM_LOCKTAB_DATASIZE); /* holderHash table */ - size += hash_estimate_size(NLOCKENTS(maxBackends), + size += hash_estimate_size(max_table_size, SHMEM_HOLDERTAB_KEYSIZE, SHMEM_HOLDERTAB_DATASIZE); |
