G'day all,
I've been hacking at this all day and have now been through my source and
then the driver source - grokking the entire postgres jdbc driver in the
process ;)
What happens is when I store binary content into a bytea field it works fine
(using setBinaryStream() or setBytes()). I've tested this by looking into
the DB at the actual content itself.
However when I retrive the content, it's sometimes truncated. (It appears to
be for content greater than about 25k but that's a very rough
approximation).
here's a snippet of my debugging code:
org.postgresql.jdbc2.ResultSet.java
if (fields[columnIndex - 1].getPGType().equals("bytea"))
{
String s = getString(columnIndex);
System.out.println("s = " + s);
byte[] result = PGbytea.toBytes(s);
System.out.println("result.length = " + result.length);
return result;
}
the result.length returned (in one example) is 59402 bytes, when the length
of the bytea field is actually 190608 bytes.
printing s to the console indeed reveals that it has been truncated.
(As a test I inserted a list of a few thousand emails addresses in order,
starting from a-z - it gets truncated around f - although the DB has all the
way through to z ;))
I looked deeper into the source for about 30 minutes but got a little lost
in pg_stream in QueryExecutor and figured I'd leave the rest of the
investigation up to the experts!
I couldn't find any related queries in the archives.
Can anyone help? Or provide insight as to where I should start looking?
Cheers,
Mike
Mike Cannon-Brookes :: mike@atlassian.com
Atlassian :: http://www.atlassian.com
Supporting YOUR J2EE World