commit 0c64c455f2185b78489450fd84bc881b18b3061b Author: Michael Ho Date: Wed Apr 12 15:55:17 2017 -0700 XXX Change-Id: Iaa9609ab0309b3db3046ca0ce686ee87e88e139a diff --git a/be/src/exec/parquet-column-readers.cc b/be/src/exec/parquet-column-readers.cc index ac74d72..55bd5e9 100644 --- a/be/src/exec/parquet-column-readers.cc +++ b/be/src/exec/parquet-column-readers.cc @@ -892,16 +892,9 @@ Status BaseScalarColumnReader::InitDictionary() { uint8_t* dict_values = nullptr; if (decompressor_.get() != nullptr) { - int uncompressed_size = current_page_header_.uncompressed_page_size; - dict_values = parent_->dictionary_pool_->TryAllocate(uncompressed_size); - if (UNLIKELY(dict_values == nullptr)) { - string details = Substitute(PARQUET_COL_MEM_LIMIT_EXCEEDED, "InitDictionary", - uncompressed_size, "dictionary"); - return parent_->dictionary_pool_->mem_tracker()->MemLimitExceeded( - parent_->state_, details, uncompressed_size); - } - RETURN_IF_ERROR(decompressor_->ProcessBlock32(true, data_size, data_, - &uncompressed_size, &dict_values)); + int uncompressed_size = -1; + RETURN_IF_ERROR(decompressor_->ProcessBlock32(false, data_size, data_, + &uncompressed_size, &dict_values)); VLOG_FILE << "Decompressed " << data_size << " to " << uncompressed_size; if (current_page_header_.uncompressed_page_size != uncompressed_size) { return Status(Substitute("Error decompressing dictionary page in file '$0'. " diff --git a/be/src/exec/parquet-column-readers.h b/be/src/exec/parquet-column-readers.h index 9de4277..64393f1 100644 --- a/be/src/exec/parquet-column-readers.h +++ b/be/src/exec/parquet-column-readers.h @@ -335,8 +335,8 @@ class BaseScalarColumnReader : public ParquetColumnReader { pos_current_value_ = -1; if (metadata_->codec != parquet::CompressionCodec::UNCOMPRESSED) { - RETURN_IF_ERROR(Codec::CreateDecompressor( - NULL, false, PARQUET_TO_IMPALA_CODEC[metadata_->codec], &decompressor_)); + RETURN_IF_ERROR(Codec::CreateDecompressor(parent_->dictionary_pool_.get(), + false, PARQUET_TO_IMPALA_CODEC[metadata_->codec], &decompressor_)); } ClearDictionaryDecoder(); return Status::OK();