Re: CURRENT OF causes an error when IndexOnlyScan is used
От | Yugo Nagata |
---|---|
Тема | Re: CURRENT OF causes an error when IndexOnlyScan is used |
Дата | |
Msg-id | 20180201014444.f78358df.nagata@sraoss.co.jp обсуждение исходный текст |
Ответ на | CURRENT OF causes an error when IndexOnlyScan is used (Yugo Nagata <nagata@sraoss.co.jp>) |
Ответы |
Re: CURRENT OF causes an error when IndexOnlyScan is used
|
Список | pgsql-hackers |
On Thu, 1 Feb 2018 01:33:49 +0900 Yugo Nagata <nagata@sraoss.co.jp> wrote: I'm sorry the patch attached in the previous mail is broken and not raises a compile error. I attached the fixed patch. Regards, > Hi, > > I found that updating a cursor by using CURRENT OF causes the > following error when the query is executed by IndexOnlyScan. > > ERROR: cannot extract system attribute from virtual tuple > > IndexOnlyScan returns a virtual tuple that doesn't have system > column, so we can not get ctid in the same way of other plans. > However, the error message is not convinient and users would > not understand why the error occurs. > > Attached is a patch to fix this. By this fix, execCurrentOf > get ctid from IndexScanDesc->xs_ctup.t_self when the plan is > IndexOnlyScan, and it works sucessfully without errors. > > > Here is the example of the error: > > ======= > postgres=# create table test (i int primary key); > CREATE TABLE > postgres=# insert into test values(1); > INSERT 0 1 > postgres=# set enable_seqscan to off; > SET > > postgres=# explain select * from test where i = 1; > QUERY PLAN > --------------------------------------------------------------------------- > Index Only Scan using test_pkey on test (cost=0.15..8.17 rows=1 width=4) > Index Cond: (i = 1) > (2 rows) > > postgres=# begin; > BEGIN > postgres=# declare c cursor for select * from test where i = 1; > DECLARE CURSOR > postgres=# fetch from c; > i > --- > 1 > (1 row) > > postgres=# update test set i=i+1 where current of c; > ERROR: cannot extract system attribute from virtual tuple > ======= > > The patch fixes the error and allows this update successfully. > > Regards, > > -- > Yugo Nagata <nagata@sraoss.co.jp> -- Yugo Nagata <nagata@sraoss.co.jp>
Вложения
В списке pgsql-hackers по дате отправления: