db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bryan Pendleton <bpendle...@amberpoint.com>
Subject Re: [jira] Commented: (DERBY-550) BLOB : java.lang.OutOfMemoryError with network JDBC driver (org.apache.derby.jdbc.ClientDriver)
Date Thu, 13 Jul 2006 23:47:02 GMT
David Van Couvering wrote:
> I guess what I was assuming was, if the application goes off and does 
> something else, we can notice that and either raise an exception 
> ("you're not done with that BLOB column yet") or flush the rest of the 
> BLOB data, since it's obvious they won't be getting back to it (e.g. if 
> they send another query or do ResultSet.next(), it's clear they're done 
> with the BLOB column). 

Are you sure that's acceptable JDBC behavior? My (very old) copy of the
JDBC spec says things like:

   The standard behavior for a Blob instance is to remain valid until the
   transaction in which it was created is either committed or rolled back.

So if I do something like:

   ResultSet rs = stmt.executeQuery("SELECT DATA FROM TABLE1");
   Blob data = rs.getBlob("DATA");
   InputStream blobStream = blob.getBinaryStream();

I think I am supposed to be allowed to access blobStream quite some time later,
even if I do other things on the connection in the meantime.

But I confess I don't do a lot of BLOB programming in JDBC, so maybe I'm
manufacturing bogeymen that don't actually exist.



View raw message