Sorry to bother you folks but...
I wrote the following to message to pgsql-interfaces. I have received one
work around of putting an extra locked field on the table and setting and
unsetting that but that would cause other problems. I have thought of
creating a locking daemon of my own for the application to request locks
from but that would be very hard to figure out as I've never tried ipc. I
have read through lock.c again and I think that user locks may be what I
want, as there is only one table that needs to be protected this way in my
application. I just don't know how to proceed.
Thanks
Trevor
>I am using Postgres 6.5 on Linux through the libpq interface
>
>I have a situation where an existing record can be opened by one user,
>updated or rolled back. While the first user has the record I need to make
>sure no other user can open it. I use
>
>SELECT .... FOR UPDATE
>
> This works but the second process blocks (looking to the user like a hung
> program), until the first process releases the record. Since updating a
> record can take some time the blocking could be there for some time.
>
> I would like the second SELECT .... FOR UPDATE to fail with an error I can
> catch telling me of a conflict (and hopefully which process has the lock),
> allowing me to backout gracefully with a consolatory message to the user.
I
> would like normal SELECTs (without FOR UPDATE) to work an normal.
>
> I think that this is an option in pg_options but I'm not sure. I have
looked
> in the source (lock.c and lmgr.c) to try and figure out what to do. I
found
> something called "user locks" which looks promising but I'm still not
sure.
**********************************************************************
This message (including any attachments) is confidential and may be
legally privileged. If you are not the intended recipient, you should
not disclose, copy or use any part of it - please delete all copies
immediately and notify the Hays Group Email Helpdesk on
+44 (0) 01908 256 050.
Any information, statements or opinions contained in this message
(including any attachments) are given by the author. They are not
given on behalf of Hays unless subsequently confirmed by an individual
other than the author who is duly authorised to represent Hays.
A member of the Hays plc group of companies.
Hays plc is registered in England and Wales number 2150950.
Registered Office Hays House Millmead Guildford Surrey GU2 5HJ.
**********************************************************************