db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From V Narayanan <V.Naraya...@Sun.COM>
Subject Re: [jira] Commented: (DERBY-2444) Implement not implemented methods Blob.getBinaryStream(long pos, long length) and Clob. getCharacterStream(long pos, long length) in the Network Client
Date Tue, 27 Mar 2007 09:05:37 GMT
Knut Anders Hatlen (JIRA) wrote:
>     [ https://issues.apache.org/jira/browse/DERBY-2444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12484359
] 
>
> Knut Anders Hatlen commented on DERBY-2444:
> -------------------------------------------
>
> Thanks for the updated patch, Narayanan!
>
> I looked at the javadoc for Blob.getBinaryStream(long,long) at http://java.sun.com/javase/6/docs/api/.
It says
>
> Throws:
>     SQLException - if pos is less than 1 or if pos is greater than the number of bytes
in the Blob or if pos + length is greater than the number of bytes in the Blob 
>
> (The wording is similar for Clob.getCharacterStream(long,long).)
>
> I don't think that matches the current checks. For instance, Lob.checkPosition() throws
exception if (pos > length() + 1) whereas the it should throw exception if (pos > length())
. And checkLength() only checks whether length is negative. It would probably be good to add
tests for these boundary cases in BlobTest/ClobTest as well.
>
> I don't think this part of getBinaryStream() is correct:
> +            InputStream retVal = new java.io.ByteArrayInputStream
> +                    (binaryString_, (int)(pos), (int)length);
>
> The pos argument starts on 1, whereas the offset argument to ByteArrayInputStream starts
on 0. The tests in BlobTest passed, though, which I found a bit puzzling. It seems there is
a dataOffset_ variable in Blob which, by accident, was one when running the tests, so the
bug wasn't discovered. I believe pos should be replaced with (dataOffset_ + pos - 1).
>
>   
>> Implement not implemented methods Blob.getBinaryStream(long pos, long length) and
Clob. getCharacterStream(long pos, long length) in the Network Client
>> -------------------------------------------------------------------------------------------------------------------------------------------------------
>>
>>                 Key: DERBY-2444
>>                 URL: https://issues.apache.org/jira/browse/DERBY-2444
>>             Project: Derby
>>          Issue Type: Improvement
>>          Components: Network Client
>>            Reporter: V.Narayanan
>>         Assigned To: V.Narayanan
>>         Attachments: ClobBlobNotImplemented_v1.diff, ClobBlobNotImplemented_v1.stat,
ClobBlobNotImplemented_v2.diff, ClobBlobNotImplemented_v2.stat
>>
>>
>> The following methods were introduced in the java.sql.Clob and java.sql.Blob interface
as part of JDBC 4.0 and need to be implemented.
>> Clob
>> ------
>> getCharacterStream(long pos, long length)
>> Blob
>> ------
>> getBinaryStream(long pos, long length)
>>     
>
>   
Thank you for the comments. Yes you are correct. I should have looked 
deeper into this. I am sorry, will fix this.

Mime
View raw message