[ 
https://issues.apache.org/jira/browse/DERBY-5489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kristian Waagan updated DERBY-5489:
-----------------------------------

    Attachment: derby-5489-2b-fixes.diff

Attaching patch 2b:
 o ResultSet and EmbedResultSet:
   Adds the required checks to behave as specified (see above). Factored out 
method checkLOBMultiCall(int). In the client driver I added a missing check for 
getObject.
 o UpdatableResultSetTest:
   Made access pattern compatible with the new behavior. The test worked 
because it always called a getter that materialized the value first, or the 
value was so small that it was kept in a materialized representation.
 o jdbcapi/LobRsGetterTest:
   Renamed some methods (only actual test methods now start with "test", the 
private ones I renamed to "_test").
   Added some more comments, and two more tests. The tests verifies the content 
of LOB in various scenarios when multiple getters are invoked.
 o jdbcapi/_Suite:
   Enabled the test as part of the test suite.

Patch ready for final review.
Tests passed on Linux and Solaris with JDK 1.6.
I intend to commit this patch tomorrow at the latest.
                
> getBinary() returns incorrect data after getObject() call on BLOB column
> ------------------------------------------------------------------------
>
>                 Key: DERBY-5489
>                 URL: https://issues.apache.org/jira/browse/DERBY-5489
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.7.1.1, 10.8.2.2
>            Reporter: Pawel Fronczak
>            Assignee: Kristian Waagan
>              Labels: derby_triage10_9
>         Attachments: SelectBlobBug.java, derby-5489-1a-test.diff, 
> derby-5489-1b-test.diff, derby-5489-2a-fixes.diff, derby-5489-2b-fixes.diff, 
> repro.diff
>
>
> When ResultSet.getObject(int) is called on a BLOB column, the correct 
> EmbedBlob object is returned. But if afterwards the ResultSet.getBytes(int) 
> is called on the same row, the returned array contains invalid data - it is 
> offset by 3 bytes and its size is incorrect.
> The problem only occurs when the stored BLOB is large enough to be internally 
> represented by stream and not by array of bytes (at least ~32KiB).
> It seems that the getObject method shifts the stream position and therefore 
> the getBytes method starts to read the data after the third byte, thus 
> incorrectly calculating its length.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to