pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jim Nasby <jnasby@pervasive.com>
To: Mathias Laurent <e1lauren@hotmail.com>
Cc: pgsql-admin@postgresql.org
Cc: pgsql-interfaces@postgresql.org
Subject: Re: Problem with SELECT FOR UPDATE NOWAIT
Date: Thu, 20 Apr 2006 22:17:22 -0500
Message-ID: <4D27CB1096EF1C408F4BFAB0046EC7B608C1B2@ausmailid.aus.pervasive.com> (raw)
References: <BAY112-F26F5A42C3C3FB47C89A52D9ABB0@phx.gbl>

Please include the list in your reply so others can help. I'm also adding -interfaces.

You're still not showing exact errors, but I suspect this might be a JDBC issue. Here's what I get:

Session 1:
decibel=# begin;
BEGIN
decibel=# select * from i where i=1 for update nowait;
 i 
---
 1
(1 row)

decibel=# begin;
BEGIN
decibel=# select * from i where i=2 for update nowait;
 i 
---
 2
(1 row)

decibel=# select * from i where i=1 for update nowait;
ERROR:  could not obtain lock on row in relation "i"
decibel=# select * from i where i=3 for update nowait;
ERROR:  current transaction is aborted, commands ignored until end of transaction block
decibel=# 

--
Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
Pervasive Software      http://pervasive.com    work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

-----Original Message-----
From: Mathias Laurent [mailto:e1lauren@hotmail.com]

No, it really occurs like that... The problem maybe become of the use of the 
driver jdbc because I pass through JAVA ! I do :

Session 1 :
BEGIN
Select * FROM myTable WHERE num=3 FOR UPDATE NOWAIT

Session 2 :
I can do
Select * FROM myTable WHERE num=4 FOR UPDATE NOWAIT
Select * FROM myTable WHERE num=2 FOR UPDATE NOWAIT
....
But When I do
Select * FROM myTable WHERE num=3 FOR UPDATE NOWAIT
=> error (Normal)

But It blocks all the table "myTable" for the session 2 !!!!!!
And for example i can't do  :
Select * FROM myTable WHERE num=2 FOR UPDATE NOWAIT

If i want to do that, I must do a
COMMIT
(Then the table is available except for the :
Select * FROM myTable WHERE num=3 FOR UPDATE NOWAIT ) Normal ;) Until I do

Session 1
COMMIT

Then i don't see where is the problem !

Thank you for your answer,

Mathias LAURENT


>From: "Jim C. Nasby" <jnasby@pervasive.com>
>To: Mathias Laurent <e1lauren@hotmail.com>
>CC: pgsql-admin@postgresql.org
>Subject: Re: [ADMIN] Problem with SELECT FOR UPDATE NOWAIT
>Date: Thu, 20 Apr 2006 17:47:38 -0500
>
>I think you're confused about what actually happened...
>
>Session 1:
>decibel=# select * from a;
>  i
>---
>  1
>(1 row)
>
>decibel=# begin;
>BEGIN
>decibel=# select * from a for update nowait;
>  i
>---
>  1
>(1 row)
>
>decibel=#
>
>Session 2:
>decibel=# select * from a for update nowait;
>ERROR:  could not obtain lock on row in relation "a"
>decibel=# select * from a for update;
>
>...waits...
>
>Session 1:
>decibel=# rollback;
>ROLLBACK
>decibel=#
>
>And immediately in session 2:
>  i
>---
>  1
>(1 row)
>
>decibel=#
>
>On Thu, Apr 13, 2006 at 01:57:47AM +0000, Mathias Laurent wrote:
> > Hello,
> >
> > Veiled I have a small problem which I have solved in a way not very 
>clean,
> > I would thus like to have your opinion. When I made with the process 1 :
> >
> > Select * FROM myTable WHERE num=3 FOR UPDATE NOWAIT
> >
> > And that I remade it with a process 2 before having do one "Commit" It
> > blocked me (until there normal)
> > But once that I free by doing one "Commit" with process 1 All the table
> > remains to block for process 2...
> > To have access it, it is necessary that I do one "Commit" with the
> > processus2 !! It's very strange...
> >
> > Thank you,
> >
> > Mathias Laurent
> >
> > _________________________________________________________________
> > Windows Live Mail : d?couvrez et testez la version b?ta !
> > http://www.ideas.live.com/
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 3: Have you checked our extensive FAQ?
> >
> >               http://www.postgresql.org/docs/faq
> >
>
>--
>Jim C. Nasby, Sr. Engineering Consultant      jnasby@pervasive.com
>Pervasive Software      http://pervasive.com    work: 512-231-6117
>vcard: http://jim.nasby.net/pervasive.vcf       cell: 512-569-9461

_________________________________________________________________
Tout savoir sur la sécurité de vos enfants sur Internet ! 
http://go.msn.fr/10-channel/80-security/protection/default.asp





Message-ID: <4D27CB1096EF1C408F4BFAB0046EC7B608C1B2@ausmailid.aus.pervasive.com>
Permalink:  ../4D27CB1096EF1C408F4BFAB0046EC7B608C1B2@ausmailid.aus.pervasive.com/
Also on:    postgresql.org/message-id/4D27CB1096EF1C408F4BFAB0046EC7B608C1B2@ausmailid.aus.pervasive.com

 · 

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: pgsql-interfaces@postgresql.org
  Cc: jnasby@pervasive.com, e1lauren@hotmail.com, pgsql-admin@postgresql.org
  Subject: Re: Problem with SELECT FOR UPDATE NOWAIT
  In-Reply-To: <4D27CB1096EF1C408F4BFAB0046EC7B608C1B2@ausmailid.aus.pervasive.com>

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

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