Skip to content

Commit

Permalink
[fix](scan) _insert_data_normal should catch exception when BlockRead…
Browse files Browse the repository at this point in the history
…er::_unique_key_next_block (apache#29426)

Co-authored-by: xingying01 <[email protected]>
  • Loading branch information
2 people authored and seawinde committed Jan 3, 2024
1 parent 4a4d631 commit 70581ec
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 10 deletions.
23 changes: 14 additions & 9 deletions be/src/vec/olap/block_reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -301,8 +301,7 @@ Status BlockReader::_agg_key_next_block(Block* block, bool* eof) {
auto target_block_row = 0;
auto merged_row = 0;
auto target_columns = block->mutate_columns();

_insert_data_normal(target_columns);
RETURN_IF_ERROR(_insert_data_normal(target_columns));
target_block_row++;
_append_agg_data(target_columns);

Expand All @@ -325,7 +324,8 @@ Status BlockReader::_agg_key_next_block(Block* block, bool* eof) {
_agg_data_counters.push_back(_last_agg_data_counter);
_last_agg_data_counter = 0;

_insert_data_normal(target_columns);
RETURN_IF_ERROR(_insert_data_normal(target_columns));

target_block_row++;
} else {
merged_row++;
Expand Down Expand Up @@ -356,7 +356,8 @@ Status BlockReader::_unique_key_next_block(Block* block, bool* eof) {
}

do {
_insert_data_normal(target_columns);
RETURN_IF_ERROR(_insert_data_normal(target_columns));

if (UNLIKELY(_reader_context.record_rowids)) {
_block_row_locations[target_block_row] = _vcollect_iter.current_row_location();
}
Expand Down Expand Up @@ -429,12 +430,16 @@ Status BlockReader::_unique_key_next_block(Block* block, bool* eof) {
return Status::OK();
}

void BlockReader::_insert_data_normal(MutableColumns& columns) {
Status BlockReader::_insert_data_normal(MutableColumns& columns) {
auto block = _next_row.block.get();
for (auto idx : _normal_columns_idx) {
columns[_return_columns_loc[idx]]->insert_from(*block->get_by_position(idx).column,
_next_row.row_pos);
}

RETURN_IF_CATCH_EXCEPTION({
for (auto idx : _normal_columns_idx) {
columns[_return_columns_loc[idx]]->insert_from(*block->get_by_position(idx).column,
_next_row.row_pos);
}
});
return Status::OK();
}

void BlockReader::_append_agg_data(MutableColumns& columns) {
Expand Down
2 changes: 1 addition & 1 deletion be/src/vec/olap/block_reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class BlockReader final : public TabletReader {

void _init_agg_state(const ReaderParams& read_params);

void _insert_data_normal(MutableColumns& columns);
Status _insert_data_normal(MutableColumns& columns);

void _append_agg_data(MutableColumns& columns);

Expand Down

0 comments on commit 70581ec

Please sign in to comment.