From 06ecf8bdc54cee36e48b2ead0bdfd7b9a502db0b Mon Sep 17 00:00:00 2001 From: yixiutt <102007456+yixiutt@users.noreply.github.com> Date: Fri, 15 Jul 2022 20:39:50 +0800 Subject: [PATCH] [Bug](vec compaction) fix compaction core with sequence column (#10845) Block reader ignores sequence column but rowset writer should write this column, will core in set_source_column row_num DCHECK. Sequence column works across rowsets, so compaction can not discard it and should keeps it altime. Co-authored-by: yixiutt --- be/src/vec/olap/block_reader.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/be/src/vec/olap/block_reader.cpp b/be/src/vec/olap/block_reader.cpp index ab187367f9..abef78014b 100644 --- a/be/src/vec/olap/block_reader.cpp +++ b/be/src/vec/olap/block_reader.cpp @@ -106,8 +106,14 @@ void BlockReader::_init_agg_state(const ReaderParams& read_params) { Status BlockReader::init(const ReaderParams& read_params) { TabletReader::init(read_params); - auto return_column_size = - read_params.origin_return_columns->size() - (_sequence_col_idx != -1 ? 1 : 0); + int32_t return_column_size = 0; + // read sequence column if not reader_query + if (read_params.reader_type != ReaderType::READER_QUERY) { + return_column_size = read_params.origin_return_columns->size(); + } else { + return_column_size = + read_params.origin_return_columns->size() - (_sequence_col_idx != -1 ? 1 : 0); + } _return_columns_loc.resize(read_params.return_columns.size()); for (int i = 0; i < return_column_size; ++i) { auto cid = read_params.origin_return_columns->at(i);