Обсуждение: [BUGS] BUG #14465: cursor for insert into select ... returning cann'tstreaming fetch?

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

[BUGS] BUG #14465: cursor for insert into select ... returning cann'tstreaming fetch?

От
digoal@126.com
Дата:
The following bug has been logged on the website:

Bug reference:      14465
Logged by:          Zhou Digoal
Email address:      digoal@126.com
PostgreSQL version: 9.6.1
Operating system:   CentOS 6.x x64
Description:

HI,
   when i write a plpgsql return refcursor.
   the refcursor is a ```insert into .. select .. from .. returning *;```
query.
   but when i use auto_explain DEBUG it, i found the fetch after insert end,
not stream , insert and fetch the same time coordinat.  
   can PostgreSQL improve it?


--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Re: [BUGS] BUG #14465: cursor for insert into select ... returningcann't streaming fetch?

От
"David G. Johnston"
Дата:
On Tuesday, December 13, 2016, <digoal@126.com> wrote:
The following bug has been logged on the website:

Bug reference:      14465
Logged by:          Zhou Digoal
Email address:      digoal@126.com
PostgreSQL version: 9.6.1
Operating system:   CentOS 6.x x64
Description:

HI,
   when i write a plpgsql return refcursor.
   the refcursor is a ```insert into .. select .. from .. returning *;```
query.
   but when i use auto_explain DEBUG it, i found the fetch after insert end,
not stream , insert and fetch the same time coordinat.
   can PostgreSQL improve it?


This isn't a bug.

Opening a cursor causes it to execute, which in this case means performing the insert.  You can only return opened cursors from a function.  The act of fetching from the cursor simply gives access to the underlying rows.

Not sure what improvement you are wanting here but a posting to -general would be more appropriate.  Describing your use case would help others understand why this might be useful.

David J. 

Re: [BUGS] BUG #14465: cursor for insert into select ...returning cann't streaming fetch?

От
德哥
Дата:
HI,
  thank you , my case is retrive data stream , i cann't wait the insert end.
  because insert has very large tuples, like 1M, and client will wait many seconds, if user can fetch the result the same time when inserting, it will reduce the waiting time.






--
公益是一辈子的事,I'm Digoal,Just Do It.

在 2016-12-14 11:57:00,"David G. Johnston" <david.g.johnston@gmail.com> 写道:
On Tuesday, December 13, 2016, <digoal@126.com> wrote:
The following bug has been logged on the website:

Bug reference:      14465
Logged by:          Zhou Digoal
Email address:      digoal@126.com
PostgreSQL version: 9.6.1
Operating system:   CentOS 6.x x64
Description:

HI,
   when i write a plpgsql return refcursor.
   the refcursor is a ```insert into .. select .. from .. returning *;```
query.
   but when i use auto_explain DEBUG it, i found the fetch after insert end,
not stream , insert and fetch the same time coordinat.
   can PostgreSQL improve it?


This isn't a bug.

Opening a cursor causes it to execute, which in this case means performing the insert.  You can only return opened cursors from a function.  The act of fetching from the cursor simply gives access to the underlying rows.

Not sure what improvement you are wanting here but a posting to -general would be more appropriate.  Describing your use case would help others understand why this might be useful.

David J.