| 1962 | buffered_data_(AllocateBuffer(pool, 0)) {} |
| 1963 | |
| 1964 | void SetData(int num_values, const uint8_t* data, int len) override { |
| 1965 | this->num_values_ = num_values; |
| 1966 | if (decoder_) { |
| 1967 | decoder_->Reset(data, len); |
| 1968 | } else { |
| 1969 | decoder_ = std::make_shared<::arrow::bit_util::BitReader>(data, len); |
| 1970 | } |
| 1971 | prefix_len_decoder_.SetDecoder(num_values, decoder_); |
| 1972 | |
| 1973 | // get the number of encoded prefix lengths |
| 1974 | int num_prefix = prefix_len_decoder_.ValidValuesCount(); |
| 1975 | // call prefix_len_decoder_.Decode to decode all the prefix lengths. |
| 1976 | // all the prefix lengths are buffered in buffered_prefix_length_. |
| 1977 | PARQUET_THROW_NOT_OK(buffered_prefix_length_->Resize(num_prefix * sizeof(int32_t))); |
| 1978 | int ret = prefix_len_decoder_.Decode( |
| 1979 | buffered_prefix_length_->mutable_data_as<int32_t>(), num_prefix); |
| 1980 | DCHECK_EQ(ret, num_prefix); |
| 1981 | prefix_len_offset_ = 0; |
| 1982 | num_valid_values_ = num_prefix; |
| 1983 | |
| 1984 | int bytes_left = decoder_->bytes_left(); |
| 1985 | // If len < bytes_left, prefix_len_decoder.Decode will throw exception. |
| 1986 | DCHECK_GE(len, bytes_left); |
| 1987 | int suffix_begins = len - bytes_left; |
| 1988 | // at this time, the decoder_ will be at the start of the encoded suffix data. |
| 1989 | suffix_decoder_.SetData(num_values, data + suffix_begins, bytes_left); |
| 1990 | |
| 1991 | // TODO: read corrupted files written with bug(PARQUET-246). last_value_ should be set |
| 1992 | // to last_value_in_previous_page_ when decoding a new page(except the first page) |
| 1993 | last_value_.clear(); |
| 1994 | } |
| 1995 | |
| 1996 | int DecodeArrow(int num_values, int null_count, const uint8_t* valid_bits, |
| 1997 | int64_t valid_bits_offset, |
nothing calls this directly
no test coverage detected