|
When I implemented this change I saw test failures when caling getClob() more than once, for example in BlobClob4BLOBTest
if (origRS.getClob(1) != null) { assertEquals("FAIL - Invalid checksum for row trigger", getStreamCheckSum(origRS.getClob(1).getAsciiStream()), getStreamCheckSum(trigARS.getClob(1).getAsciiStream())); I guess that As I noted in
When it comes to which option to choose, I'm not sure. These are some of my thoughts (in random order): 1) Allowing only a single call forces more portable code. 2) Allowing multiple calls makes the client driver consistent with the embedded driver. 3) Allowing multiple calls is more convenient. 4) Allowing multiple calls might have some side-effects if two LOB objects are used concurrently (?). Seems like I'm more in favor of allowing multiple calls, so I guess I would go for that if it works technically. Regarding the comment about the other get methods (String, Bytes, XStream), I don't think they are disallowed because the locator is freed. That is just how it is implemented, and it's in line with the spec to close the streams. I think it might be just as good to let the LOB tracker release the locators. The only case where the locators cannot be released implicitly, is when a Blob or Clob object is published to the user. As soon as With Kristian's alternate
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DERBY-2892fix.