Re: Blobs and length +- 1

From: Peter Mount <peter(at)retep(dot)org(dot)uk>
To: Philip Crotwell <crotwell(at)seis(dot)sc(dot)edu>, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Blobs and length +- 1
Date: 2001-03-01 21:21:22
Message-ID: 5.0.2.1.0.20010301211902.00a6a6d0@mail.retep.org.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

  • JBuilder4 at 2001-03-01 09:31:57 from Catalin CIOCOIU

Browse pgsql-jdbc by date

  From Date Subject
Next Message William Webber 2001-03-02 03:37:01 [Patch] Implementation of DatabaseMetaData.getIndexInfo()
Previous Message Peter Mount 2001-03-01 21:18:31 Re: JBuilder4