Re: order by in cursor declaration does not allow update - Mailing list pgsql-hackers

From Dharmendra Goyal
Subject Re: order by in cursor declaration does not allow update
Date
Msg-id f87e6d710710250423q5abed938oe87f62091badf84e@mail.gmail.com
Whole thread Raw
In response to Re: order by in cursor declaration does not allow update  (Simon Riggs <simon@2ndquadrant.com>)
Responses Re: order by in cursor declaration does not allow update
List pgsql-hackers
According to SQL specifications: If "READ ONLY" is not specified in cursor declaration then for update is
implicit.

Anyway, even if i specify "for update" in the declare clause, behaviour is same.

DROP TABLE IF EXISTS test;
create table test (num int,num2 int );
insert into test values(1,100);
insert into test values(2,200);
insert into test values(3,300);
insert into test values(4,400);
insert into test values(5,500);
BEGIN;
DECLARE c CURSOR FOR SELECT * FROM test ORDER BY num FOR UPDATE;
FETCH 2 FROM c;
UPDATE test SET num = 500 WHERE CURRENT OF c;
ERROR:  cursor "c" is not a simply updatable scan of table "test"
SELECT * FROM test;
FETCH 2 FROM c;
COMMIT;
SELECT * FROM test;
FETCH 2 FROM c;
COMMIT;

Regards,
Dharmendra
www.enterprisedb.com

On 10/25/07, Simon Riggs <simon@2ndquadrant.com> wrote:
On Thu, 2007-10-25 at 12:28 +0530, Dharmendra Goyal wrote:
> If a cursor is declared using "Order by" then it gives following
> error
> during updation of the cursor:
> ERROR:  cursor "c" is not a simply updatable scan of table "test"
> Ex:
> DROP TABLE IF EXISTS test;
> create table test (num int,num2 int );
> insert into test values(1,100);
> insert into test values(2,200);
> insert into test values(3,300);
> insert into test values(4,400);
> insert into test values(5,500);
> BEGIN;
> DECLARE c CURSOR FOR SELECT * FROM test ORDER BY num;
> FETCH 2 FROM c;
> UPDATE test SET num = 500 WHERE CURRENT OF c;
> ERROR:  cursor "c" is not a simply updatable scan of table "test"

> Comments for this...??

You haven't specified FOR UPDATE on the query in the DECLARE clause.

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


pgsql-hackers by date:

Previous
From: Zdenek Kotala
Date:
Subject: Re: MaxOffsetNumber versus MaxHeapTuplesPerPage
Next
From: Simon Riggs
Date:
Subject: Re: order by in cursor declaration does not allow update