Re: PQexecParams with binary resultFormat vs BINARY CURSOR

From: Dmitriy Igrishin <dmitigr(at)gmail(dot)com>
To: Mateusz Łoskot <mateusz(at)loskot(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: PQexecParams with binary resultFormat vs BINARY CURSOR
Date: 2011-11-11 11:00:14
Message-ID: CAAfz9KNOxdJeL3n_Y_ir05dj_aVibUbcN+DDbLTr7TUK+=vaew@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

2011/11/11 Mateusz Łoskot <mateusz(at)loskot(dot)net>

> Hi Dmitriy,
>
> 2011/11/11 Dmitriy Igrishin <dmitigr(at)gmail(dot)com>:
> > 2011/11/11 Mateusz Łoskot <mateusz(at)loskot(dot)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.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Enrico Sirola 2011-11-11 12:03:47 weird pg_statistic problem
Previous Message Mateusz Łoskot 2011-11-11 10:26:26 Re: PQexecParams with binary resultFormat vs BINARY CURSOR