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]