Re: Multiple queries in transit - Mailing list pgsql-hackers

From Merlin Moncure
Subject Re: Multiple queries in transit
Date
Msg-id CAHyXU0wESVqwO4YQDbGXmWXUs1RsQguKaR1Knoq+GiEDQ8kKuQ@mail.gmail.com
Whole thread Raw
In response to Re: Multiple queries in transit  (Merlin Moncure <mmoncure@gmail.com>)
List pgsql-hackers
On Mon, Oct 31, 2011 at 1:08 PM, Merlin Moncure <mmoncure@gmail.com> wrote:
> On Mon, Oct 31, 2011 at 12:49 PM, Merlin Moncure <mmoncure@gmail.com> wrote:
>> On Mon, Oct 31, 2011 at 12:09 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>> Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
>>>> On 31.10.2011 17:44, Mark Hills wrote:
>>>>> Could libpq be reasonably modified to allow this?
>>>
>>>> I believe it's doable in theory, no-one has just gotten around to it.
>>>> Patches are welcome.
>>>
>>> Can't you do that today with a multi-command string submitted to
>>> PQsendQuery, followed by multiple calls to PQgetResult?
>>
>> Multi command string queries don't support parameterization.  The way
>> I do it is to keep an application managed stack of data (as an array
>> of record types) to send that is accumulated when the last stack is in
>> transit.  Then when the last response comes in you repeat.
>
> (offlist) in more detail, what I do here is to place action data into
> a composite type and parameterize it into an array.  That array is
> passed directly to a receiving query or a function if what's happening
> in the server is complex.  We wrote a library for that purpose: see
> here:
>
> http://libpqtypes.esilo.com/
> and especially here:
> http://libpqtypes.esilo.com/man3/pqt-composites.html
>
> so that while the connection is busy, and data is coming in from the
> app, you continually PQputf() more records into the array that is
> going to be shipped off to the server when the connection becomes
> available.
>
> On the query that gets to the server, it can be as simple as:
> "insert into foo select unnest(%foo[])"
>
> "select work_on_data(%foo[])"
>
> libpqtypes sends all the data in native binary formats so is very fast.

heh, sorry for the noise here :-).

merlin


pgsql-hackers by date:

Previous
From: Merlin Moncure
Date:
Subject: Re: Multiple queries in transit
Next
From: Josh Berkus
Date:
Subject: Re: unite recovery.conf and postgresql.conf