Re: ResultSet internal data type handling

From: John Lister <john(dot)lister(at)kickstone(dot)com>
To: Luca Ferrari <fluca1978(at)infinito(dot)it>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: ResultSet internal data type handling
Date: 2009-05-12 10:08:57
Message-ID: 4A094AB9.9090807@kickstone.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

>> I believe the original wire protocol only supported text values hence
>> the driver converts all data into a string before sending it to the
>> server... Because of this the server will generally convert any value
>> into the appropriate type (if this conversion is possible) which saves
>> the driver from doing so. This simplifies the driver at the expense of
>> extra network traffic and errors thrown by the server as opposed to the
>> driver. The original authors can probably expand on this
>>
>
> It is not clear to me: the driver is receiving always strings from the server,
> and therefore must do the conversion by itself. The fact is that such
> conversion is not checked against the table definition. I would expect an
> SQLException if I try to read an integer as a string or viceversa. Instead the
> conversion can work and the driver says nothing about.
>
For outgoing values, the current driver delays doing any work with the
query until it is actually executed. This has a number of consequences
and benefits which have been discussed before - see threads about
preparedstatements, etc. The double edged sword of this is that by
delaying execution the driver knows the types of the parameters being
passed in which can help planning, the downside is that it doesn't know
the types required so can't generate errors. While it is true that if
the query is fairly simple and done against a table then it could make
the check before submitting the query. But what does it do for queries
like this:

SELECT ?

The parameter can be of any type. Generally the argument is that you
cannot know the param types from the query itself.

However for incoming values/conversions, as oliver mentioned the JDBC
spec requires a driver do some conversions automatically (int -> string).

JOHN

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Oliver Jowett 2009-05-12 10:09:12 Re: ResultSet internal data type handling
Previous Message Luca Ferrari 2009-05-12 10:03:25 Re: ResultSet internal data type handling