Re: Binary protocol support for JDBC - Mailing list pgsql-jdbc

From Radosław Smogura
Subject Re: Binary protocol support for JDBC
Date
Msg-id 201007202317.09772.rsmogura@softperience.eu
Whole thread Raw
In response to Re: Binary protocol support for JDBC  (Kris Jurka <books@ejurka.com>)
List pgsql-jdbc
> > This should be done without problem, because I added binary parameter to
> > Connection and Datasources, so user can decide to use binary mode
> > retrieve or current text mode (default). Currently I implemented
> > retrieve of short, int, long, date and BigDecimal. Other simple and
> > basic types, used in typically application I will implement shortly.
>
> One of the difficulties in the existing patch is knowing when to request
> binary transfer and when to request text transfer because for the first
> execution the datatypes are not known.  How have you addressed
> this problem?

Hm... I've done only binary retrieve. I can think wrong, but I probably read
and I didn't inspected this, but after you bind statement you can't change
mode (binary / transfer) of parameters, so _probably_ in prepared statement
will be inpossible to call setInt(1, val), and on 2nd call setString(1,
stringVal) - not sure.

About requesting binary transfer I assumed this
1) user sets binary for it's own responsibility (he must test application, and
there is nothing special in this, because PG supporrts too many and special
types, eg. inet address), so for example assuming that "scientific user" will
be able to use it's own types may be wrong.
2) i request all result parameters to be in binary form, i decided to write
parsers for all supported types :) with following code
        if (isBinary()) {
            pgStream.SendInteger2(1);
            pgStream.SendInteger2(1);
        }else{
            pgStream.SendInteger2(0);
        }
///Orignal code from QueryExecutorImpl.sendBind
        pendingBindQueue.add(portal);

        if (bindException != null)
        {
            throw bindException;
        }
so yours way is better.

Regards,
Radek

pgsql-jdbc by date:

Previous
From: Radosław Smogura
Date:
Subject: Re: Binary protocol support for JDBC
Next
From: Craig Ringer
Date:
Subject: JPA and desktop apps