MCPcopy Create free account
hub / github.com/apache/arrow / SetData

Method SetData

cpp/src/parquet/decoder.cc:1964–1994  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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,

Callers

nothing calls this directly

Calls 8

ValidValuesCountMethod · 0.80
bytes_leftMethod · 0.80
ResetMethod · 0.45
SetDecoderMethod · 0.45
ResizeMethod · 0.45
DecodeMethod · 0.45
SetDataMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected