Re: Blobs and length +- 1

Поиск
Список
Период
Сортировка
От Peter Mount
Тема Re: Blobs and length +- 1
Дата
Msg-id 5.0.2.1.0.20010301211902.00a6a6d0@mail.retep.org.uk
обсуждение исходный текст
Ответ на JBuilder4  (Catalin CIOCOIU <catalin.ciocoiu@inpg.fr>)
Список pgsql-jdbc
At 09:31 01/03/01 -0500, Philip Crotwell wrote:

>Hi
>
>I am using Blobs with jdbc and postgres7.0.3 and noticed that my blobs
>were coming out of the database 1 byte shorter than they went in! The
>problem was that I was using
>byte[] b = blob.getBytes(1, (int)blob.length());
>instead of
>byte[] b = blob.getBytes(0, (int)blob.length());
>
>But the javadocs for java.sql.Blob says, that the position is 1 based:

Whoops. I'll double check. I probably was too happy to finally get the
streaming to work that this one crept in ;-)

>Returns as an array of bytes part or all of the BLOB value that this Blob
>object designates. The 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 - is the number of consecutive bytes to be copied
>
>
>It seems to me that this says that getBytes(1, length) should be the
>entire blob instead of all but the first byte.
>
>Is this a postgres jdbc bug, or am I misreading the javadocs?

No a bug. The rule with JDBC is: Everything starts with 1.

I'll fix it in tomorrows commit.


>The fix would be to subtract one, ie:
>     public byte[] getBytes(long pos,int length) throws SQLException {
>         lo.seek((int)pos-1,LargeObject.SEEK_SET);
>         return lo.read(length);
>     }
>
>thanks,
>PHilip
>
>PS For what it is worth and if it is the case, I think it is a pretty dumb
>thing for sun to make blob byte arrays 1 based. I would actually prefer 0
>based, but being compatible is probably more important.

Same here ;-)

Peter


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

Предыдущее
От: Peter Mount
Дата:
Сообщение: Re: JBuilder4
Следующее
От: Peter T Mount
Дата:
Сообщение: Re: [Patch] Implementation of DatabaseMetaData.getIndexInfo()