Re: [PATCHES] libpq type system 0.9a - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [PATCHES] libpq type system 0.9a
Date
Msg-id 9869.1207697384@sss.pgh.pa.us
Whole thread Raw
In response to Re: [PATCHES] libpq type system 0.9a  (Andrew Chernow <ac@esilo.com>)
Responses Re: [PATCHES] libpq type system 0.9a  (Andrew Chernow <ac@esilo.com>)
Re: [PATCHES] libpq type system 0.9a  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
Andrew Chernow <ac@esilo.com> writes:
> Kinda what my last suggestion was.  Some tid-bits need to be reside in libpq, 
> but very little.  I was thinking PQtypesEnable(bool) which would dlopen 
> libpqtypes and map all functions needed.  This would leave the function bodies 
> of PQputf, PQgetf, PQparamExec, etc... as simple proxy functions to the 
> dynamically loaded functions.  This removes any bloat that people don't like 
> right now but still allows one to use libpq as the primary interface, rather 
> than having to fiddle with libpq and some other API.

This is still 100% backwards.  My idea of a libpq hook is something that
could be used by libpgtypes *and other things*.  What you are proposing
is something where the entire API of the supposed add-on is hard-wired
into libpq.  That's just bad design, especially when the adequacy of
the proposed API is itself in question.

When I say I'd accept some hooks into libpq, I mean some hooks that
could be used by either libpgtypes or something that would like to do
something roughly similar but with a different API offered to clients.
The particular hook that you seem to mostly need is the ability to
allocate some private memory associated with a particular PGconn object,
and maybe also with individual PGresults, and then to be able to free
that at PQclear or PQfinish.  Try designing it like that.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [PATCHES] libpq type system 0.9a
Next
From: Andrew Chernow
Date:
Subject: Re: [PATCHES] libpq type system 0.9a