Received: from sss2.sss.pgh.pa.us (sss.pgh.pa.us [209.114.166.2]) by hub.org (8.10.1/8.10.1) with ESMTP id e6D7YmW10111 for ; Thu, 13 Jul 2000 03:34:48 -0400 (EDT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss2.sss.pgh.pa.us (8.9.3/8.9.3) with ESMTP id DAA28679; Thu, 13 Jul 2000 03:34:20 -0400 (EDT) To: Joseph Shraibman cc: "pgsql-general@hub.org" Subject: Re: select for update not locking properly. In-reply-to: <396D2AEA.5D19984A@selectacast.net> References: <396D2AEA.5D19984A@selectacast.net> Comments: In-reply-to Joseph Shraibman message dated "Wed, 12 Jul 2000 22:35:22 -0400" Date: Thu, 13 Jul 2000 03:34:20 -0400 Message-ID: <28676.963473660@sss.pgh.pa.us> From: Tom Lane X-Archive-Number: 200007/555 Joseph Shraibman writes: > But the locking isn't working properly. I do something that should > cause 3 different threads to try and do that append, and the first one > goes through properly, but the second two append to the result of the > first on only, meaning that the third one didn't see the result of the > second's append. Can't duplicate it here. I did: regression=# create table mytable(mystring text, x int, y int); CREATE regression=# insert into mytable values('z',1,4); INSERT 399867 1 regression=# insert into mytable values('foo',3,4); INSERT 399868 1 regression=# begin; BEGIN regression=# SELECT mystring FROM mytable WHERE x = 3 AND y = 4 FOR UPDATE; mystring ---------- foo (1 row) regression=# begin; BEGIN regression=# SELECT mystring FROM mytable WHERE x = 3 AND y = 4 FOR UPDATE; [ psql hangs ] regression=# begin; BEGIN regression=# SELECT mystring FROM mytable WHERE x = 3 AND y = 4 FOR UPDATE; [ psql hangs ] regression=# UPDATE mytable SET mystring = 'foo bar' WHERE x = 3 AND y = 4; UPDATE 1 regression=# end; COMMIT regression=# mystring ---------- foo bar (1 row) regression=# UPDATE mytable SET mystring = 'foo bar baz' WHERE x = 3 AND y = 4; UPDATE 1 regression=# end; COMMIT regression=# mystring ------------- foo bar baz (1 row) regression=# Looks pretty cool to me... regards, tom lane