Thread: Bug with blobs?

Bug with blobs?

From
Rob Kirkbride
Date:
Hi,

I was getting an exception thrown when using Hibernate to read blobs but
I've pared it down to something very simple - hopefully it's just
something silly.
Here's the snippet of code :-


            String query = "select imageblob from tempimages where id=1";

                Connection con;
                PreparedStatement s;
                ResultSet rs;

                try {
                    Class.forName(driver);
                    con = DriverManager.getConnection(url, username,
password);
                    s = con.prepareStatement(query);
                    rs = s.executeQuery();
                    rs.next();
                    java.sql.Blob blob = rs.getBlob("imageblob");

It throws a
org.postgresql.util.PSQLException: Bad value for type int :
\377\330\377\340\000 .... <blob data removed>
    at
org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2528)
    at
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2003)
    at org.postgresql.jdbc3.Jdbc3ResultSet.getBlob(Jdbc3ResultSet.java:55)
    at
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBlob(AbstractJdbc2ResultSet.java:323)
    at PgTest.run(PgTest.java:46)
    at PgTest.main(PgTest.java:63)

This is with postgresql 8.0.3 and version 312 of the driver (on Linux)

Help, help! - What am I doing wrong!?

Thanks for any help,

Rob





Re: Bug with blobs?

From
Kris Jurka
Date:

On Thu, 11 Aug 2005, Rob Kirkbride wrote:

> I was getting an exception thrown when using Hibernate to read blobs but
> I've pared it down to something very simple - hopefully it's just
> something silly.
>
>           String query = "select imageblob from tempimages where id=1";
>
>                   java.sql.Blob blob = rs.getBlob("imageblob");
>
> It throws a
> org.postgresql.util.PSQLException: Bad value for type int :
> \377\330\377\340\000 .... <blob data removed>
>   at
> org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2528)
>   at

Postgresql maps Blob data to the oid datatype, not bytea.  For bytea data
you should use getBytes() not getBlob.

Kris Jurka

Re: Bug with blobs?

From
Rob Kirkbride
Date:
Kris Jurka wrote:

>
>
> On Thu, 11 Aug 2005, Rob Kirkbride wrote:
>
>> I was getting an exception thrown when using Hibernate to read blobs but
>> I've pared it down to something very simple - hopefully it's just
>> something silly.
>>
>>           String query = "select imageblob from tempimages where id=1";
>>
>>                   java.sql.Blob blob = rs.getBlob("imageblob");
>>
>> It throws a
>> org.postgresql.util.PSQLException: Bad value for type int :
>> \377\330\377\340\000 .... <blob data removed>
>>   at
>> org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2528)
>>
>>   at
>
>
> Postgresql maps Blob data to the oid datatype, not bytea.  For bytea
> data you should use getBytes() not getBlob.
>
> Kris Jurka
>
Thanks. It's actually being done within Hibernate so I don't have a
great deal of control but I'll try using the binary type which works
with bytea and hopefully will be ok.

Rob