[ 
https://issues.apache.org/jira/browse/HIVE-12737?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gopal V updated HIVE-12737:
---------------------------
    Description: 
{code}
    private void readHeader() throws IOException {
        ....
        ByteBuffer slice = this.slice(chunkLength);
        if (isOriginal) {
          uncompressed = slice;
          isUncompressedOriginal = true;
        } else {
          if (isUncompressedOriginal) {
            uncompressed = allocateBuffer(bufferSize);
            isUncompressedOriginal = false;
          } else if (uncompressed == null) {
            uncompressed = allocateBuffer(bufferSize);
          } else {
            uncompressed.clear();
          }
          codec.decompress(slice, uncompressed);
        }
      } else {
        throw new IllegalStateException("Can't read header at " + this);
      }
}
{code}

when reading the 2nd chunk, uncompressed didn't check the data left in itself.
chunkSize is set by hive.exec.orc.default.buffer.size, if user set a number 
that can't mod 8, when read double, error occurs.


  was:


    private void readHeader() throws IOException {
        ....
        ByteBuffer slice = this.slice(chunkLength);
        if (isOriginal) {
          uncompressed = slice;
          isUncompressedOriginal = true;
        } else {
          if (isUncompressedOriginal) {
            uncompressed = allocateBuffer(bufferSize);
            isUncompressedOriginal = false;
          } else if (uncompressed == null) {
            uncompressed = allocateBuffer(bufferSize);
          } else {
            uncompressed.clear();
          }
          codec.decompress(slice, uncompressed);
        }
      } else {
        throw new IllegalStateException("Can't read header at " + this);
      }
}

when reading the 2nd chunk, uncompressed didn't check the data left in itself.
chunkSize is set by hive.exec.orc.default.buffer.size, if user set a number 
that can't mod 8, when read double, error occurs.



> orc Instream.java CompressedStream.readHeader() can meet error when read 
> double.
> --------------------------------------------------------------------------------
>
>                 Key: HIVE-12737
>                 URL: https://issues.apache.org/jira/browse/HIVE-12737
>             Project: Hive
>          Issue Type: Bug
>          Components: ORC
>    Affects Versions: 1.0.1
>            Reporter: xuanflyer
>            Priority: Minor
>
> {code}
>     private void readHeader() throws IOException {
>         ....
>         ByteBuffer slice = this.slice(chunkLength);
>         if (isOriginal) {
>           uncompressed = slice;
>           isUncompressedOriginal = true;
>         } else {
>           if (isUncompressedOriginal) {
>             uncompressed = allocateBuffer(bufferSize);
>             isUncompressedOriginal = false;
>           } else if (uncompressed == null) {
>             uncompressed = allocateBuffer(bufferSize);
>           } else {
>             uncompressed.clear();
>           }
>           codec.decompress(slice, uncompressed);
>         }
>       } else {
>         throw new IllegalStateException("Can't read header at " + this);
>       }
> }
> {code}
> when reading the 2nd chunk, uncompressed didn't check the data left in itself.
> chunkSize is set by hive.exec.orc.default.buffer.size, if user set a number 
> that can't mod 8, when read double, error occurs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to