Re: length of recordset read through a cursor

From: "Knut P(dot) Lehre" <k(dot)p(dot)d(dot)lehre(at)basalmed(dot)uio(dot)no>
To: pgsql-sql(at)postgresql(dot)org, Christoph Haller <ch(at)rodos(dot)fzk(dot)de>
Subject: Re: length of recordset read through a cursor
Date: 2003-08-05 11:13:00
Message-ID: 5.2.0.9.2.20030805123048.01415ed8@uio-pop.uio.no
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

>> After declaring a cursor, one way of obtaining the length of the
>resultset
>> is to perform a "MOVE 0" and read the PQcmdStatus which returns a
>"MOVE nn"
>> where nn is the length of the resultset. (A negative MOVE can then be
>used
>> to allow starting to fetch records from the beginning of the
>resultset.)
>>
>> Is there another, possibly faster way?
>>
>Looks like you're using libpq (because you mention PQcmdStatus),
>then after declaring a cursor and FETCH ALL, try
>
>1.3.4. Retrieving SELECT Result Information
>
> PQntuples Returns the number of tuples (rows) in the query result.
>
> int PQntuples(const PGresult *res);
>
>I'm not exactly sure what you're trying to achieve or going to do,
>so if I misunderstood you, ask again.
>
>Regards, Christoph

Thanks for your reply.
What I'm trying to do is the following: I want to browse through a view
containing more than 10000 records. To avoid slowing things down too much,
I would like my client program to receive (through the network) only the
records that are to be displayed on the screen. I believe I could do this
by declaring a cursor and then fetching the parts of the resultset I need.
It would be useful to know the size of the resultset immediately after the
cursor has been declared. How do I get this information? I could of course
fetch all of the resultset, but that is what I am trying to avoid.
Shouldn't it be quicker to perform a move through the set than fetching it?
I found that moving zero records results in a move to the end of the
resultset, with a command status returning the number of records moved.
Although I expected this method to take less time than a fetch (does it?),
I was wondering if there might be another way to get the size of the
resultset that can be fetched through the declared cursor.

KP

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Christoph Haller 2003-08-05 12:22:33 Re: length of recordset read through a cursor
Previous Message Anagha Joshi 2003-08-05 10:21:52 Timestamp in PG - 7.1 & 7.2