Re: Implementing Frontend/Backend Protocol TCP/IP - Mailing list pgsql-general

From Alvaro Herrera
Subject Re: Implementing Frontend/Backend Protocol TCP/IP
Date
Msg-id 20091027130008.GA4876@alvh.no-ip.org
Whole thread Raw
In response to Re: Implementing Frontend/Backend Protocol TCP/IP  (Raimon Fernandez <coder@montx.com>)
Responses Re: Implementing Frontend/Backend Protocol TCP/IP
List pgsql-general
Raimon Fernandez wrote:

> REALbasic has plugin for PostgreSQL, but they are synchronous  and
> freeze the GUI when interacting with PG. This is not a problem
> noramlly, as the SELECTS/UPDATES/... are fast enopugh, but sometimes
> we need to fetch 1000, 5000 or more rows and the application stops
> to respond, I can't have a progressbar because all is freeze, until
> all data has come from PG, so we need a better way.

If you need to fetch large numbers of rows, perhaps it would be better
to use a cursor and fetch a few at a time, moving the progress bar in
the pauses.  So instead of

SELECT * FROM sometab;

you would o
DECLARE foo CURSOR FOR SELECT * FROM sometab;

and then, repeatedly,
FETCH 50 FROM foo

Until there are no more rows.

This can still freeze your app in certain cases, but it will be probably
a lot better than what you currently have.  And it will be MUCH easier/
cheaper to do than working with the FE/BE protocol yourself.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

pgsql-general by date:

Previous
From: ChenXun
Date:
Subject: Re: Is there any ways to pass an array as parameter in libpq?
Next
From: John DeSoi
Date:
Subject: Re: Implementing Frontend/Backend Protocol TCP/IP