[
https://issues.apache.org/jira/browse/DERBY-3941?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yun Lee updated DERBY-3941:
---------------------------
Attachment: derby-3941-2.stat
derby-3941-2.diff
Knut,
>1) skipPersistentDataInput() checks if DataInput.readByte() returns -1 to
>detect that EOF has been reached, but I think that that method will throw
>EOFException and not return -1 on EOF
I have changed both skipPersistentDataInput() and skipPersistent() to perform
like what you need, and changed the document of UTF8Util.internalSkip(final
InputStream in, final long charsToSkip) which used the skipPersistent(). I
think the new revision can act smartlier. Please check the new patches, thanks!
>2) I think I would have renamed skipPersistentDataInput() and
>skipFullyDataInput() to skipPersistent() and skipFully().
I have tried this before providing the first patches, however, I found it's not
able to use overload here, as it will lead to some compiling-time error on
ambiguous use, i.e. InputStreamUtil.skipFully(null, int), and
InputStreamUtil.skipFully(dis, int) where dis is an instance of DataInputStream.
Yun
> 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
> Assignee: Yun Lee
> Priority: Minor
> Attachments: derby-3941-1.diff, derby-3941-1.stat, derby-3941-2.diff,
> derby-3941-2.stat
>
>
> 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.