BUG #1594: ResultSet.getBytes() vs db encoding latin1

Поиск
Список
Период
Сортировка
От Pascal Lambert
Тема BUG #1594: ResultSet.getBytes() vs db encoding latin1
Дата
Msg-id 20050412203105.BE8EDF1150@svr2.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #1594: ResultSet.getBytes() vs db encoding latin1  (Kris Jurka <books@ejurka.com>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      1594
Logged by:          Pascal Lambert
Email address:      pascall@caddy.ca
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("");
    }
}

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #1593: Problem with installation
Следующее
От: Kris Jurka
Дата:
Сообщение: Re: BUG #1594: ResultSet.getBytes() vs db encoding latin1