[fix](vertical compaction) compaction block reader should return error when reading next block failed (#22431)

This commit is contained in:
huanghaibin
2023-08-01 14:09:18 +08:00
committed by GitHub
parent f842067354
commit 43d783ae21
3 changed files with 5 additions and 4 deletions

View File

@ -384,7 +384,7 @@ Status BlockReader::_unique_key_next_block(Block* block, bool* eof) {
std::make_shared<DataTypeUInt8>(),
"__DORIS_COMPACTION_FILTER__"};
block->insert(column_with_type_and_name);
Block::filter_block(block, target_columns.size(), target_columns.size());
RETURN_IF_ERROR(Block::filter_block(block, target_columns.size(), target_columns.size()));
_stats.rows_del_filtered += target_block_row - block->rows();
DCHECK(block->try_get_by_name("__DORIS_COMPACTION_FILTER__") == nullptr);
}

View File

@ -185,7 +185,7 @@ OlapBlockDataConvertor::create_olap_column_data_convertor(const TabletColumn& co
void OlapBlockDataConvertor::set_source_content(const vectorized::Block* block, size_t row_pos,
size_t num_rows) {
assert(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
DCHECK(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
block->columns() == _convertors.size());
size_t cid = 0;
for (const auto& typed_column : *block) {
@ -197,7 +197,7 @@ void OlapBlockDataConvertor::set_source_content(const vectorized::Block* block,
void OlapBlockDataConvertor::set_source_content_with_specifid_columns(
const vectorized::Block* block, size_t row_pos, size_t num_rows,
std::vector<uint32_t> cids) {
assert(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
DCHECK(block && num_rows > 0 && row_pos + num_rows <= block->rows() &&
block->columns() <= _convertors.size());
for (auto i : cids) {
_convertors[i]->set_source_column(block->get_by_position(i), row_pos, num_rows);

View File

@ -476,7 +476,8 @@ Status VerticalBlockReader::_unique_key_next_block(Block* block, bool* eof) {
std::make_shared<DataTypeUInt8>(),
"__DORIS_COMPACTION_FILTER__"};
block->insert(column_with_type_and_name);
Block::filter_block(block, target_columns.size(), target_columns.size());
RETURN_IF_ERROR(
Block::filter_block(block, target_columns.size(), target_columns.size()));
_stats.rows_del_filtered += block_rows - block->rows();
DCHECK(block->try_get_by_name("__DORIS_COMPACTION_FILTER__") == nullptr);
}