Re: Most efficient way for libPQ .. PGresult serialization - Mailing list pgsql-hackers

From Joshua Bay
Subject Re: Most efficient way for libPQ .. PGresult serialization
Date
Msg-id CABb-U3asES1bekhWzMNWUBu+KLzN-pJQVk+RAc2kupcW1BN_zg@mail.gmail.com
Whole thread Raw
In response to Re: Most efficient way for libPQ .. PGresult serialization  (Tatsuo Ishii <ishii@sraoss.co.jp>)
Responses Re: Most efficient way for libPQ .. PGresult serialization  (Craig Ringer <craig@2ndquadrant.com>)
List pgsql-hackers
Thanks,
But I don't think my question was clear enough. 

I already managed the connection pooling, and what I need is to serialize the result.

If PGresult was a contiguous block, I could have just create buffer and call memcpy for serialization, but structure of result seems much more complicated. 

So, I was asking if there is an easy way to achieve serialization

Thanks!



On Thu, Aug 18, 2016 at 1:33 AM, Tatsuo Ishii <ishii@sraoss.co.jp> wrote:
> On 18 August 2016 at 10:05, Joshua Bay <joshuabay93@gmail.com> wrote:
>
>> Hi,
>>
>> I was trying to implement a middleware that lies between client and
>> postgres.
>>
>> So, this middleware is supposed to run query with libpq, do its job on
>> them, and then serialize the result of query, and send it to the client !
>> (client deserializes to PGresult)
>>
>> I could simply iterate over rows and columns but than that would be slow.
>> I also found that query results consist of 3 parts (PGresult, tuples, data
>> blocks).
>>
>> Could I please get some pointers ? :)
>>
>>
> Take a look at the code for PgBouncer and PgPool-II. Both implement
> PostgreSQL protocol proxies you could use as starting points.

This one is based on Pgpool-II.

https://github.com/treasure-data/prestogres

Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

pgsql-hackers by date:

Previous
From: Stefan Kaltenbrunner
Date:
Subject: Re: WIP: About CMake v2
Next
From: Tom Lane
Date:
Subject: Re: Use pread and pwrite instead of lseek + write and read