Re: [INTERFACES] libpq patch for binding tuples in a result set to user allocated memory - Mailing list pgsql-interfaces

From Tom Lane
Subject Re: [INTERFACES] libpq patch for binding tuples in a result set to user allocated memory
Date
Msg-id 18990.950543823@sss.pgh.pa.us
Whole thread Raw
In response to libpq patch for binding tuples in a result set to user allocated memory  (Joel Reed <jreed@support.ddiworld.com>)
Responses Re: [INTERFACES] libpq patch for binding tuples in a result set to user allocated memory  (Joel Reed <jreed@support.ddiworld.com>)
Re: [INTERFACES] libpq patch for binding tuples in a result set to user allocated memory  (Michael Meskes <meskes@postgresql.org>)
List pgsql-interfaces
Joel Reed <jreed@support.ddiworld.com> writes:
> Having been used to being able to bind tuple data from a result set to
> user allocated memory (rather than having to copy the data out of the
> "libpq" like API's buffers to my memory locations) in my days working
> with ODBC, Oracle & SQLServer's C-API, i created the following patch
> which i thought i'd submit. I've included a README as well. 

I do not like this idea very much --- in the first place, it ties the
application far too tightly to internal representational details that
should be private to libpq, and in the second place the implementation
you offer is full of little gotchas like

>   a). construct an array of PGresAttValue's whose size is equal to the
>       number of columns in the result set. if you don't you'll core dump!

I really doubt that avoiding PQgetvalue() calls is worth taking those
kinds of risks and narrowing our options for future reimplementation of
the library and protocol.

In the long run we'll probably be moving to some more-modern interface
design like CORBA, which should help to address performance concerns
like these.
        regards, tom lane


pgsql-interfaces by date:

Previous
From: Peter Mount
Date:
Subject: RE: [INTERFACES] JDBC driver
Next
From: Joel Reed
Date:
Subject: Re: [INTERFACES] libpq patch for binding tuples in a result set to user allocated memory