2010/12/10 Merlin Moncure <mmonc...@gmail.com>

> On Fri, Dec 10, 2010 at 12:40 PM, Dmitriy Igrishin <dmit...@gmail.com>
> wrote:
> > Hey Merlin,
> >
> > Thank you for explanation !
> >
> > Yes, I understand that specifying NULL instead real OID will provoke
> > the parser attempts to infer the data types in the same way as it would
> > do for untyped literal string constants.
> > But there are three string types: text, varchar(n) and character(n) which
> > has a different OIDs but they are all in the same type category. So, is
> it
> > worth it to implement some Varchar and Character types (which actually
> > wraps Text) at the library level or specifying the OID of text for
> contexts
> > where these parameters actually varchar or char (i.e. types of same
> > category) are safe?
>
> not really, at the end of the day, you are coming in from C char*, so
> just send TEXTOID and let the server worry about what to do if say you
> are passing into varchar or (more rarely char(n)).  libpqtypes, the
> library you are pretending doesn't exist,

Me ? :-) !true ! I just pretend not to bloat libpq and keep it clean...

> does this
> (http://libpqtypes.esilo.com/man3/pqt-specs.html).  PGtext is
> typedef'd char* and the only format string for character types is
> %text.
>
> IMNSHO, If you wanted to attack this problem in an actually novel and
> useful way in C++ style, I would consider taking the libpqtypes
> library, rip out all the format string stuff, and rig variadic
> templates so you could leverage variadic queries.  Maybe this could be
> integrated into libpqxx, not sure.
>

> printf : cout :: : PQexecf  : query
>
> query(conn, "select $1 + $2", 3, 7);
>
> 'query' is hypothetical function that uses template type inference,
> mapping/marshaling data and building the data structure that
> PQexecParams points to (in libpqtypes, the PGparam).  Parsing the type
> format string is expensive enough that we had to implement a client
> side prepare to reduce the cost of searching type handlers over and
> over.  Of course, cout is not really faster than printf, but that's
> another topic :-).
>
I've implemented client side prepare too! :-) So, I am on right way and
not alone! :-)

>
> merlin
>

Thank you very much ! You help me a lot!

-- 
// Dmitriy.

Reply via email to