Re: Extended query protocol and exact types matches.

From: Dmitriy Igrishin <dmitigr(at)gmail(dot)com>
To: Merlin Moncure <mmoncure(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Extended query protocol and exact types matches.
Date: 2010-12-10 18:26:11
Message-ID: AANLkTi=+FQjvL4RbiOWAxFB2w=219YMoTVD5-hZajPNH@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers pgsql-sql

2010/12/10 Merlin Moncure <mmoncure(at)gmail(dot)com>

> On Fri, Dec 10, 2010 at 12:40 PM, Dmitriy Igrishin <dmitigr(at)gmail(dot)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.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Josh Kupershmidt 2010-12-10 19:13:06 Re: monitoring warm standby lag in 8.4?
Previous Message Alexander Farber 2010-12-10 18:13:02 Re: A cronjob for copying a table from Oracle

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2010-12-10 19:21:04 Re: pgsql: Reduce spurious Hot Standby conflicts from never-visible records
Previous Message David E. Wheeler 2010-12-10 18:21:56 Re: Extensions, patch v16

Browse pgsql-sql by date

  From Date Subject
Next Message Igor Neyman 2010-12-11 01:44:42 Re: sqlplus reporting equivalent in postgres?
Previous Message Merlin Moncure 2010-12-10 18:05:44 Re: Extended query protocol and exact types matches.