This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch compaction_opt in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/compaction_opt by this push: new 8f118dc849 [bugfix](vertical_compaction) fix sequence&delete_sign column handler (#14488) 8f118dc849 is described below commit 8f118dc849c98c31371ce45e1eb86281b92d465a Author: yixiutt <102007456+yixi...@users.noreply.github.com> AuthorDate: Tue Nov 22 16:37:28 2022 +0800 [bugfix](vertical_compaction) fix sequence&delete_sign column handler (#14488) --- be/src/olap/merger.cpp | 2 +- be/src/vec/olap/vertical_block_reader.cpp | 9 ++++++++- be/src/vec/olap/vertical_merge_iterator.cpp | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/be/src/olap/merger.cpp b/be/src/olap/merger.cpp index d46c094bc0..9217a88316 100644 --- a/be/src/olap/merger.cpp +++ b/be/src/olap/merger.cpp @@ -199,7 +199,7 @@ void Merger::vertical_split_columns(TabletSchemaSPtr tablet_schema, // in unique key, sequence & delete sign column should merge with key columns int32_t sequence_col_idx = -1; int32_t delete_sign_idx = -1; - // in key column compaction, seq_col real index is _block->columns() -2 + // in key column compaction, seq_col real index is _num_key_columns // and delete_sign column is _block->columns() - 1 if (tablet_schema->keys_type() == KeysType::UNIQUE_KEYS) { if (tablet_schema->has_sequence_col()) { diff --git a/be/src/vec/olap/vertical_block_reader.cpp b/be/src/vec/olap/vertical_block_reader.cpp index 1a385c3e37..02121c8162 100644 --- a/be/src/vec/olap/vertical_block_reader.cpp +++ b/be/src/vec/olap/vertical_block_reader.cpp @@ -329,9 +329,16 @@ Status VerticalBlockReader::_unique_key_next_block(Block* block, MemPool* mem_po } auto block_rows = block->rows(); if (_filter_delete && block_rows > 0) { - auto target_columns = block->mutate_columns(); + int ori_delete_sign_idx = _reader_context.tablet_schema->field_index(DELETE_SIGN); + if (ori_delete_sign_idx < 0) { + *eof = (res.is_end_of_file()); + _eof = *eof; + return Status::OK(); + } + // delete sign column must store in last column of the block int delete_sign_idx = block->columns() - 1; DCHECK(delete_sign_idx > 0); + auto target_columns = block->mutate_columns(); MutableColumnPtr delete_filter_column = (*std::move(_delete_filter_column)).mutate(); reinterpret_cast<ColumnUInt8*>(delete_filter_column.get())->resize(block_rows); diff --git a/be/src/vec/olap/vertical_merge_iterator.cpp b/be/src/vec/olap/vertical_merge_iterator.cpp index 613f115f94..44b89f4287 100644 --- a/be/src/vec/olap/vertical_merge_iterator.cpp +++ b/be/src/vec/olap/vertical_merge_iterator.cpp @@ -217,8 +217,8 @@ bool VerticalMergeIteratorContext::compare(const VerticalMergeIteratorContext& r } auto col_cmp_res = 0; if (_seq_col_idx != -1) { - DCHECK(_block->columns() > 2); - auto real_seq_idx = _block->columns() - 2; + DCHECK(_block->columns() >= _num_key_columns); + auto real_seq_idx = _num_key_columns; col_cmp_res = _block->compare_column_at(_index_in_block, rhs._index_in_block, real_seq_idx, *rhs._block, -1); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org