You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@orc.apache.org by "Gang Wu (JIRA)" <ji...@apache.org> on 2017/04/27 06:08:04 UTC
[jira] [Updated] (ORC-181) ByteRleDecoder doesn't seek correctly
[ https://issues.apache.org/jira/browse/ORC-181?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gang Wu updated ORC-181:
------------------------
Summary: ByteRleDecoder doesn't seek correctly (was: ByteRleDecoder doesn't seek correctly when the runtime type is BooleanRleDecoderImpl)
> ByteRleDecoder doesn't seek correctly
> -------------------------------------
>
> Key: ORC-181
> URL: https://issues.apache.org/jira/browse/ORC-181
> Project: ORC
> Issue Type: Bug
> Components: C++
> Affects Versions: 1.0.0
> Reporter: Gang Wu
> Assignee: Gang Wu
>
> The following piece of code is located at ByteRLE.cc line 254:
> {code:title=ByteRLE.cc|borderStyle=solid}
> void BooleanRleDecoderImpl::seek(PositionProvider& location) {
> ByteRleDecoderImpl::seek(location);
> uint64_t consumed = location.next();
> if (consumed > 8) {
> throw ParseError("bad position");
> }
> if (consumed != 0) {
> remainingBits = 8 - consumed;
> ByteRleDecoderImpl::next(&lastByte, 1, 0);
> }
> }
> {code}
> The basic idea of this function is to seek to the right position in the byte stream and then seek to the right bit in a specific byte. Therefore, firstly it calls ByteRleDecoderImpl::seek(location) first which is located at ByteRLE.cc line 113 as below:
> {code:title=ByteRLE.cc|borderStyle=solid}
> void ByteRleDecoderImpl::seek(PositionProvider& location) {
> // move the input stream
> inputStream->seek(location);
> // force a re-read from the stream
> bufferEnd = bufferStart;
> // read a new header
> readHeader();
> // skip ahead the given number of records
> skip(location.next());
> }
> {code}
> However, at the end of ByteRleDecoderImpl::seek(), it calls skip(location.next()) which is actually BooleanRleDecoderImpl::skip() not ByteRleDecoderImpl::skip(). Oops!
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)