Что изменилось между postgres jdbc 8.4 и 9 в отношении байтовых массивов?

Я использую Mac OSX 10.6 с PostgreSQL 9.0. Я написал простое приложение Java, которое вставляет изображение в байтовое поле, а затем запрашивает то же поле для его проверки.

Таблица:

 CREATE TABLE test.test_table
   (
   id integer NOT NULL,
  image bytea,
  CONSTRAINT test_table_pkey PRIMARY KEY (id)
);

Программа выглядит примерно так:

//insert the file
    PreparedStatement ps = connection.prepareStatement("INSERT INTO test.test_table( id, image ) VALUES (?, ?);");
            byte[] bytesFromFile = readFile("img/test1.bmp");
            ps.setInt(1, 1);
            ps.setBytes(2, bytesFromFile);
            ps.execute();
            ps.close();

            PreparedStatement stmt = connection.prepareStatement("Select id,image from test.test_table");
            ResultSet rs = stmt.executeQuery();
    //Get the file from the BD  and save it to the FS 
            while (rs.next()) {
                String id = rs.getString(1);
                InputStream imageStream = rs.getBinaryStream(2);
                String imageName = OUTPUT_DIR + "/" + id + ".bmp";
                FileOutputStream f = new FileOutputStream(imageName);
                byte buff[] = new byte[1024];
                int l;
                while ((l = imageStream.read(buff)) > 0) {
                    f.write(buff, 0, l);
                }
                f.close();
                System.out.println("CREATED : " + imageName);// + " size " +

            }

Вот факты. postgresql-9.0-801.jdbc4.jar это отлично работает как в PostgreSQL 8.4 и с PostgreSQL 9

  • Использование драйвера 8.4-701.jdbc4 работает только в PostgreSQL 8.4.

  • Использование драйвер 8.4-701.jdbc4 с PostgreSQL 9 не работает. Извлеченный файл отличается. Md5 показывает, что содержимое в базе данных совпадает с исходным файлом. Поэтому я предполагаю, что проблема заключается во время извлечения файла.
  • Я могу обновить драйвер, это не проблема. Меня беспокоит: что изменилось внутри протокола связи, который больше не поддерживается в PostgreSQL 9?

    7
    задан Dani Cricco 28 January 2011 в 12:35
    поделиться