This is an automated email from the ASF dual-hosted git repository.
airborne 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 fe6ea3b8b51 [Fix](inverted index) fix missed array inverted index null
bitmap #38907 (#38934)
fe6ea3b8b51 is described below
commit fe6ea3b8b51f56a77b34d4531094ffdbc226158c
Author: airborne12 <[email protected]>
AuthorDate: Tue Aug 6 17:17:28 2024 +0800
[Fix](inverted index) fix missed array inverted index null bitmap #38907
(#38934)
cherry pick from #38907
---
be/src/olap/rowset/segment_v2/column_writer.cpp | 9 +++++++++
be/src/olap/rowset/segment_v2/inverted_index_writer.cpp | 5 +++++
be/src/olap/rowset/segment_v2/inverted_index_writer.h | 1 +
3 files changed, 15 insertions(+)
diff --git a/be/src/olap/rowset/segment_v2/column_writer.cpp
b/be/src/olap/rowset/segment_v2/column_writer.cpp
index e9315f7a220..e463b883fd2 100644
--- a/be/src/olap/rowset/segment_v2/column_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/column_writer.cpp
@@ -506,6 +506,7 @@ Status ScalarColumnWriter::init() {
return Status::OK();
}
Status add_nulls(uint32_t count) override { return
Status::OK(); }
+ Status add_array_nulls(uint32_t row_id) override { return
Status::OK(); }
Status finish() override { return Status::OK(); }
int64_t size() const override { return 0; }
int64_t file_size() const override { return 0; }
@@ -1014,10 +1015,18 @@ Status ArrayColumnWriter::append_nullable(const
uint8_t* null_map, const uint8_t
size_t num_rows) {
RETURN_IF_ERROR(append_data(ptr, num_rows));
if (is_nullable()) {
+ if (_opts.need_inverted_index) {
+ for (int row_id = 0; row_id < num_rows; row_id++) {
+ if (null_map[row_id] == 1) {
+
RETURN_IF_ERROR(_inverted_index_builder->add_array_nulls(row_id));
+ }
+ }
+ }
RETURN_IF_ERROR(_null_writer->append_data(&null_map, num_rows));
}
return Status::OK();
}
+
Status ArrayColumnWriter::finish() {
RETURN_IF_ERROR(_offset_writer->finish());
if (is_nullable()) {
diff --git a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
index e2815dfa108..5ac18999e9e 100644
--- a/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/inverted_index_writer.cpp
@@ -304,6 +304,11 @@ public:
return Status::OK();
}
+ Status add_array_nulls(uint32_t row_id) override {
+ _null_bitmap.add(row_id);
+ return Status::OK();
+ }
+
void new_inverted_index_field(const char* field_value_data, size_t
field_value_size) {
if (_parser_type != InvertedIndexParserType::PARSER_UNKNOWN &&
_parser_type != InvertedIndexParserType::PARSER_NONE) {
diff --git a/be/src/olap/rowset/segment_v2/inverted_index_writer.h
b/be/src/olap/rowset/segment_v2/inverted_index_writer.h
index 3b4e5ba2709..c29bb8c0b9d 100644
--- a/be/src/olap/rowset/segment_v2/inverted_index_writer.h
+++ b/be/src/olap/rowset/segment_v2/inverted_index_writer.h
@@ -64,6 +64,7 @@ public:
size_t count) = 0;
virtual Status add_nulls(uint32_t count) = 0;
+ virtual Status add_array_nulls(uint32_t row_id) = 0;
virtual Status finish() = 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]