This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 6283849cb75 [fix](scan) _insert_data_normal should catch exception
when BlockReader::_unique_key_next_block #29426 (#29452)
6283849cb75 is described below
commit 6283849cb75a37f89cf6a4d7525ae73e59b7f090
Author: xy <[email protected]>
AuthorDate: Thu Jan 4 20:48:18 2024 +0800
[fix](scan) _insert_data_normal should catch exception when
BlockReader::_unique_key_next_block #29426 (#29452)
---
be/src/vec/olap/block_reader.cpp | 20 ++++++++++++--------
be/src/vec/olap/block_reader.h | 2 +-
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/be/src/vec/olap/block_reader.cpp b/be/src/vec/olap/block_reader.cpp
index 9a0635f694d..541954ab3bf 100644
--- a/be/src/vec/olap/block_reader.cpp
+++ b/be/src/vec/olap/block_reader.cpp
@@ -293,7 +293,7 @@ Status BlockReader::_agg_key_next_block(Block* block, bool*
eof) {
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);
@@ -316,7 +316,7 @@ 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++;
@@ -346,7 +346,7 @@ 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();
}
@@ -416,12 +416,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) {
diff --git a/be/src/vec/olap/block_reader.h b/be/src/vec/olap/block_reader.h
index 273c21899d4..7e578e9a0e2 100644
--- a/be/src/vec/olap/block_reader.h
+++ b/be/src/vec/olap/block_reader.h
@@ -80,7 +80,7 @@ private:
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);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]