2011/11/11 Mateusz Łoskot <mate...@loskot.net>

> Hi Dmitriy,
>
> 2011/11/11 Dmitriy Igrishin <dmit...@gmail.com>:
> > 2011/11/11 Mateusz Łoskot <mate...@loskot.net>
> >>
> >> Considering query for binary data stored directly in tables
> >> using libpq API, I'm trying to understand what is the difference
> >> between specifying binary format in functions like
> >> PQexecParams and use of BINARY CURSOR.
> >>
> >> For example, with query like this:
> >>
> >> SELECT large_image FROM tbl;
> >>
> >> where large_image is a custom type,
> >> is there a big difference between binary format specified
> >> to libpq and use of BINARY CURSOR?
> >> Is it client-side binary vs server-side binary processing?
> >>
> >> Simply, I'd like to avoid textual<->binary conversions at any stage.
> >>
> >> (Endianness is not an issue here.)
> >>
> >> Best regards,
> >
> > "...The concept of a binary cursor as such is thus obsolete when using
> > extended query protocol — any cursor can be treated as either text or
> > binary. ..."  from
> > http://www.postgresql.org/docs/9.1/static/sql-declare.html
>
> Thanks, this is interesting.
> I've been reading more about this and the picture seems to be clear:
>
> "Note: The choice between text and binary output is determined by the
> format
> codes given in Bind, regardless of the SQL command involved."
>
>
> http://www.postgresql.org/docs/9.1/static/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY
>
> However, I'm not sure how I can utilise this feature of the extended
> query protocol
> with libpq API. Concretely, how to translate the binding with format
> specification here
>
> "choice between text and binary output is determined by the format
> codes given in Bind"
>
> Does it mean the protocol automagically switches between text/binary
> depending on
> format code (0|1) specified to PQexecParams and friends?
>
The Bind(F) message contains array with
the parameter format codes. So, yes, all you need
is to pass array with format codes to ::PQexecParams
and libpq will let it go.

>
> Side question, is this new feature of the extended query protocol in 9.x
> line?
>
The "extended query" sub-protocol introduced in
protocol version 3.0.


-- 
// Dmitriy.

Reply via email to