[ https://issues.apache.org/jira/browse/DERBY-7143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17564396#comment-17564396 ]
ASF subversion and git services commented on DERBY-7143: -------------------------------------------------------- Commit 1902580 from Richard N. Hillegas in branch 'code/branches/10.16' [ https://svn.apache.org/r1902580 ] DERBY-7143: Port 1902579 from trunk to 10.16 branch. > HarmonySerialBlob.getBinaryStream(long, long) makes it impossible to retrieve > the last character of the Blob. > ------------------------------------------------------------------------------------------------------------- > > Key: DERBY-7143 > URL: https://issues.apache.org/jira/browse/DERBY-7143 > Project: Derby > Issue Type: Bug > Components: Network Client, SQL > Affects Versions: 10.15.2.0 > Reporter: Ben > Priority: Major > Attachments: DERBY_7143.java, > derby-7143-01-aa-fixLengthMiscalculation.diff > > > As far as I understand it, the method HarmonySerialBlob.getBinaryStream(long, > long) takes two arguments <pos> and <length> and is supposed to produce a > ByteArrayInputStream() with a substring of the Blob's Contents that starts at > <pos> and has length <length>. > Unfortunately, the error handling in this method makes it impossible to > retrieve a suffix of the Blobs contents as the last character is always > missing. > In detail: > When calling this method with <pos>=0, then it raises the SQLException XJ087. > Hence, <pos> must always be > 0. > When calling this method with <pos>=1 and <length>=blob.length(), then it > also raises the SQLException, because pos+length > blob.length(). Hence, > <length> can at most be set to blob.length()-1. > When calling this method with <pos>=1 and <length>=blob.length()-1, then it > gives a ByteArrayInputStream which is missing the last character from the > blob. > The fact that the last character is missing makes sense, when <length> is set > to blob.length()-1. > But it does not make sense to prohibit setting <length>=blob.length() when > this is the only way to include the last character in the > ByteArrayInputStream. -- This message was sent by Atlassian Jira (v8.20.10#820010)