Re: Problem with bytea getBytes and setBytes - Mailing list pgsql-jdbc

From Barry Lind
Subject Re: Problem with bytea getBytes and setBytes
Date
Msg-id 3F8439B9.5060602@xythos.com
Whole thread Raw
In response to Problem with bytea getBytes and setBytes  (Xavier Poinsard <xpoinsard@openpricer.com>)
Responses Re: Problem with bytea getBytes and setBytes
List pgsql-jdbc
Xavier,

You don't mention what versions you are using, but I suspect you are
using a 7.3 server.  If so this is a known bug in the 7.3 database.  The
bug is that the server is incorrectly doing character set translation
for binary values (i.e. the bytea data).  The work around for this bug
is to set the character set of your database to UNICODE.  Unfortunately
you can't change the character set after the database is created, so you
will need to recreate your database.

thanks,
--Barry


Xavier Poinsard wrote:
> I am trying to use a bytea column to store binary data, but the getBytes
> and setBytes methods aren't working as expected.
> I suspect a strange escaping occuring.
> I ran the following code :
>
> // insert test value
> PreparedStatement stmtInsert connection.prepareStatement("insert into
> test_blob (colblob) values(?)");
> byte testBytes[] = new byte[255];
> for (int i=0;i<255;i++)
>    testBytes[i]=(byte)(i-128);
> stmtInsert.setBytes(1,testBytes);
> int count = stmtInsert.executeUpdate();
> stmtInsert.close();
> stmtInsert = null;
>
> // read and compare test value
> PreparedStatement stmtSelect =connection.prepareStatement("select
> colblob from test_blob");
> ResultSet rs = stmtSelect.executeQuery();
> while (rs.next()){
>    byte resByte[]=rs.getBytes(1);
>    for (int i=0;i<255;i++){
>       if (resByte[i]!=testBytes[i])
>          System.out.println("Problem with byte "+i + " "+resByte[i]+"
> different from original " + testBytes[i] );
>       }
>    }
> rs.close();
>
> The results (truncated) :
> Problem with byte 32 -62 different from original -96
> Problem with byte 33 -96 different from original -95
> Problem with byte 34 -62 different from original -94
> Problem with byte 35 -95 different from original -93
> Problem with byte 36 -62 different from original -92
> Problem with byte 37 -94 different from original -91
> Problem with byte 38 -62 different from original -90
> ...
>
> Xavier Poinsard.
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faqs/FAQ.html
>




pgsql-jdbc by date:

Previous
From: Xavier Poinsard
Date:
Subject: Problem with bytea getBytes and setBytes
Next
From: Roger Bjärevall
Date:
Subject: DatabaseMetaData.getTypeInfo() question