Skip site navigation (1) Skip section navigation (2)

Re: setObject on PGInterval throws "Unknown Type null"

From: "Jean-Pierre Pelletier" <pelletier_32(at)sympatico(dot)ca>
To: "Oliver Jowett" <oliver(at)opencloud(dot)com>,"Kris Jurka" <books(at)ejurka(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: setObject on PGInterval throws "Unknown Type null"
Date: 2005-01-26 19:22:53
Message-ID: BAYC1-PASMTP0228507F4378F1CA76C8E995870@cez.ice (view raw or flat)
Thread:
Lists: pgsql-jdbc
With JDBC Build 309,
pstmt.setObject(i, x)
has to be replaced by

if (x == null) pstmt.setNull(i, Types.SomeType) else pstmt.setObject(i, x)
which may be simplified as

pstmt.setObject(i, x, Types.SomeType)

That's what I was referring to when I said that setObject(i, x) has been 
rendered useless

The type information could be provided regardless of null by a method 
specific to each class.
It could use new method names or be overloaded versions of setObject

for PGInterval, it could also hide SQL null => new PGInterval

public void setObject(int parameterIndex, PGInterval x)
throws SQLException
{
    this.setObject(parameterIndex, x == null ? new PGInterval() : x);
}

These methods could also be available for jdbc buil-in types

public void setObject(int parameterIndex, Integer x)
throws SQLException
{
    this.setObject(parameterIndex, x, Types.INTEGER);
}

public void setObject(int parameterIndex, String x)
throws SQLException
{
    this.setObject(parameterIndex, x, Types.VARCHAR); // could also be 
this.setString(parameterIndex, x);
}

I understand that this is not standard JDBC, but as you guys highlighted, 
there is no provision
in the standard for supplying type with null values on extended types. Plus 
it would provide some form
of backward compatibility for setObject(i,x)

Jean-Pierre Pelletier

----- Original Message ----- 
From: "Oliver Jowett" <oliver(at)opencloud(dot)com>
To: "Kris Jurka" <books(at)ejurka(dot)com>
Cc: "Jean-Pierre Pelletier" <pelletier_32(at)sympatico(dot)ca>; 
<pgsql-jdbc(at)postgresql(dot)org>
Sent: Tuesday, January 25, 2005 6:33 PM
Subject: Re: [JDBC] setObject on PGInterval throws "Unknown Type null"


> Kris Jurka wrote:
>>
>> On Wed, 26 Jan 2005, Oliver Jowett wrote:
>>
>>
>>>What about when we prepare a statement with a null parameter, then later 
>>>use it with a non-null parameter? There is some protocol code needed here 
>>>to get the inferred types back.
>>>
>>>We currently break in the case where parameter types change between 
>>>executions, but that's more easily fixable since we have all the 
>>>necessary information already available.
>>>
>>
>>
>> I'm not sure I'm willing to make that distinction, they seem like the 
>> same thing to me.  If we fixed the second case and found the solution to 
>> the first intractable then you could make the case to require typed 
>> nulls, but since the second case is broken that argument doesn't carry a 
>> lot of weight with me.
>
> It's not unfixable, it just means there is more work required to fix the 
> existing brokenness.
>
> -O
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster 


In response to

Responses

pgsql-jdbc by date

Next:From: Oliver JowettDate: 2005-01-26 19:47:28
Subject: Re: setObject on PGInterval throws "Unknown Type null"
Previous:From: Kris JurkaDate: 2005-01-26 18:59:18
Subject: Re: JDBC HighLoad

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group