Re: Asynchronous Query processing - Mailing list pgsql-general

From Brendon Sablinski
Subject Re: Asynchronous Query processing
Date
Msg-id 9950c73c0708060754t7cb26cd7n6f2acda1938dd819@mail.gmail.com
Whole thread Raw
In response to Asynchronous Query processing  ("Brendon Sablinski" <mapletide@gmail.com>)
List pgsql-general
>>If you know for a fact that there are no more statements in processing, there's
>>no need to call PQgetResult() any more.
thanks, that is what I thought. 

>>What poll?  PQconsumeInput()/PQisBusy() _is_ the poll.
comsumeInput and isBusy is not a poll.  A poll tells you if data is ready.  When data is ready you can then call recv() w/o blocking your application.  If you call consumeInput without verifying data is ready, recv() would block (unless you set the pgconn.sockfd to nonblocking mode).

>>Also, you should check the return code.
This is just an example of the flow and sequence of PQ calls.

>However, if you know for a fact that there could never be more than a single
>query in the pipeline, it's unlikely that your code is written to handle
>asynchronous processing.
Asynch doesn't mean you have to have multiple outstanding requests on a pgconn.  All it means is that your application is not waiting for the PGResult, it gets it later when the server is done.  It has nothing to do with how many results maybe pending.  The application layer is queuing queries requests because they need to be exectued at different times from different clients.  Batching doesn't work here.

thanks, brendon

pgsql-general by date:

Previous
From: Henrik Zagerholm
Date:
Subject: Re: [PERFORM] Planner making wrong decisions 8.2.4. Insane cost calculations.
Next
From: Gregory Stark
Date:
Subject: Re: [PERFORM] Planner making wrong decisions 8.2.4. Insane cost calculations.