Re: Exception storing ipaddress with JBoss after upgrade to

From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Joost Kraaijeveld <J(dot)Kraaijeveld(at)Askesis(dot)nl>
Cc: Dave Cramer <pg(at)fastcrypt(dot)com>, "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Exception storing ipaddress with JBoss after upgrade to
Date: 2005-09-28 00:20:19
Message-ID: 4339E1C3.5000800@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Joost Kraaijeveld wrote:

> On Tue, 2005-09-27 at 09:48 -0400, Dave Cramer wrote:
>
>>The new driver uses server side prepared statements and is much more
>>particular about the types being sent.
>>
>>You can force v2 protocol, or create a PGInet type extending PGObject
>
> I do not really understand why: the postgresql log file shows that the
> error is happening at the backend where no Java is running (and I can
> also not remember that I had to write special code in ODBC: I just send
> a string with a correct ip address and the database backend converted it
> to a inet, but that was long ago and I may remember wrong). All examples
> in the postgresql docs (e.g. example 11-1 setting up a partial index)
> where the inet type is used an ordinary string is passed to the backend.

More recent JDBC drivers pass parameters via the extended query protocol
which puts the parameter value out-of-band from the query (the query
sent to the backend has a $n placeholder where you put the ? in the
query, then the parameter values are sent separately). Associated with
each parameter is a type.

Since you (or rather, JBoss) are telling the JDBC driver that the
parameter is a String, it passes the parameter as a text type.

There's no implicit cast from text to inet, so the backend complains.

It's roughly equivalent to writing out the query with the parameter as
'1.2.3.4'::text -- because the type is explicitly specified you don't
get the implicit casting of a bare string literal that you'd get
otherwise. Or similar to using PREPARE/EXECUTE.

Search the pgsql-jdbc archives for more details.

-O

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Alfredo Rico 2005-09-28 20:27:19 How to retieve binary data (bytea) without problem ?
Previous Message Joost Kraaijeveld 2005-09-27 18:53:09 Re: Exception storing ipaddress with JBoss after upgrade to