github-actions[bot] commented on code in PR #44098: URL: https://github.com/apache/doris/pull/44098#discussion_r1877048219
########## be/src/vec/exec/format/parquet/parquet_common.h: ########## @@ -69,42 +70,148 @@ struct ParquetInt96 { #pragma pack() static_assert(sizeof(ParquetInt96) == 12, "The size of ParquetInt96 is not 12."); -class ColumnSelectVector { +class FilterMap { public: - enum DataReadType : uint8_t { CONTENT = 0, NULL_DATA, FILTERED_CONTENT, FILTERED_NULL }; + FilterMap() = default; + Status init(const uint8_t* filter_map_data, size_t filter_map_size, bool filter_all); - ColumnSelectVector(const uint8_t* filter_map, size_t filter_map_size, bool filter_all); + Status generate_nested_filter_map(const std::vector<level_t>& rep_levels, + std::vector<uint8_t>& nested_filter_map_data, + std::unique_ptr<FilterMap>* nested_filter_map, + size_t* current_row_ptr, size_t start_index = 0) const; - ColumnSelectVector() = default; + const uint8_t* filter_map_data() const { return _filter_map_data; } + size_t filter_map_size() const { return _filter_map_size; } + bool has_filter() const { return _has_filter; } + bool filter_all() const { return _filter_all; } + double filter_ratio() const { return _has_filter ? _filter_ratio : 0; } - void build(const uint8_t* filter_map, size_t filter_map_size, bool filter_all); + bool can_filter_all(size_t remaining_num_values, size_t filter_map_index); - const uint8_t* filter_map() { return _filter_map; } +private: + bool _has_filter = false; + bool _filter_all = false; + const uint8_t* _filter_map_data = nullptr; + size_t _filter_map_size = 0; + double _filter_ratio = 0; +}; - size_t num_values() const { return _num_values; } +class ColumnSelectVector { +public: + enum DataReadType : uint8_t { CONTENT = 0, NULL_DATA, FILTERED_CONTENT, FILTERED_NULL }; - size_t num_nulls() const { return _num_nulls; } + ColumnSelectVector() = default; - size_t num_filtered() const { return _num_filtered; } + Status init(const std::vector<uint16_t>& run_length_null_map, size_t num_values, Review Comment: warning: function 'init' exceeds recommended size/complexity thresholds [readability-function-size] ```cpp Status init(const std::vector<uint16_t>& run_length_null_map, size_t num_values, ^ ``` <details> <summary>Additional context</summary> **be/src/vec/exec/format/parquet/parquet_common.h:104:** 98 lines including whitespace and comments (threshold 80) ```cpp Status init(const std::vector<uint16_t>& run_length_null_map, size_t num_values, ^ ``` </details> ########## be/src/vec/exec/format/parquet/vparquet_column_reader.cpp: ########## @@ -476,7 +565,7 @@ } Status ScalarColumnReader::read_column_data(ColumnPtr& doris_column, DataTypePtr& type, Review Comment: warning: function 'read_column_data' has cognitive complexity of 81 (threshold 50) [readability-function-cognitive-complexity] ```cpp Status ScalarColumnReader::read_column_data(ColumnPtr& doris_column, DataTypePtr& type, ^ ``` <details> <summary>Additional context</summary> **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:569:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_converter == nullptr) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:572:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (!_converter->support()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:581:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp do { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:582:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_chunk_reader->remaining_num_values() == 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:583:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (!_chunk_reader->has_next_page()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:588:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->next_page()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:588:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->next_page()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:590:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_nested_column) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:591:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->load_page_data_idempotent()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:591:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->load_page_data_idempotent()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:592:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_read_nested_column(resolved_column, resolved_type, filter_map, ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:592:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_read_nested_column(resolved_column, resolved_type, filter_map, ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:602:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (read_ranges.size() == 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:605:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_page()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:605:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_page()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:607:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:611:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (filter_map.has_filter() && filter_map.filter_ratio() > 0.6) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:611:** +1 ```cpp if (filter_map.has_filter() && filter_map.filter_ratio() > 0.6) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:617:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (batch_size >= remaining_num_values && ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:617:** +1 ```cpp if (batch_size >= remaining_num_values && ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:622:** +5, including nesting penalty of 4, nesting level increased to 5 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_page()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:622:** +6, including nesting penalty of 5, nesting level increased to 6 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_page()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:624:** +5, including nesting penalty of 4, nesting level increased to 5 ```cpp if (!_chunk_reader->has_next_page()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:629:** +1 ```cpp skip_whole_batch = batch_size <= remaining_num_values && ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:631:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (skip_whole_batch) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:636:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->load_page_data_idempotent()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:636:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->load_page_data_idempotent()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:661:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_chunk_reader->remaining_num_values() == 0 && !_chunk_reader->has_next_page()) { ^ ``` </details> ########## be/src/vec/exec/format/parquet/vparquet_group_reader.cpp: ########## @@ -445,7 +446,7 @@ Status RowGroupReader::_read_column_data(Block* block, const std::vector<std::st Status RowGroupReader::_do_lazy_read(Block* block, size_t batch_size, size_t* read_rows, Review Comment: warning: function '_do_lazy_read' has cognitive complexity of 109 (threshold 50) [readability-function-cognitive-complexity] ```cpp Status RowGroupReader::_do_lazy_read(Block* block, size_t batch_size, size_t* read_rows, ^ ``` <details> <summary>Additional context</summary> **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:454:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp for (uint32_t i = 0; i < origin_column_num; ++i) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:459:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp while (!_state->is_cancelled()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:464:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_read_column_data(block, _lazy_read_ctx.predicate_columns.first, batch_size, ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:464:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_read_column_data(block, _lazy_read_ctx.predicate_columns.first, batch_size, ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:466:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (pre_read_rows == 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:471:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_fill_partition_columns(block, pre_read_rows, ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:471:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_fill_partition_columns(block, pre_read_rows, ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:473:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_fill_missing_columns(block, pre_read_rows, ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:473:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_fill_missing_columns(block, pre_read_rows, ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:476:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_build_pos_delete_filter(pre_read_rows)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:476:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_build_pos_delete_filter(pre_read_rows)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:479:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_lazy_read_ctx.resize_first_column) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:487:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_position_delete_ctx.has_filter) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:498:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(VExprContext::execute_conjuncts(filter_contexts, &filters, block, ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:498:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(VExprContext::execute_conjuncts(filter_contexts, &filters, block, ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:502:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_lazy_read_ctx.resize_first_column) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:509:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(filter_map_ptr->init(filter_map_data, pre_read_rows, can_filter_all)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:509:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(filter_map_ptr->init(filter_map_data, pre_read_rows, can_filter_all)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:510:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (filter_map_ptr->filter_all()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:523:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (!pre_eof) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:524:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (pre_raw_read_rows >= config::doris_scanner_row_num) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:529:** +1, nesting level increased to 3 ```cpp } else { // pre_eof ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:537:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:541:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_state->is_cancelled()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:545:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (filter_map_ptr == nullptr) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:554:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_cached_filtered_rows != 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:555:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_rebuild_filter_map(filter_map, rebuild_filter_map, pre_read_rows)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:555:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_rebuild_filter_map(filter_map, rebuild_filter_map, pre_read_rows)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:563:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(_read_column_data(block, _lazy_read_ctx.lazy_read_columns, pre_read_rows, ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:563:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_read_column_data(block, _lazy_read_ctx.lazy_read_columns, pre_read_rows, ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:566:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (pre_read_rows != lazy_read_rows) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:573:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (filter_map.has_filter()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:574:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (block->columns() == origin_column_num) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:578:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:579:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_CATCH_EXCEPTION(Block::filter_block_internal( ^ ``` **be/src/common/exception.h:79:** expanded from macro 'RETURN_IF_CATCH_EXCEPTION' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:579:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_CATCH_EXCEPTION(Block::filter_block_internal( ^ ``` **be/src/common/exception.h:84:** expanded from macro 'RETURN_IF_CATCH_EXCEPTION' ```cpp } catch (const doris::Exception& e) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:579:** +5, including nesting penalty of 4, nesting level increased to 5 ```cpp RETURN_IF_CATCH_EXCEPTION(Block::filter_block_internal( ^ ``` **be/src/common/exception.h:85:** expanded from macro 'RETURN_IF_CATCH_EXCEPTION' ```cpp if (e.code() == doris::ErrorCode::MEM_ALLOC_FAILED) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:583:** +1, nesting level increased to 1 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:591:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp for (int i = 0; i < column_num; ++i) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:593:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (column_size != 0 && cz != 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:593:** +1 ```cpp if (column_size != 0 && cz != 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:596:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (cz != 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:604:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(_fill_partition_columns(block, column_size, _lazy_read_ctx.partition_columns)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:604:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_fill_partition_columns(block, column_size, _lazy_read_ctx.partition_columns)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:605:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp RETURN_IF_ERROR(_fill_missing_columns(block, column_size, _lazy_read_ctx.missing_columns)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:605:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR(_fill_missing_columns(block, column_size, _lazy_read_ctx.missing_columns)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:606:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (!_not_single_slot_filter_conjuncts.empty()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:609:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_CATCH_EXCEPTION( ^ ``` **be/src/common/exception.h:79:** expanded from macro 'RETURN_IF_CATCH_EXCEPTION' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:610:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(VExprContext::execute_conjuncts_and_filter_block( ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:610:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(VExprContext::execute_conjuncts_and_filter_block( ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:609:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_CATCH_EXCEPTION( ^ ``` **be/src/common/exception.h:84:** expanded from macro 'RETURN_IF_CATCH_EXCEPTION' ```cpp } catch (const doris::Exception& e) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:609:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_CATCH_EXCEPTION( ^ ``` **be/src/common/exception.h:85:** expanded from macro 'RETURN_IF_CATCH_EXCEPTION' ```cpp if (e.code() == doris::ErrorCode::MEM_ALLOC_FAILED) { \ ^ ``` </details> ########## be/src/vec/exec/format/parquet/vparquet_column_reader.cpp: ########## @@ -316,9 +319,12 @@ Status ScalarColumnReader::_read_values(size_t num_values, ColumnPtr& doris_colu * whether the reader should read the remaining value of the last row in previous page. */ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataTypePtr& type, Review Comment: warning: function '_read_nested_column' has cognitive complexity of 127 (threshold 50) [readability-function-cognitive-complexity] ```cpp Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataTypePtr& type, ^ ``` <details> <summary>Additional context</summary> **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:328:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (align_rows) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:333:** +1, nesting level increased to 1 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:336:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_nested_filter_map_data) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:346:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (has_rep_level) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:349:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp while (parsed_rows <= batch_size && remaining_values > 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:349:** +1 ```cpp while (parsed_rows <= batch_size && remaining_values > 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:351:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (rep_level == 0) { // rep_level 0 indicates start of new row ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:352:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp if (parsed_rows == batch_size) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:363:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (filter_map.has_filter() && (!filter_map.filter_all())) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:363:** +1 ```cpp if (filter_map.has_filter() && (!filter_map.filter_all())) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:364:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (_nested_filter_map_data == nullptr) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:367:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(filter_map.generate_nested_filter_map( ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:367:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(filter_map.generate_nested_filter_map( ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:373:** +1, nesting level increased to 1 ```cpp } else if (!align_rows) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:383:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (has_def_level) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:385:** +1, nesting level increased to 1 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:393:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (doris_column->is_nullable()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:399:** +1, nesting level increased to 1 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:400:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_field_schema->is_nullable) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:415:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp while (has_read < origin_size + parsed_values) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:418:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp while (has_read < origin_size + parsed_values && _def_levels[has_read] == def_level) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:423:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (def_level < _field_schema->repeated_parent_def_level) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:424:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp for (size_t i = 0; i < loop_read; i++) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:432:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (is_null) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:434:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:438:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (prev_is_null == is_null && (USHRT_MAX - null_map.back() >= loop_read)) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:438:** +1 ```cpp if (prev_is_null == is_null && (USHRT_MAX - null_map.back() >= loop_read)) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:440:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:441:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp if (!(prev_is_null ^ is_null)) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:445:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp while (remaining > USHRT_MAX) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:458:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (current_filter_map->filter_all()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:460:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (null_size > 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:461:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(null_size, false)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:461:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(null_size, false)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:463:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (nonnull_size > 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:464:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(nonnull_size, true)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:464:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(nonnull_size, true)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:466:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (ancestor_nulls != 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:467:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(ancestor_nulls, false)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:467:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(ancestor_nulls, false)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:469:** +1, nesting level increased to 1 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:473:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:473:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:479:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:479:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR( ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:481:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (ancestor_nulls != 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:482:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(ancestor_nulls, false)); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:482:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->skip_values(ancestor_nulls, false)); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:489:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_chunk_reader->remaining_num_values() == 0) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:490:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (_chunk_reader->has_next_page()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:491:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->next_page()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:491:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->next_page()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:492:** +3, including nesting penalty of 2, nesting level increased to 3 ```cpp RETURN_IF_ERROR(_chunk_reader->load_page_data()); ^ ``` **be/src/common/status.h:632:** expanded from macro 'RETURN_IF_ERROR' ```cpp do { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:492:** +4, including nesting penalty of 3, nesting level increased to 4 ```cpp RETURN_IF_ERROR(_chunk_reader->load_page_data()); ^ ``` **be/src/common/status.h:634:** expanded from macro 'RETURN_IF_ERROR' ```cpp if (UNLIKELY(!_status_.ok())) { \ ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:495:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:501:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (current_filter_map->has_filter()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:502:** +2, including nesting penalty of 1, nesting level increased to 2 ```cpp if (current_filter_map->filter_all()) { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:505:** +1, nesting level increased to 2 ```cpp } else { ^ ``` **be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:528:** +1, including nesting penalty of 0, nesting level increased to 1 ```cpp if (_rep_levels.size() > 0) { ^ ``` </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