From 2a389cd24d67ef77ff99ad6794129feac584b31a Mon Sep 17 00:00:00 2001 From: lihangyu <15605149486@163.com> Date: Wed, 4 Sep 2024 10:45:01 +0800 Subject: [PATCH] [Fix](Variant) sparse columns should not be added in init segment iterator (#40295) --- be/src/olap/rowset/segment_v2/segment.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp index f6d87e5b8e5cbe..9d1b265908d7e9 100644 --- a/be/src/olap/rowset/segment_v2/segment.cpp +++ b/be/src/olap/rowset/segment_v2/segment.cpp @@ -498,7 +498,7 @@ Status Segment::_create_column_readers(const SegmentFooterPB& footer) { vectorized::PathInData path; path.from_protobuf(spase_column_pb.column_path_info()); // Read from root column, so reader is nullptr - _sparse_column_tree[column.unique_id()].add( + _sparse_column_tree[unique_id].add( path.copy_pop_front(), SubcolumnReader {nullptr, vectorized::DataTypeFactory::instance().create_data_type( @@ -562,9 +562,10 @@ Status Segment::new_column_iterator_with_path(const TabletColumn& tablet_column, const auto* node = tablet_column.has_path_info() ? _sub_column_tree[unique_id].find_exact(relative_path) : nullptr; - const auto* sparse_node = tablet_column.has_path_info() - ? _sparse_column_tree[unique_id].find_exact(relative_path) - : nullptr; + const auto* sparse_node = + tablet_column.has_path_info() && _sparse_column_tree.contains(unique_id) + ? _sparse_column_tree[unique_id].find_exact(relative_path) + : nullptr; // Currently only compaction and checksum need to read flat leaves // They both use tablet_schema_with_merged_max_schema_version as read schema auto type_to_read_flat_leaves = [](ReaderType type) {