agora inbox for pljava-dev@postgresql.org  
help / color / mirror / Atom feed
[Pljava-dev] char with trailing space, PreparedStatement.setObject & SetString
3+ messages / 0 participants
[nested] [flat]

* [Pljava-dev] char with trailing space, PreparedStatement.setObject & SetString
@ 2006-06-27 15:27  
  0 siblings, 1 reply; 3+ messages in thread

From:  @ 2006-06-27 15:27 UTC (permalink / raw)

Hi,

Trailing space are not handled properly by setObject & setString.

PreparedStatement pstmt = connection.prepareStatement(
   "select * from mytable where mycharcolumn = ?");

String myString = "abc ";
pstmt.setObject(1, myString); // or setObject(1, myString, Types.CHAR) or 
setString(1, myString)

No rows are returned, but using trim works fine as in:
pstmt.setObject(1, myString.trim());

My environment is Pl/Java 1.3, Sun JDK 1.5.07,  PostgreSQL 8.1.4, Windows XP 
SP2

With PostgreSQL own (non pl/java) jdbc driver, setObject on char works fine 
without the trim.

Thanks,
Jean-Pierre Pelletier






^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* [Pljava-dev] char with trailing space, PreparedStatement.setObject & SetString
@ 2006-06-27 15:47  
  parent: 
  0 siblings, 1 reply; 3+ messages in thread

From:  @ 2006-06-27 15:47 UTC (permalink / raw)

Hi Jean-Pierre,
I'm not sure this is incorrect behavior. There's nothing in the spec 
that indicates that String values should be trimmed by setString and 
setObject. On the contrary. Some datatypes (the CHAR in particular) are 
sensitive to whitespace according to the SQL standard. Perhaps the 
client jdbc driver is doing something wrong here?

Regards,
Thomas Hallgren


JEAN-PIERRE PELLETIER wrote:
> Hi,
>
> Trailing space are not handled properly by setObject & setString.
>
> PreparedStatement pstmt = connection.prepareStatement(
>    "select * from mytable where mycharcolumn = ?");
>
> String myString = "abc ";
> pstmt.setObject(1, myString); // or setObject(1, myString, Types.CHAR) or 
> setString(1, myString)
>
> No rows are returned, but using trim works fine as in:
> pstmt.setObject(1, myString.trim());
>
> My environment is Pl/Java 1.3, Sun JDK 1.5.07,  PostgreSQL 8.1.4, Windows XP 
> SP2
>
> With PostgreSQL own (non pl/java) jdbc driver, setObject on char works fine 
> without the trim.
>
> Thanks,
> Jean-Pierre Pelletier
>
>
> _______________________________________________
> Pljava-dev mailing list
> Pljava-dev at gborg.postgresql.org
> http://gborg.postgresql.org/mailman/listinfo/pljava-dev
>   





^ permalink  raw  reply  [nested|flat] 3+ messages in thread

* [Pljava-dev] char with trailing space, PreparedStatement.setObject & SetString
@ 2006-06-27 16:07  
  parent: 
  0 siblings, 0 replies; 3+ messages in thread

From:  @ 2006-06-27 16:07 UTC (permalink / raw)

Hi Thomas,

There are very few char columns on my system, I can easily live with 
explicit trim
in my application code, I only wanted to let you guys know.

I am not sure which of the two JDBC implementations is right.
psql and pgadmin would both handle char as expected.
As for JDBC, you might want to know how other dbms are handling this.

Thanks for your reply.
Jean-Pierre Pelletier

>From: Thomas Hallgren <thomas at tada.se>
>To: JEAN-PIERRE PELLETIER <pelletier_32 at sympatico.ca>
>CC: pljava-dev at gborg.postgresql.org
>Subject: Re: [Pljava-dev] char with trailing 
>space,	PreparedStatement.setObject & SetString
>Date: Tue, 27 Jun 2006 17:47:24 +0200
>
>Hi Jean-Pierre,
>I'm not sure this is incorrect behavior. There's nothing in the spec that 
>indicates that String values should be trimmed by setString and setObject. 
>On the contrary. Some datatypes (the CHAR in particular) are sensitive to 
>whitespace according to the SQL standard. Perhaps the client jdbc driver is 
>doing something wrong here?
>
>Regards,
>Thomas Hallgren
>
>
>JEAN-PIERRE PELLETIER wrote:
>>Hi,
>>
>>Trailing space are not handled properly by setObject & setString.
>>
>>PreparedStatement pstmt = connection.prepareStatement(
>>    "select * from mytable where mycharcolumn = ?");
>>
>>String myString = "abc ";
>>pstmt.setObject(1, myString); // or setObject(1, myString, Types.CHAR) or 
>>setString(1, myString)
>>
>>No rows are returned, but using trim works fine as in:
>>pstmt.setObject(1, myString.trim());
>>
>>My environment is Pl/Java 1.3, Sun JDK 1.5.07,  PostgreSQL 8.1.4, Windows 
>>XP SP2
>>
>>With PostgreSQL own (non pl/java) jdbc driver, setObject on char works 
>>fine without the trim.
>>
>>Thanks,
>>Jean-Pierre Pelletier
>>
>>
>>_______________________________________________
>>Pljava-dev mailing list
>>Pljava-dev at gborg.postgresql.org
>>http://gborg.postgresql.org/mailman/listinfo/pljava-dev
>>






^ permalink  raw  reply  [nested|flat] 3+ messages in thread


end of thread, other threads:[~2006-06-27 16:07 UTC | newest]

Thread overview: 3+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2006-06-27 15:27 [Pljava-dev] char with trailing space, PreparedStatement.setObject & SetString 
2006-06-27 15:47 ` 
2006-06-27 16:07   ` 

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox