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.
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 |
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 |
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. |