[ https://issues.apache.org/jira/browse/DERBY-7143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17561492#comment-17561492 ]
Bryan Pendleton commented on DERBY-7143: ---------------------------------------- Perhaps you could contribute a patch? Your patch could be as simple as: * Contribute a new regression test to the Derby regression suite, demonstrating the problem, you could perhaps add a testcase to org.apache.derbyTesting.functionTests.tests.jdbcapi.BlobTest? * Contribute a change to HarmonySerialBlob.java, demonstrating a fix; perhaps it's as simple as changing if (pos < 1 || pos + length > len) to if (pos < 1 || (pos-1) + length > len) > 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 > > 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)