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

Method SetData

cpp/src/parquet/decoder.cc:1988–2018  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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,

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