Обсуждение: Inconsistent Loading of Bytea accross platform

Поиск
Список
Период
Сортировка

Inconsistent Loading of Bytea accross platform

От
Marc-André Laverdière
Дата:
Hello,

Our team has recently upgraded from PostgreSQL 8.4 to 9.0. We ran all
our tests on one Linux box, and everything ran fine. However, we ran
into problems in our pre-production environment. Here are the details

Developer's box: Ubuntu 10.10 with Sun JDK 1.6.0_22-b04
Preprod box: Windows 2003 server SP2 Enterprise Edition with Sun JVM
1.6.0_22-b04

We are using Hibernate 3.6 with infinispan cache and the latest JDBC
driver (build 801).

Our table has 2 bytea columns. The columns are supposed to contain data
of size 256 bytes. On the Linux box, we get our 256 bytes correctly. On
the Windows box, we get 511 bytes however.

I detailed my problem here:
http://stackoverflow.com/questions/4335088/hibernate-not-loading-postgresql-bytea-consistently

After narrowing it down, it seems like the issue would be in the driver,
not Hibernate, as I have the same problem using JDBC. Here is some
sample code.

ssess = xyz.getFactory().openStatelessSession();
Connection rawConn = sess.connection();
PreparedStatement ps =
  rawConn.prepareStatement("select encryptedkey,encryptediv from abc
where id=?");
ps.setString(1,"fff4f538-aea5-4703-b9d6-dcd7829766e4");
ResultSet rs = ps.executeQuery();
if (rs.next()){
    byte[] key = rs.getBytes("encryptedkey");
    byte[] iv = rs.getBytes("encryptediv");
    logger.info("Key:{}\tIV:{}", key.length, iv.length);
}
rs.close();
ps.close();
conn.close();

Any ideas what could be wrong here?

--
Marc-André Laverdière
Software Security Scientist
Innovation Labs, Tata Consultancy Services
Hyderabad, India

Re: Inconsistent Loading of Bytea accross platform

От
Marc-André Laverdière
Дата:
Hello all,

After investigation, it turns out that the old 8.4 driver was in the jre
lib folder, which interfered with everything. Sorry for the false alarm.

Marc-André Laverdière
Software Security Scientist
Innovation Labs, Tata Consultancy Services
Hyderabad, India

On Monday 06 December 2010 11:01 AM, Marc-André Laverdière wrote:
> Hello,
>
> Our team has recently upgraded from PostgreSQL 8.4 to 9.0. We ran all
> our tests on one Linux box, and everything ran fine. However, we ran
> into problems in our pre-production environment. Here are the details
>
> Developer's box: Ubuntu 10.10 with Sun JDK 1.6.0_22-b04
> Preprod box: Windows 2003 server SP2 Enterprise Edition with Sun JVM
> 1.6.0_22-b04
>
> We are using Hibernate 3.6 with infinispan cache and the latest JDBC
> driver (build 801).
>
> Our table has 2 bytea columns. The columns are supposed to contain data
> of size 256 bytes. On the Linux box, we get our 256 bytes correctly. On
> the Windows box, we get 511 bytes however.
>
> I detailed my problem here:
> http://stackoverflow.com/questions/4335088/hibernate-not-loading-postgresql-bytea-consistently
>
> After narrowing it down, it seems like the issue would be in the driver,
> not Hibernate, as I have the same problem using JDBC. Here is some
> sample code.
>
> ssess = xyz.getFactory().openStatelessSession();
> Connection rawConn = sess.connection();
> PreparedStatement ps =
>   rawConn.prepareStatement("select encryptedkey,encryptediv from abc
> where id=?");
> ps.setString(1,"fff4f538-aea5-4703-b9d6-dcd7829766e4");
> ResultSet rs = ps.executeQuery();
> if (rs.next()){
>     byte[] key = rs.getBytes("encryptedkey");
>     byte[] iv = rs.getBytes("encryptediv");
>     logger.info("Key:{}\tIV:{}", key.length, iv.length);
> }
> rs.close();
> ps.close();
> conn.close();
>
> Any ideas what could be wrong here?
>