Re: Asynchronous query execution - Mailing list pgsql-general

From Merlin Moncure
Subject Re: Asynchronous query execution
Date
Msg-id AANLkTikxoVadpC9WGEkBh=U=239mFgE4iGoHHxEQBWt-@mail.gmail.com
Whole thread Raw
In response to Re: Asynchronous query execution  (John R Pierce <pierce@hogranch.com>)
Responses Re: Asynchronous query execution
List pgsql-general
On Wed, Dec 8, 2010 at 8:40 AM, John R Pierce <pierce@hogranch.com> wrote:
> On 12/08/10 5:35 AM, c k wrote:
>>
>> Hello,
>> I would like to know how can we execute the queries asynchronously?
>> If we use and execute plpgsql functions they just completes the execution
>> or throws an error on error. In between next sql statement waits for the
>> previous one to complete the execution. But in few situations it is required
>> not to wait for getting the completion of previous sql statement. How can
>> this e achieved?
>>
>
> one postgresql connection can only run one query at a time.
>
> run your asynchronous queries from a thread with its own connection

This is only asynchronous from client point of view.  Meaning, while
the query is running, you can go off and do other work on the client.

There is iron clad rule of one query running per database session at a
time.  From pl/pgsql point of view, only method of working around this
is using dblink style tricks to connect to the database from within
function and run queries.   dblink supports asynchronous querying so
you can leverage that:

dblink_send_query(text connname, text sql) returns int

From client point of view, you have a number of techniques.
async_queries/threads and multiple connections would be the most
common approaches.

merlin

pgsql-general by date:

Previous
From: Vick Khera
Date:
Subject: Re: SELECT is immediate but the UPDATE takes forever
Next
From: "Igor Neyman"
Date:
Subject: Re: How to obtain the maximum value of a date, between 3 tables...