On Wed, 2006-11-29 at 16:47 +0100, Michal Taborsky - Internet Mall wrote: > Hello. > > We started using, in one of our applications, the LOCK ... NOWAIT > functionality. It works as it's supposed to, but there is one, albeit > tiny, annoyance about it. > > When the LOCK cannot be immediately obtained, this statement logs an > ERROR message. But in this case, I think it is not appropriate to call > this event an error, since I am well aware it might happen and actually > expect it, since I use the NOWAIT switch. > I think it must be an error if it's uncaught. Otherwise how would it inform the client application that no lock was acquired? The best thing to do is create a procedural language function that catches the error. Then, it will not be reported. For example: CREATE OR REPLACE FUNCTION lock_nowait_noerror() RETURNS BOOLEAN LANGUAGE plpgsql AS $$ BEGIN BEGIN LOCK locktable NOWAIT; RETURN TRUE; EXCEPTION WHEN lock_not_available THEN RETURN FALSE; END; END; $$; Then, in your client app you can check the return value to see whether the lock was acquired. Hope this helps, Jeff Davis