mirror of
https://github.com/postgres/postgres.git
synced 2025-07-18 17:42:25 +03:00
Add built-in userlock manipulation functions to replace the former
contrib functionality. Along the way, remove the USER_LOCKS configuration symbol, since it no longer makes any sense to try to compile that out. No user documentation yet ... mmoncure has promised to write some. Thanks to Abhijit Menon-Sen for creating a first draft to work from.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
$PostgreSQL: pgsql/src/backend/storage/lmgr/README,v 1.20 2006/07/23 23:08:46 tgl Exp $
|
||||
$PostgreSQL: pgsql/src/backend/storage/lmgr/README,v 1.21 2006/09/18 22:40:36 tgl Exp $
|
||||
|
||||
|
||||
LOCKING OVERVIEW
|
||||
@ -48,7 +48,7 @@ The rest of this README file discusses the regular lock manager in detail.
|
||||
LOCK DATA STRUCTURES
|
||||
|
||||
Lock methods describe the overall locking behavior. Currently there are
|
||||
two lock methods: DEFAULT and USER. (USER locks are non-blocking.)
|
||||
two lock methods: DEFAULT and USER.
|
||||
|
||||
Lock modes describe the type of the lock (read/write or shared/exclusive).
|
||||
In principle, each lock method can have its own set of lock modes with
|
||||
@ -502,11 +502,6 @@ level by someone.
|
||||
User locks and normal locks are completely orthogonal and they don't
|
||||
interfere with each other.
|
||||
|
||||
User locks are always non blocking, therefore they are never acquired if
|
||||
already held by another process. They must be released explicitly by the
|
||||
application but they are released automatically when a backend terminates.
|
||||
|
||||
The lockmode parameter can have the same values as for normal locks although
|
||||
probably only ExclusiveLock can have some practical use.
|
||||
|
||||
DZ - 22 Nov 1997
|
||||
User locks are always held as session locks, so that they are not released at
|
||||
transaction end. They must be released explicitly by the application --- but
|
||||
they are released automatically when a backend terminates.
|
||||
|
@ -12,7 +12,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/storage/lmgr/deadlock.c,v 1.41 2006/07/23 23:08:46 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/storage/lmgr/deadlock.c,v 1.42 2006/09/18 22:40:36 tgl Exp $
|
||||
*
|
||||
* Interface:
|
||||
*
|
||||
@ -873,9 +873,11 @@ DescribeLockTag(StringInfo buf, const LOCKTAG *lock)
|
||||
break;
|
||||
case LOCKTAG_USERLOCK:
|
||||
appendStringInfo(buf,
|
||||
_("user lock [%u,%u]"),
|
||||
_("user lock [%u,%u,%u,%u]"),
|
||||
lock->locktag_field1,
|
||||
lock->locktag_field2);
|
||||
lock->locktag_field2,
|
||||
lock->locktag_field3,
|
||||
lock->locktag_field4);
|
||||
break;
|
||||
default:
|
||||
appendStringInfo(buf,
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/storage/lmgr/lock.c,v 1.172 2006/08/27 19:14:34 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/storage/lmgr/lock.c,v 1.173 2006/09/18 22:40:36 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* A lock table is a shared memory hash table. When
|
||||
@ -127,8 +127,6 @@ static const LockMethodData default_lockmethod = {
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef USER_LOCKS
|
||||
|
||||
static const LockMethodData user_lockmethod = {
|
||||
AccessExclusiveLock, /* highest valid lock mode number */
|
||||
false,
|
||||
@ -141,17 +139,13 @@ static const LockMethodData user_lockmethod = {
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* USER_LOCKS */
|
||||
|
||||
/*
|
||||
* map from lock method id to the lock table data structures
|
||||
*/
|
||||
static const LockMethod LockMethods[] = {
|
||||
NULL,
|
||||
&default_lockmethod,
|
||||
#ifdef USER_LOCKS
|
||||
&user_lockmethod
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user