Re: some hints to understand the plsql cursor. - Mailing list pgsql-hackers

From Dilip Kumar
Subject Re: some hints to understand the plsql cursor.
Date
Msg-id CAFiTN-uPvS+e9bBo5EUmyOhQ2_uOuWbi7TgteU0Y84zM_FNbTA@mail.gmail.com
Whole thread Raw
In response to some hints to understand the plsql cursor.  (Andy Fan <zhihui.fan1213@gmail.com>)
Responses Re: some hints to understand the plsql cursor.
List pgsql-hackers
On Wed, Feb 27, 2019 at 4:42 PM Andy Fan <zhihui.fan1213@gmail.com> wrote:
>
> actually I'm hacking pg for a function like :
> 1. define a select query.
> 2. client ask for some data. and server reply some data.  server will do NOTHING if client doesn't ask any more..
> 3.  client ask some data more data with a batch and SERVER reply some data then. then do NOTHING.
>
> currently the simple "select * from t",  the server will try to send the data to client at one time which is not
somethingI want.
 
>
> by looking into the plsql,  looks it has some api like:
>
> fetch 10 from cursor_1;
> fetch 10 from cursor_1;
>
> I'm lacking of the experience to hack plsql.   so my question are:
> 1.   Does pg has some codes which act like the "ask -> reply -> ask again -> reply again" on the server code?
currentlyI'm not sure if the above "fetch" really work like this.
 
> 2.  any resources or hint or suggestion to understand the "fetch"  statement?

I guess you are looking for these syntax?

postgres=# BEGIN;
BEGIN
postgres=# DECLARE cur CURSOR FOR SELECT * FROM t;
DECLARE CURSOR
postgres=# FETCH NEXT cur;
 a
---
 1
(1 row)

postgres=# FETCH 10 cur;
 a
---
 2
 3
 4
 5
 1
 2
 3
 4
 5
 6
(10 rows)

postgres=# FETCH NEXT cur;
 a
---
 7
(1 row)

postgres=# CLOSE cur;
CLOSE CURSOR


-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com


pgsql-hackers by date:

Previous
From: Mike Palmiotto
Date:
Subject: Re: [RFC] [PATCH] Flexible "partition pruning" hook
Next
From: Robert Haas
Date:
Subject: Re: Parallel query vs smart shutdown and Postmaster death