Strang behaviour SELECT ... LIMIT n FOR UPDATE - Mailing list pgsql-sql

From Daniel Caune
Subject Strang behaviour SELECT ... LIMIT n FOR UPDATE
Date
Msg-id 1E293D3FF63A3740B10AD5AAD88535D2068A6247@UBIMAIL1.ubisoft.org
Whole thread Raw
Responses Re: Strang behaviour SELECT ... LIMIT n FOR UPDATE  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
Hi,

I'm facing a strange behaviour with a statement SELECT ... LIMIT n FOR
UPDATE in PostgreSQL 8.1.  The number of rows returned is actually (n -
1).  I'm trying to find whether this is an identified issue with
PostgreSQL 8.1 that might have been fixed in a later version such as
8.2; I don't have any problem in moving to a later version if needed.

agoratokens=>  SELECT * FROM "Tokens" INNER JOIN "Tokentypes" ON
"Tokens"."type"="Tokentypes"."type" WHERE "Tokentypes"."tokenName"
='clanName' AND "Tokens"."isLocked" = false limit 2 FOR UPDATE;
id  | type |          value           | isLocked |         timestamp
| type | tokenName

-----+------+--------------------------+----------+---------------------
-------+------+-----------
104 |    2 | RegressionTestClanName13 | f        | 2007-11-27
20:40:25.208074 |    2 | clanName

(1 row)

agoratokens=>  SELECT * FROM "Tokens" INNER JOIN "Tokentypes" ON
"Tokens"."type"="Tokentypes"."type" WHERE "Tokentypes"."tokenName"
='clanName' AND "Tokens"."isLocked" = false limit 3 FOR UPDATE;
id  | type |          value           | isLocked |         timestamp
| type | tokenName

-----+------+--------------------------+----------+---------------------
-------+------+-----------
104 |    2 | RegressionTestClanName13 | f        | 2007-11-27
20:40:25.208074 |    2 | clanName
118 |    2 | RegressionTestClanName28 | f        | 2007-11-21
21:10:29.872352 |    2 | clanName

(2 rows)


If I remove the FOR UPDATE clause, the SELECT ... LIMIT n statement
returns n rows as expected:

agoratokens=>  SELECT * FROM "Tokens" INNER JOIN "Tokentypes" ON
"Tokens"."type"="Tokentypes"."type" WHERE "Tokentypes"."tokenName"
='clanName' AND "Tokens"."isLocked" = false limit 3;
id  | type |          value           | isLocked |         timestamp
| type | tokenName

-----+------+--------------------------+----------+---------------------
-------+------+-----------
104 |    2 | RegressionTestClanName13 | f        | 2007-11-27
20:40:25.208074 |    2 | clanName
 40 |    2 | RegressionTestClanName9  | f        | 2007-10-15
11:27:31.897    |    2 | clanName
118 |    2 | RegressionTestClanName28 | f        | 2007-11-21
21:10:29.872352 |    2 | clanName

(3 rows)



--
Daniel


pgsql-sql by date:

Previous
From: "Stefan Becker"
Date:
Subject: Re: pg_clog (?) problem with VACUMM
Next
From: "Gera Mel Handumon"
Date:
Subject: NULLIF problem