Zoltan Borok-Nagy has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/12555


Change subject: IMPALA-7979: Fix bug of SkipValues() and GetNextValues() 
interaction
......................................................................

IMPALA-7979: Fix bug of SkipValues() and GetNextValues() interaction

Alternating calls to DictDecoder's SkipValues() and GetNextValues()
could result in a decoding error.

RleBatchDecoder<T>::DecodeLiteralValues() returned false when
invoked with num_literals_to_consume=0 and had buffered literals.
Then the caller (DictDecoder::GetNextValues()) thought it failed,
and in the end it resulted in a decoding error.

It could only occur if GetNextValues() was invoked after SkipValues().
Otherwise the RleBatchDecoder in DictDecoder could not have buffered
literals, since they were buffered in the dictionary decoder.

Since SkipValues() is not used yet, it couldn't happen in production
code.

I added a backend test to fuzz test the interaction between
SkipValues() and GetNextValues().

Change-Id: Id0426cdef54ee9bc2306a542098a92c640dc41c4
---
M be/src/util/dict-test.cc
A be/src/util/encoding-test-util.h
M be/src/util/rle-encoding.h
M be/src/util/rle-test.cc
4 files changed, 127 insertions(+), 39 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/55/12555/1
--
To view, visit http://gerrit.cloudera.org:8080/12555
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id0426cdef54ee9bc2306a542098a92c640dc41c4
Gerrit-Change-Number: 12555
Gerrit-PatchSet: 1
Gerrit-Owner: Zoltan Borok-Nagy <borokna...@cloudera.com>

Reply via email to