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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new f80c3d827a1 [Fix](Branch-2.1) fix not null variant will lost null 
bitmap (#42559)
f80c3d827a1 is described below

commit f80c3d827a19959e71dc8a1905d97355991ebd04
Author: lihangyu <[email protected]>
AuthorDate: Mon Oct 28 20:59:47 2024 +0800

    [Fix](Branch-2.1) fix not null variant will lost null bitmap (#42559)
    
    part of #39022
---
 .../olap/rowset/segment_v2/hierarchical_data_reader.h  |  7 +++++++
 .../suites/variant_p0/variant_hirachinal.groovy        | 18 ++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/be/src/olap/rowset/segment_v2/hierarchical_data_reader.h 
b/be/src/olap/rowset/segment_v2/hierarchical_data_reader.h
index c665692ac8a..3197e95cf75 100644
--- a/be/src/olap/rowset/segment_v2/hierarchical_data_reader.h
+++ b/be/src/olap/rowset/segment_v2/hierarchical_data_reader.h
@@ -184,6 +184,13 @@ private:
                             .get_nested_column())
                     .clear_subcolumns_data();
         } else {
+            if (dst->is_nullable()) {
+                // No nullable info exist in hirearchical data, fill nullmap 
with all none null
+                vectorized::ColumnUInt8& dst_null_map =
+                        
assert_cast<vectorized::ColumnNullable&>(*dst).get_null_map_column();
+                auto fake_nullable_column = 
vectorized::ColumnUInt8::create(nrows, 0);
+                dst_null_map.insert_range_from(*fake_nullable_column, 0, 
nrows);
+            }
             vectorized::ColumnObject& root_column =
                     
assert_cast<vectorized::ColumnObject&>(*_root_reader->column);
             root_column.clear_subcolumns_data();
diff --git a/regression-test/suites/variant_p0/variant_hirachinal.groovy 
b/regression-test/suites/variant_p0/variant_hirachinal.groovy
index c0529b6ca80..2aadce840b5 100644
--- a/regression-test/suites/variant_p0/variant_hirachinal.groovy
+++ b/regression-test/suites/variant_p0/variant_hirachinal.groovy
@@ -45,4 +45,22 @@ suite("regression_test_variant_hirachinal", "variant_type"){
     qt_sql "select * from ${table_name} order by k limit 10"
     qt_sql "select v['c'] from ${table_name} where k = -3 or k = -2"
     qt_sql "select v['b'] from ${table_name} where k = -3 or k = -2"
+
+    table_name = "var_rs_not_null"
+    sql "DROP TABLE IF EXISTS ${table_name}"    
+    sql """
+            CREATE TABLE IF NOT EXISTS ${table_name} (
+                k bigint,
+                v variant not null
+            )
+            DUPLICATE KEY(`k`)
+            DISTRIBUTED BY HASH(k) BUCKETS 1
+            properties("replication_num" = "1", "disable_auto_compaction" = 
"false");
+        """
+    sql """insert into ${table_name} values (-3, '{"a" : 1, "b" : 1.5, "c" : 
[1, 2, 3]}')"""
+    sql """insert into  ${table_name} select -2, '{"a": 11245, "b" : [123, 
{"xx" : 1}], "c" : {"c" : 456, "d" : "null", "e" : 7.111}}'  as json_str
+            union  all select -1, '{"a": 1123}' as json_str union all select 
*, '{"a" : 1234, "xxxx" : "kaana"}' as json_str from numbers("number" = "4096") 
limit 4096 ;"""
+    sql "select * from ${table_name} order by k + 1 limit 10"
+    sql "select v['c'] from ${table_name} where k = -3 or k = -2"
+    sql "select v['b'] from ${table_name} where k = -3 or k = -2"
 }
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to