github-actions[bot] commented on code in PR #41701: URL: https://github.com/apache/doris/pull/41701#discussion_r1801047917
########## be/src/olap/rowset/segment_v2/segment_writer.cpp: ########## @@ -936,45 +987,62 @@ } Status SegmentWriter::merge_rows_for_sequence_column( Review Comment: warning: function 'merge_rows_for_sequence_column' has cognitive complexity of 59 (threshold 50) [readability-function-cognitive-complexity] ```cpp Status SegmentWriter::merge_rows_for_sequence_column( ^ ``` <details> <summary>Additional context</summary> **be/src/olap/rowset/segment_v2/segment_writer.cpp:1018:** nesting level increased to 1 ```cpp auto get_idx = [](bool with_seq_col, bool has_delete_sign) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1019:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (!with_seq_col) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1020:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp return (has_delete_sign ? 0 : 1); ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1021:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1022:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp return (has_delete_sign ? 2 : 3); ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1025:** nesting level increased to 1 ```cpp auto find_rows_to_filter = [&](const std::string& key) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1028:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (has_row_with_seq_col && has_row_without_seq_col) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1028:** +1 ```cpp if (has_row_with_seq_col && has_row_without_seq_col) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1045:** +1 ```cpp DCHECK(st.is<KEY_NOT_FOUND>() || st.ok()); ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1048:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (st.is<KEY_NOT_FOUND>()) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1050:** +1, nesting level increased to 3 ```cpp } else { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1053:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (batched_rows[2] != -1) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1057:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (batched_rows[3] != -1) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1062:** nesting level increased to 3 ```cpp auto remove_rows_without_seq = [&]() { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1063:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (batched_rows[0] != -1) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1067:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (batched_rows[1] != -1) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1073:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (batched_rows[2] != -1 && batched_rows[3] != -1) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1075:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (previous_seq_slice.compare(Slice {row_with_delete_sign_encoded_seq_value}) <= ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1078:** +1, nesting level increased to 4 ```cpp } else if (previous_seq_slice.compare( ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1083:** +1, nesting level increased to 4 ```cpp } else { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1089:** +1, nesting level increased to 3 ```cpp } else if (batched_rows[2] != -1) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1090:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (previous_seq_slice.compare(Slice {row_with_delete_sign_encoded_seq_value}) <= ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1093:** +1, nesting level increased to 4 ```cpp } else { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1097:** +1, nesting level increased to 3 ```cpp } else { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1098:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (previous_seq_slice.compare(Slice {row_without_delete_sign_encoded_seq_value}) <= ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1101:** +1, nesting level increased to 4 ```cpp } else { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1136:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (has_same_rows) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1139:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (duplicate_keys > 0) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1140:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(filter_block_for_flexible_partial_update( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:1140:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(filter_block_for_flexible_partial_update( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` </details> ########## be/src/olap/rowset/segment_v2/segment_writer.cpp: ########## @@ -695,6 +704,32 @@ Status SegmentWriter::append_block_with_partial_content(const vectorized::Block* RETURN_IF_ERROR(append_block_with_variant_subcolumns(full_block)); return Status::OK(); } + +Status SegmentWriter::filter_block_for_flexible_partial_update( + vectorized::Block* block, size_t row_pos, size_t& num_rows, + vectorized::MutableColumnPtr filter_column, int duplicate_rows, std::string col_name) { + auto num_cols = block->columns(); + block->insert( + {std::move(filter_column), std::make_shared<vectorized::DataTypeUInt8>(), col_name}); + RETURN_IF_ERROR(vectorized::Block::filter_block(block, num_cols, num_cols)); + DCHECK_EQ(num_cols, block->columns()); + int merged_rows = num_rows - block->rows(); + VLOG_DEBUG << fmt::format( + "filter_block_for_flexible_partial_update[{}] after filter: " + "data.block:{}\n", + col_name, block->dump_data()); + if (duplicate_rows != merged_rows) { + auto msg = fmt::format( + "filter_block_for_flexible_partial_update {}: duplicate_rows != merged_rows, " + "duplicate_keys={}, merged_rows={}, num_rows={}, mutable_block->rows()={}", + col_name, duplicate_rows, merged_rows, num_rows, block->rows()); + DCHECK(false) << msg; + return Status::InternalError<false>(msg); + } + num_rows = block->rows(); + return Status::OK(); +} + Status SegmentWriter::append_block_with_flexible_partial_content(const vectorized::Block* block, Review Comment: warning: function 'append_block_with_flexible_partial_content' has cognitive complexity of 86 (threshold 50) [readability-function-cognitive-complexity] ```cpp Status SegmentWriter::append_block_with_flexible_partial_content(const vectorized::Block* block, ^ ``` <details> <summary>Additional context</summary> **be/src/olap/rowset/segment_v2/segment_writer.cpp:749:** nesting level increased to 1 ```cpp auto get_skip_bitmaps = [&skip_bitmap_col_idx](const vectorized::Block* block) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:766:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp DBUG_EXECUTE_IF("VerticalSegmentWriter._append_block_with_flexible_partial_content.sleep", ^ ``` **be/src/util/debug_points.h:36:** expanded from macro 'DBUG_EXECUTE_IF' ```cpp if (UNLIKELY(config::enable_debug_points)) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:766:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp DBUG_EXECUTE_IF("VerticalSegmentWriter._append_block_with_flexible_partial_content.sleep", ^ ``` **be/src/util/debug_points.h:38:** expanded from macro 'DBUG_EXECUTE_IF' ```cpp if (dp) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:775:** nesting level increased to 1 ```cpp [&full_block, &block, &row_pos, &num_rows, ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:778:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp for (std::size_t cid {0}; cid < _num_sort_key_columns; cid++) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:780:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_olap_data_convertor->set_source_content_with_specifid_column( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:780:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_olap_data_convertor->set_source_content_with_specifid_column( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:783:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (!status.ok()) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:791:** nesting level increased to 1 ```cpp auto encode_seq_column = [&block, &row_pos, &num_rows, ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:794:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_tablet_schema->has_sequence_col()) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:796:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_olap_data_convertor->set_source_content_with_specifid_column( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:796:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_olap_data_convertor->set_source_content_with_specifid_column( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:799:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (!status.ok()) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:810:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(encode_key_columns(key_columns)); ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:810:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(encode_key_columns(key_columns)); ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:817:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(encode_seq_column(seq_column)); ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:817:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(encode_seq_column(seq_column)); ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:824:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_tablet_schema->has_sequence_col()) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:825:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(merge_rows_for_sequence_column( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:825:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(merge_rows_for_sequence_column( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:828:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (origin_rows != num_rows) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:831:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(encode_key_columns(key_columns)); ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:831:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(encode_key_columns(key_columns)); ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:832:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(encode_seq_column(seq_column)); ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:832:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(encode_seq_column(seq_column)); ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:840:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(_merge_rows_for_insert_after_delete( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:840:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_merge_rows_for_insert_after_delete( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:843:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (num_rows != origin_rows) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:846:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(encode_key_columns(key_columns)); ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:846:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(encode_key_columns(key_columns)); ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:847:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(encode_seq_column(seq_column)); ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:847:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(encode_seq_column(seq_column)); ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:853:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp for (std::size_t cid {0}; cid < _num_sort_key_columns; cid++) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:856:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:856:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:864:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(generate_flexible_read_plan( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:864:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(generate_flexible_read_plan( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:871:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (config::enable_merge_on_write_correctness_check) { ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:877:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(read_plan.fill_non_primary_key_columns( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:877:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(read_plan.fill_non_primary_key_columns( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:911:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_num_rows_written != row_pos || ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:920:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:629:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/olap/rowset/segment_v2/segment_writer.cpp:920:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:631:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org