[
https://issues.apache.org/jira/browse/DERBY-3941?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12694040#action_12694040
]
Knut Anders Hatlen commented on DERBY-3941:
-------------------------------------------
Hi Yun,
My preferred solution would be to have a variant of
org.apache.derby.iapi.services.io.InputStreamUtil.skipFully() that could take a
DataInput argument. That method uses skip until 0 is returned, then it uses
read() which is guaranteed to block until there is something to read. If read
returns -1, an EOFException is thrown. Currently skipFully() is only
implemented for InputStream, I think.
I'm not sure I understand your question about *ImageReader and
BlockDataInputStream. Those classes are part of the JDK, aren't they? I didn't
find any references to them in the Derby code.
> Unsafe use of DataInput.skipBytes() in StoredPage and StoredFieldHeader
> -----------------------------------------------------------------------
>
> Key: DERBY-3941
> URL: https://issues.apache.org/jira/browse/DERBY-3941
> Project: Derby
> Issue Type: Bug
> Components: Newcomer, Store
> Reporter: Knut Anders Hatlen
> Priority: Minor
>
> Some methods in StoredFileHeader and StoredPage call
> java.io.DataInput.skipBytes(int) with the assumption that it always skips the
> requested number of bytes. According to the javadoc for skipBytes, it may
> skip fewer bytes than requested, possibly 0, even if the end of the stream
> hasn't been reached.
> The problem exists in these methods:
> StoredFieldHeader.readFieldDataLength()
> StoredPage.readRecordFromStream()
> StoredPage.skipField()
> StoredPage.readOneColumnFromPage()
> StoredPage.readRecordFromArray()
> We should change the code so that it works correctly even if skipBytes() were
> to skip fewer bytes than requested.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.