diff --git a/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp b/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp index ec0079edc64635..be28a27272be75 100644 --- a/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp @@ -225,6 +225,11 @@ Status VariantColumnReader::_new_iterator_with_flat_leaves(ColumnIteratorUPtr* i target_col.has_path_info() ? _subcolumns_meta_info->find_leaf(relative_path) : nullptr; if (!node) { if (relative_path.get_path() == SPARSE_COLUMN_PATH) { + if (_sparse_column_reader == nullptr) { + return Status::InternalError( + "Sparse column reader is not initialize, variant column is: {}", + target_col.path_info_ptr()->get_path()); + } // read sparse column and filter extracted columns in subcolumn_path_map std::unique_ptr inner_iter; RETURN_IF_ERROR(_sparse_column_reader->new_iterator(&inner_iter, nullptr)); diff --git a/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp b/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp index 8495e7c4e0bdc6..cdef8725dacea7 100644 --- a/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp +++ b/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp @@ -715,6 +715,14 @@ TEST_F(VariantColumnWriterReaderTest, test_write_data_normal) { EXPECT_TRUE(st.ok()) << st.msg(); EXPECT_TRUE(assert_cast(it7.get()) != nullptr); EXPECT_TRUE(io::global_local_filesystem()->delete_directory(_tablet->tablet_path()).ok()); + + // 20. check sparse column reader is nullptr + ColumnIteratorUPtr it_error; + variant_column_reader->_sparse_column_reader = nullptr; + st = variant_column_reader->new_iterator(&it_error, &sparse_column, &storage_read_opts, + &column_reader_cache); + EXPECT_FALSE(st.ok()) << st.msg(); + EXPECT_TRUE(it_error == nullptr); } TEST_F(VariantColumnWriterReaderTest, test_write_data_advanced) {