This is an automated email from the ASF dual-hosted git repository.

gavinchou pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git

commit ad49871b84cce5ad5fdcf67eb99e26c3e1cc8869
Author: lihangyu <15605149...@163.com>
AuthorDate: Wed Sep 4 10:45:01 2024 +0800

    [Fix](Variant) sparse columns should not be added in init segment iterator 
(#40295)
---
 be/src/olap/rowset/segment_v2/segment.cpp     | 9 +++++----
 regression-test/suites/variant_p0/load.groovy | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/segment.cpp 
b/be/src/olap/rowset/segment_v2/segment.cpp
index 02538783656..0354cd4e3e7 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -559,7 +559,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(
@@ -623,9 +623,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) {
diff --git a/regression-test/suites/variant_p0/load.groovy 
b/regression-test/suites/variant_p0/load.groovy
index c4c10f0e012..65a5a838c50 100644
--- a/regression-test/suites/variant_p0/load.groovy
+++ b/regression-test/suites/variant_p0/load.groovy
@@ -290,7 +290,7 @@ suite("regression_test_variant", "p0"){
         sql """insert into ${table_name} values (5, '{"i" : 1}'), (1, '{"a" : 
1}')"""
         sql """insert into ${table_name} values (6, '{"j" : 1}'), (1, '{"a" : 
1}')"""
         sql """insert into ${table_name} values (6, '{"k" : 1}'), (1, '{"a" : 
1}')"""
-        sql "select * from ${table_name}"
+        sql "select 
/*+SET_VAR(batch_size=4064,broker_load_batch_size=16352,disable_streaming_preaggregations=false,enable_distinct_streaming_aggregation=true,parallel_fragment_exec_instance_num=1,parallel_pipeline_task_num=4,profile_level=1,enable_pipeline_engine=true,enable_parallel_scan=true,parallel_scan_max_scanners_count=16,parallel_scan_min_rows_per_scanner=128,enable_fold_constant_by_be=true,enable_rewrite_element_at_to_slot=true,runtime_filter_type=2,enable_parallel_result_sink=
 [...]
         qt_sql_36_1 "select cast(v['a'] as int), cast(v['b'] as int), 
cast(v['c'] as int) from ${table_name} order by k limit 10"
         sql "DELETE FROM ${table_name} WHERE k=1"
         sql "select * from ${table_name}"


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to