[fix](Vectorized) optinmize dict page decoder init (#7917)

this may cause mem leak
This commit is contained in:
Zeno Yang
2022-01-29 11:47:57 +08:00
committed by GitHub
parent 4c7525cf2c
commit a72eaa2b2e

View File

@ -677,18 +677,18 @@ Status FileColumnIterator::_read_data_page(const OrdinalPageIndexIterator& iter)
// PLAIN_ENCODING is supported for dict page right now
_dict_decoder.reset(new BinaryPlainPageDecoder(dict_data));
RETURN_IF_ERROR(_dict_decoder->init());
}
BinaryPlainPageDecoder* pd_decoder = (BinaryPlainPageDecoder*)_dict_decoder.get();
_dict_start_offset_array = new uint32_t[pd_decoder->_num_elems];
_dict_len_array = new uint32_t[pd_decoder->_num_elems];
auto* pd_decoder = (BinaryPlainPageDecoder*)_dict_decoder.get();
_dict_start_offset_array = new uint32_t[pd_decoder->_num_elems];
_dict_len_array = new uint32_t[pd_decoder->_num_elems];
// todo(wb) padding dict value for SIMD comparison
for (int i = 0; i < pd_decoder->_num_elems; i++) {
const uint32_t start_offset = pd_decoder->offset(i);
uint32_t len = pd_decoder->offset(i + 1) - start_offset;
_dict_start_offset_array[i] = start_offset;
_dict_len_array[i] = len;
// todo(wb) padding dict value for SIMD comparison
for (int i = 0; i < pd_decoder->_num_elems; i++) {
const uint32_t start_offset = pd_decoder->offset(i);
uint32_t len = pd_decoder->offset(i + 1) - start_offset;
_dict_start_offset_array[i] = start_offset;
_dict_len_array[i] = len;
}
}
dict_page_decoder->set_dict_decoder(_dict_decoder.get(), _dict_start_offset_array, _dict_len_array);