public inbox for [email protected]  
help / color / mirror / Atom feed
From: Bruce Momjian <[email protected]>
To: Marc Mamin <[email protected]>
Cc: PostgreSQL-documentation <[email protected]>
Subject: Re: [GENERAL] advisory locks: documentation hint and feature request
Date: Thu, 6 Mar 2008 13:50:36 -0500 (EST)
Message-ID: <[email protected]> (raw)
In-Reply-To: <CA896D7906BF224F8A6D74A1B7E54AB301750D0E@JENMAIL01.ad.intershop.net>

Marc Mamin wrote:
> doing this, I missed an information in the documentation that would be
> useful to add:
>  
>  
> pg_locks columns definition
> ---------------------------
>  
> current definition:
>  
> objid : OID of the object within its system catalog, 
>         or NULL if the object is not a general database object
>         
> to add: "For advisory locks it is used to distinguish  the two key
> spaces (one int8 or two int4 keys)
> 
> 
> Table 9-56. Advisory Lock Functions (8.3 Beta)
> -----------------------------------
>  current: (note that these two key spaces do not overlap)
>  
>  to add: "; The two key spaces are separated on the column objid in the
> pg_locks view"
>  

I have added your suggested changes to the docs with the attached patch.
Thanks.

>  Moreover I missed some function that would allow a cleaner
> implementation of my features 
>  (reducing the need to query the pg_locks view)
>  
>  For example:
>   
>  --current shared lock count (owned / all)
>  pg_advisory_lock_shared_count_my(key bigint)
>  pg_advisory_lock_shared_count_all(key bigint)
>  
>  
>  --enforce exclusive locks so that they cannot be stacked
>  pg_try_advisory_lock_single(key bigint)

Sorry, I am afraid they would not have general-enough usefulness.

-- 
  Bruce Momjian  <[email protected]>        http://momjian.us
  EnterpriseDB                             http://postgres.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +


Attachments:

  [text/x-diff] /rtmp/diff (2.3K, 2-%2Frtmp%2Fdiff)
  download | inline diff:
Index: doc/src/sgml/catalogs.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v
retrieving revision 2.161
diff -c -c -r2.161 catalogs.sgml
*** doc/src/sgml/catalogs.sgml	31 Jan 2008 18:40:02 -0000	2.161
--- doc/src/sgml/catalogs.sgml	6 Mar 2008 18:48:54 -0000
***************
*** 5691,5697 ****
        <entry>any OID column</entry>
        <entry>
         OID of the object within its system catalog, or NULL if the
!        object is not a general database object
        </entry>
       </row>
       <row>
--- 5691,5700 ----
        <entry>any OID column</entry>
        <entry>
         OID of the object within its system catalog, or NULL if the
!        object is not a general database object.
!        For advisory locks it is used to distinguish the two key
!        spaces (<literal>1</> for an int8 key, <literal>2</> for two
!        int4 keys).
        </entry>
       </row>
       <row>
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.422
diff -c -c -r1.422 func.sgml
*** doc/src/sgml/func.sgml	3 Mar 2008 18:09:02 -0000	1.422
--- doc/src/sgml/func.sgml	6 Mar 2008 18:48:58 -0000
***************
*** 12378,12384 ****
     <para>
      <function>pg_advisory_lock</> locks an application-defined resource,
      which can be identified either by a single 64-bit key value or two
!     32-bit key values (note that these two key spaces do not overlap).  If
      another session already holds a lock on the same resource, the
      function will wait until the resource becomes available.  The lock
      is exclusive.  Multiple lock requests stack, so that if the same resource
--- 12378,12385 ----
     <para>
      <function>pg_advisory_lock</> locks an application-defined resource,
      which can be identified either by a single 64-bit key value or two
!     32-bit key values (note that these two key spaces do not overlap). 
!     The key type is specified in <literal>pg_locks.objid</>.  If
      another session already holds a lock on the same resource, the
      function will wait until the resource becomes available.  The lock
      is exclusive.  Multiple lock requests stack, so that if the same resource


view thread (2+ messages)

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: [GENERAL] advisory locks: documentation hint and feature request
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox