Skip site navigation (1) Skip section navigation (2)

Proposal: String key space for advisory locks

From: Christophe Pettus <xof(at)thebuild(dot)com>
To: Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Proposal: String key space for advisory locks
Date: 2009-10-26 05:54:29
Message-ID: A18DB985-6239-477B-AA75-D93A99CA1AD1@thebuild.com (view raw or flat)
Thread:
Lists: pgsql-hackers
Greetings,

I'd like to propose a potential patch, and wanted to get preliminary  
feedback on it before I started looking into the design.

Summary:    Add a string key space to the advisory lock functionality.

Rationale:

Right now, the key spaces (the range of unique values that can be used  
as identity) for advisory locks are either a bigint or two ints.  This  
is, of course, technically more than one could imaginably need in any  
application.  The difficulty arises when the number of potential  
advisory locks is related to rows in one or more tables.

For example, suppose one wanted to use advisory locks to signal that a  
queue entry is being processed, and entries in that queue have a  
primary key that's also a bigint.  There's no problem; the advisory  
lock id is the primary key for the row.

And, then, one wants to use an advisory lock to signal that a  
particular record in another table is being processed in a long-term  
process.  One has a series of unappealing alternatives at that point,  
mostly involving encoding a table ID and the primary key of a record  
into the 64 bit number, or just hoping that the primary key doesn't  
overflow an int, and using the 2 x int form.

API Changes:

Overloading the various advisory lock functions to take a suitable  
string type (varchar(64)?) in addition to the bigint / 2 x int  
variations.  As with the bigint / 2 x int forms, this string namespace  
would be disjoint from the other key spaces.

Thanks in advance for any comments.
--
-- Christophe Pettus
    xof(at)thebuild(dot)com


Responses

pgsql-hackers by date

Next:From: Michael PaquierDate: 2009-10-26 06:50:28
Subject: Re: [PATCH] pgbench: new feature allowing to launch shell commands
Previous:From: Josh BerkusDate: 2009-10-26 04:46:59
Subject: Re: Parsing config files in a directory

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group