summaryrefslogtreecommitdiff
path: root/contrib/userlock/README.user_locks
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-09-05 17:20:29 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-09-05 17:20:29 +0000
commitaf7d257e21aae3d75c46977482309b658b3a29d7 (patch)
treecf93e41a5d1c182cc80f5c9122bd34a3d52caf20 /contrib/userlock/README.user_locks
parenta3242fb42cc2b85581a195aa72cf72a1df94b78f (diff)
downloadpostgresql-af7d257e21aae3d75c46977482309b658b3a29d7.tar.gz
Remove contrib modules that have been migrated to pgfoundry: adddepend,
dbase, dbmirror, fulltextindex, mac, userlock; or abandoned: mSQL-interface, tips.
Diffstat (limited to 'contrib/userlock/README.user_locks')
-rw-r--r--contrib/userlock/README.user_locks56
1 files changed, 0 insertions, 56 deletions
diff --git a/contrib/userlock/README.user_locks b/contrib/userlock/README.user_locks
deleted file mode 100644
index 5e61d4eea0..0000000000
--- a/contrib/userlock/README.user_locks
+++ /dev/null
@@ -1,56 +0,0 @@
-User locks, by Massimo Dal Zotto <dz@cs.unitn.it>
-Copyright (C) 1999, Massimo Dal Zotto <dz@cs.unitn.it>
-
-This software is distributed under the GNU General Public License
-either version 2, or (at your option) any later version.
-
-
-This loadable module provides support for user-level long-term cooperative
-locks. For example one can write:
-
- select some_fields, user_write_lock_oid(oid) from table where id='key';
-
-Now if the returned user_write_lock_oid field is 1 you have acquired an
-user lock on the oid of the selected tuple and can now do some long operation
-on it, like let the data being edited by the user.
-If it is 0 it means that the lock has been already acquired by some other
-process and you should not use that item until the other has finished.
-Note that in this case the query returns 0 immediately without waiting on
-the lock. This is good if the lock is held for long time.
-After you have finished your work on that item you can do:
-
- update table set some_fields where id='key';
- select user_write_unlock_oid(oid) from table where id='key';
-
-You can also ignore the failure and go ahead but this could produce conflicts
-or inconsistent data in your application. User locks require a cooperative
-behavior between users. User locks don't interfere with the normal locks
-used by Postgres for transaction processing.
-
-This could also be done by setting a flag in the record itself but in
-this case you have the overhead of the updates to the records and there
-could be some locks not released if the backend or the application crashes
-before resetting the lock flag.
-It could also be done with a begin/end block but in this case the entire
-table would be locked by Postgres and it is not acceptable to do this for
-a long period because other transactions would block completely.
-
-The generic user locks use two values, group and id, to identify a lock.
-Each of these are 32-bit integers.
-
-The oid user lock functions, which take only an OID as argument, store the
-OID as "id" with a group equal to 0.
-
-The meaning of group and id is defined by the application. The user
-lock code just takes two numbers and tells you if the corresponding
-entity has been successfully locked. What this means is up to you.
-
-My suggestion is that you use the group to identify an area of your
-application and the id to identify an object in this area.
-
-In all cases, user locks are local to individual databases within an
-installation.
-
-Note also that a process can acquire more than one lock on the same entity
-and it must release the lock the corresponding number of times. This can
-be done by calling the unlock function until it returns 0.