| 1986 | buffered_data_(AllocateBuffer(pool, 0)) {} |
| 1987 | |
| 1988 | void SetData(int num_values, const uint8_t* data, int len) override { |
| 1989 | this->num_values_ = num_values; |
| 1990 | if (decoder_) { |
| 1991 | decoder_->Reset(data, len); |
| 1992 | } else { |
| 1993 | decoder_ = std::make_shared<::arrow::bit_util::BitReader>(data, len); |
| 1994 | } |
| 1995 | prefix_len_decoder_.SetDecoder(num_values, decoder_); |
| 1996 | |
| 1997 | // get the number of encoded prefix lengths |
| 1998 | int num_prefix = prefix_len_decoder_.ValidValuesCount(); |
| 1999 | // call prefix_len_decoder_.Decode to decode all the prefix lengths. |
| 2000 | // all the prefix lengths are buffered in buffered_prefix_length_. |
| 2001 | PARQUET_THROW_NOT_OK(buffered_prefix_length_->Resize(num_prefix * sizeof(int32_t))); |
| 2002 | int ret = prefix_len_decoder_.Decode( |
| 2003 | buffered_prefix_length_->mutable_data_as<int32_t>(), num_prefix); |
| 2004 | DCHECK_EQ(ret, num_prefix); |
| 2005 | prefix_len_offset_ = 0; |
| 2006 | num_valid_values_ = num_prefix; |
| 2007 | |
| 2008 | int bytes_left = decoder_->bytes_left(); |
| 2009 | // If len < bytes_left, prefix_len_decoder.Decode will throw exception. |
| 2010 | DCHECK_GE(len, bytes_left); |
| 2011 | int suffix_begins = len - bytes_left; |
| 2012 | // at this time, the decoder_ will be at the start of the encoded suffix data. |
| 2013 | suffix_decoder_.SetData(num_values, data + suffix_begins, bytes_left); |
| 2014 | |
| 2015 | // TODO: read corrupted files written with bug(PARQUET-246). last_value_ should be set |
| 2016 | // to last_value_in_previous_page_ when decoding a new page(except the first page) |
| 2017 | last_value_.clear(); |
| 2018 | } |
| 2019 | |
| 2020 | int DecodeArrow(int num_values, int null_count, const uint8_t* valid_bits, |
| 2021 | int64_t valid_bits_offset, |
nothing calls this directly
no test coverage detected