Bug in JDBC driver w/BLOBs

Поиск
Список
Период
Сортировка
От Tristan Tarrant
Тема Bug in JDBC driver w/BLOBs
Дата
Msg-id 1119368516.30387.23.camel@localhost.localdomain
обсуждение исходный текст
Ответы Re: Bug in JDBC driver w/BLOBs  (Kris Jurka <books@ejurka.com>)
Список pgsql-jdbc
Dear all,
first of all I would like to thank all you hard-working postgresql JDBC hackers: I have been using your work for quite a while, and I appreciate what you do.

Now the bad news: I believe I have found a bug in the pgsql jdbc driver regarding read access of BLOBs. According to Sun's JDBC documentation, BLOBs are 1-based, but the driver makes the assumption they are 0-based.
Here is the excerpt from javadoc:

public byte[] getBytes(long pos, int length)
                throws SQLException
Retrieves all or part of the BLOB value that this Blob object represents, as an array of bytes. This byte array contains up to length consecutive bytes starting at position pos.

Parameters:
pos - the ordinal position of the first byte in the BLOB value to be extracted; the first byte is at position 1
length - the number of consecutive bytes to be copied

After patching org/postgresql/jdbc2/AbstractJdbc2Blob.java (I am using the 8.0 311 sources) as follows:

--- AbstractJdbc2Blob.java~     2005-06-21 17:11:20.000000000 +0200
+++ AbstractJdbc2Blob.java      2005-06-21 17:11:20.000000000 +0200
@@ -38,7 +38,7 @@

     public byte[] getBytes(long pos, int length) throws SQLException
     {
-        lo.seek((int)pos, LargeObject.SEEK_SET);
+        lo.seek((int)(pos-1), LargeObject.SEEK_SET);
         return lo.read(length);
     }

everything works as advertised.
Am I right ? Am I completely wrong ?

Let me know.

Tristan
Вложения

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

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: problem with types in new jdbc driver
Следующее
От: Kris Jurka
Дата:
Сообщение: Re: Bug in JDBC driver w/BLOBs