Обсуждение: Bug #722: SELECT FOR UPDATE bug

Поиск
Список
Период
Сортировка

Bug #722: SELECT FOR UPDATE bug

От
pgsql-bugs@postgresql.org
Дата:
Pablo Avilés Cisneros (paviles@its.co.cr) reports a bug with a severity of 1
The lower the number the more severe it is.

Short Description
SELECT FOR UPDATE bug

Long Description
Hi, I'm encountered a problem with a select for update sentence with postgresql. 

If I use...: 
  BEGIN TRANSACTION; 
  SELECT * FROM employees 
  WHERE status = 'A' 
  LIMIT 1 
  FOR UPDATE; 
  ... 

The problem, in the previous sentence, is block every record on employees, although we want one record, we want limit
1.The bug it seems the limit 1, because if I dispose the limit 1 line, only the return records are blocked. 
 

If I use: 
  BEGIN TRANSACTION; 
  SELECT * FROM employees 
  WHERE (status = 1) AND (id_employee = 123) 
  ORDER BY id_employee 
  FOR UPDATE; 
  ... 
it block every record on employees, although we want one record, we want id_employee = 123. The bug it seems the order
byline, because if I dispose the order by line, only the return records are blocked. 
 

Do you have an alternative way? Is this a bug? Any suggestion? 

I'm using Delphi 6 with dbexpress, and the transaction was make with an TSQLClientDataSet component after an
TSQLConnection
 

Pablo Avilés Cisneros 
Technology, ITS 
Software Development Area 
Technology, ITS 
San José, Costa Rica 
email: paviles@its.co.cr

Sample Code


No file was uploaded with this report

Re: Bug #722: SELECT FOR UPDATE bug

От
Tom Lane
Дата:
pgsql-bugs@postgresql.org writes:
>   SELECT * FROM employees
>   WHERE status = 'A'
>   LIMIT 1
>   FOR UPDATE;

> The problem, in the previous sentence, is block every record on
> employees, although we want one record, we want limit 1.

I do not believe that.  Could you give a more complete example of
your problem?

It would also help if you'd state which Postgres version you're using.

            regards, tom lane