You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/05/22 14:51:31 UTC

[incubator-doris] 06/13: [Bug][Vectorized] fix schema change add varchar type column default value get wrong result (#9523)

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

morningman pushed a commit to branch dev-1.0.1
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git

commit 8490c3890662ff9d108533446138cec2e4050857
Author: Pxl <px...@qq.com>
AuthorDate: Thu May 19 23:38:57 2022 +0800

    [Bug][Vectorized] fix schema change add varchar type column default value get wrong result (#9523)
---
 be/src/olap/rowset/segment_v2/column_reader.cpp | 14 +++++++++++---
 be/src/olap/rowset/segment_v2/column_reader.h   |  2 +-
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp
index 982de671d7..63c4f0d36f 100644
--- a/be/src/olap/rowset/segment_v2/column_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/column_reader.cpp
@@ -346,10 +346,10 @@ Status ColumnReader::new_iterator(ColumnIterator** iterator) {
         auto type = (FieldType)_meta.type();
         switch (type) {
         case FieldType::OLAP_FIELD_TYPE_ARRAY: {
-            ColumnIterator* item_iterator;
+            ColumnIterator* item_iterator = nullptr;
             RETURN_IF_ERROR(_sub_readers[0]->new_iterator(&item_iterator));
 
-            ColumnIterator* offset_iterator;
+            ColumnIterator* offset_iterator = nullptr;
             RETURN_IF_ERROR(_sub_readers[1]->new_iterator(&offset_iterator));
 
             ColumnIterator* null_iterator = nullptr;
@@ -485,7 +485,7 @@ Status FileColumnIterator::seek_to_page_start() {
     return seek_to_ordinal(_page.first_ordinal);
 }
 
-void FileColumnIterator::_seek_to_pos_in_page(ParsedPage* page, ordinal_t offset_in_page) {
+void FileColumnIterator::_seek_to_pos_in_page(ParsedPage* page, ordinal_t offset_in_page) const {
     if (page->offset_in_page == offset_in_page) {
         // fast path, do nothing
         return;
@@ -819,6 +819,14 @@ void DefaultValueColumnIterator::insert_default_data(vectorized::MutableColumnPt
             insert_column_data();
             break;
         }
+        case OLAP_FIELD_TYPE_STRING:
+        case OLAP_FIELD_TYPE_VARCHAR:
+        case OLAP_FIELD_TYPE_CHAR: {
+            data_ptr = ((Slice*)_mem_value)->data;
+            data_len = ((Slice*)_mem_value)->size;
+            insert_column_data();
+            break;
+        }
         default: {
             data_ptr = (char *) _mem_value;
             data_len = _type_size;
diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h
index 99206bd53a..76c41ae991 100644
--- a/be/src/olap/rowset/segment_v2/column_reader.h
+++ b/be/src/olap/rowset/segment_v2/column_reader.h
@@ -278,7 +278,7 @@ public:
     bool is_nullable() { return _reader->is_nullable(); }
 
 private:
-    void _seek_to_pos_in_page(ParsedPage* page, ordinal_t offset_in_page);
+    void _seek_to_pos_in_page(ParsedPage* page, ordinal_t offset_in_page) const;
     Status _load_next_page(bool* eos);
     Status _read_data_page(const OrdinalPageIndexIterator& iter);
 


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