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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]