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 <pxl...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org