The following bug has been logged online: Bug reference: 1594 Logged by: Pascal Lambert Email address: [EMAIL PROTECTED] PostgreSQL version: 7.3.9 Operating system: linux Description: ResultSet.getBytes() vs db encoding latin1 Details:
The bug is related with the jdbc driver. The getBytes() method of the ResultSet didn't return the correct bytes. It can be reprodure easly with the following with a database using encoding LATIN1. But it work fine when using UNICODE encoding. _________________________________________________________ /** * CREATE DATABASE BUGBYTEA WITH ENCODING='LATIN1'; * CREATE TABLE IMAGES ( IMAGE BYTEA ); */ public class BugBytea { public static void main(String[] args) { try { BugBytea o = new BugBytea(); o.run(); } catch (Exception e) { e.printStackTrace(); } } private void run() throws Exception { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql://caddy_java/bugbytea", "postgres", ""); Statement stmt = con.createStatement(); stmt.executeUpdate("truncate table images"); PreparedStatement pstmt = con.prepareStatement("insert into images values (?)"); byte[] bytes = {-84, -19, 0, 5}; pstmt.setBytes(1, bytes); pstmt.execute(); ResultSet rs = stmt.executeQuery("select image from images"); rs.next(); byte[] result = rs.getBytes(1); System.out.println("bytes="); this.printByte(bytes); System.out.println("result="); this.printByte(result); } private void printByte(byte[] bytes) { for (int i=0; i<bytes.length; i++) { if (i>0) System.out.print(", "); System.out.print(bytes[i]); } System.out.println(""); } } ---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend