Skip to content

Commit

Permalink
apacheGH-39525: [C++][Parquet] Pass memory pool to decoders
Browse files Browse the repository at this point in the history
  • Loading branch information
emkornfield committed Jan 9, 2024
1 parent 5acf67c commit 5051714
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions cpp/src/parquet/column_reader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,7 @@ class ColumnReaderImplBase {

if (page->encoding() == Encoding::PLAIN_DICTIONARY ||
page->encoding() == Encoding::PLAIN) {
auto dictionary = MakeTypedDecoder<DType>(Encoding::PLAIN, descr_);
auto dictionary = MakeTypedDecoder<DType>(Encoding::PLAIN, descr_, pool_);
dictionary->SetData(page->num_values(), page->data(), page->size());

// The dictionary is fully decoded during DictionaryDecoder::Init, so the
Expand Down Expand Up @@ -884,19 +884,20 @@ class ColumnReaderImplBase {
} else {
switch (encoding) {
case Encoding::PLAIN: {
auto decoder = MakeTypedDecoder<DType>(Encoding::PLAIN, descr_);
auto decoder = MakeTypedDecoder<DType>(Encoding::PLAIN, descr_, pool_);
current_decoder_ = decoder.get();
decoders_[static_cast<int>(encoding)] = std::move(decoder);
break;
}
case Encoding::BYTE_STREAM_SPLIT: {
auto decoder = MakeTypedDecoder<DType>(Encoding::BYTE_STREAM_SPLIT, descr_);
auto decoder =
MakeTypedDecoder<DType>(Encoding::BYTE_STREAM_SPLIT, descr_, pool_);
current_decoder_ = decoder.get();
decoders_[static_cast<int>(encoding)] = std::move(decoder);
break;
}
case Encoding::RLE: {
auto decoder = MakeTypedDecoder<DType>(Encoding::RLE, descr_);
auto decoder = MakeTypedDecoder<DType>(Encoding::RLE, descr_, pool_);
current_decoder_ = decoder.get();
decoders_[static_cast<int>(encoding)] = std::move(decoder);
break;
Expand All @@ -905,20 +906,22 @@ class ColumnReaderImplBase {
throw ParquetException("Dictionary page must be before data page.");

case Encoding::DELTA_BINARY_PACKED: {
auto decoder = MakeTypedDecoder<DType>(Encoding::DELTA_BINARY_PACKED, descr_);
auto decoder =
MakeTypedDecoder<DType>(Encoding::DELTA_BINARY_PACKED, descr_, pool_);
current_decoder_ = decoder.get();
decoders_[static_cast<int>(encoding)] = std::move(decoder);
break;
}
case Encoding::DELTA_BYTE_ARRAY: {
auto decoder = MakeTypedDecoder<DType>(Encoding::DELTA_BYTE_ARRAY, descr_);
auto decoder =
MakeTypedDecoder<DType>(Encoding::DELTA_BYTE_ARRAY, descr_, pool_);
current_decoder_ = decoder.get();
decoders_[static_cast<int>(encoding)] = std::move(decoder);
break;
}
case Encoding::DELTA_LENGTH_BYTE_ARRAY: {
auto decoder =
MakeTypedDecoder<DType>(Encoding::DELTA_LENGTH_BYTE_ARRAY, descr_);
MakeTypedDecoder<DType>(Encoding::DELTA_LENGTH_BYTE_ARRAY, descr_, pool_);
current_decoder_ = decoder.get();
decoders_[static_cast<int>(encoding)] = std::move(decoder);
break;
Expand Down

0 comments on commit 5051714

Please sign in to comment.