Re: PostgreSQL gaps wrt to java, and jdbc

From: Kevin Wooten <kdubb(at)me(dot)com>
To: hlinnaka(at)iki(dot)fi
Cc: Dave Cramer <davecramer(at)gmail(dot)com>, List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: PostgreSQL gaps wrt to java, and jdbc
Date: 2015-07-07 20:04:48
Message-ID: 652E425F-7564-43E5-A3E7-86EE00E6157A@me.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Although what you suggest might be useful. For the ng driver we’ve handled that. At startup we download every type and map them based on the send,recv,in,out. So we just specify them for each query.

As far as “coercion" goes maybe a better term would be “deduction”. There are numerous cases where it would be great if we could send the server a “don’t care” type and just a binary format. Instead we have to specify a type and format together. Doing this causes issues in edge cases (e.g. strings coming back padded because we specified varchar but the column was text).

Actually an easier solution specific to our implementation would be to simply tell the driver to always return results in binary when it’s available. It would cover most cases including removing the parse/bind step for many queries.

> On Jul 7, 2015, at 12:46 PM, Heikki Linnakangas <hlinnaka(at)iki(dot)fi> wrote:
>
> On 07/07/2015 09:31 PM, Kevin Wooten wrote:
>> == Binary type coercion ==
>> The biggest impediment I’ve run into is the fact that PG will not
>> attempt coercion on binary types. If you specify a binary type in the
>> protocol, that’s the final word. A better system would be to have PG
>> perform the same coercion it does for text types and then send the
>> results back with coerced types, in binary; finally falling back to
>> text when binary cannot be produced. This would solve almost every
>> issue we have had to work around in the “ng” driver.
>
> Can you elaborate? I'm confused, because the server can produce binary output for any datatype that has binary output functions. That covers all built-in datatypes and all extension datatypes people use in practice.
>
> What I've imagined to be a problem, though, is that you have to either understand the binary representation of all datatypes in the client, or you have to request binary for only those datatypes you can handle. And to know which datatype a result set's column has, you have to Describe it before fetching the results, which adds an extra round-trip. So it would be handy if the driver could provide the server a list of datatypes that should be sent as binary, as a one-time operation at the beginning of the session for example, rather than indicating for each column in each query separately.
>
> - Heikki
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kevin Wooten 2015-07-07 20:08:47 Re: PostgreSQL gaps wrt to java, and jdbc
Previous Message Heikki Linnakangas 2015-07-07 20:02:27 Re: PostgreSQL gaps wrt to java, and jdbc