From a2ae225c77294dafa8b1026536dba46d601c5646 Mon Sep 17 00:00:00 2001 From: lihangyu <15605149486@163.com> Date: Tue, 14 Nov 2023 16:51:23 +0800 Subject: [PATCH] [Fix](row cache) invalid row cache using key encoded without sequence column (#26948) --- be/src/olap/rowset/segment_v2/segment_writer.cpp | 2 +- be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index 476130d541..329a7fa1e9 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -387,6 +387,7 @@ Status SegmentWriter::append_block_with_partial_content(const vectorized::Block* size_t delta_pos = block_pos - row_pos; size_t segment_pos = segment_start_pos + delta_pos; std::string key = _full_encode_keys(key_columns, delta_pos); + _maybe_invalid_row_cache(key); if (have_input_seq_column) { _encode_seq_column(seq_column, delta_pos, &key); } @@ -396,7 +397,6 @@ Status SegmentWriter::append_block_with_partial_content(const vectorized::Block* if (!_tablet_schema->has_sequence_col() || have_input_seq_column) { RETURN_IF_ERROR(_primary_key_index_builder->add_item(key)); } - _maybe_invalid_row_cache(key); // mark key with delete sign as deleted. bool have_delete_sign = diff --git a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp index 760ef3d6c9..23ae7cfd42 100644 --- a/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp @@ -366,6 +366,7 @@ Status VerticalSegmentWriter::_append_block_with_partial_content(RowsInBlock& da size_t delta_pos = block_pos - data.row_pos; size_t segment_pos = segment_start_pos + delta_pos; std::string key = _full_encode_keys(key_columns, delta_pos); + _maybe_invalid_row_cache(key); if (have_input_seq_column) { _encode_seq_column(seq_column, delta_pos, &key); } @@ -375,7 +376,6 @@ Status VerticalSegmentWriter::_append_block_with_partial_content(RowsInBlock& da if (!_tablet_schema->has_sequence_col() || have_input_seq_column) { RETURN_IF_ERROR(_primary_key_index_builder->add_item(key)); } - _maybe_invalid_row_cache(key); // mark key with delete sign as deleted. bool have_delete_sign = @@ -715,6 +715,7 @@ Status VerticalSegmentWriter::write_batch() { std::string last_key; for (size_t pos = 0; pos < data.num_rows; pos++) { std::string key = _full_encode_keys(key_columns, pos); + _maybe_invalid_row_cache(key); if (_tablet_schema->has_sequence_col()) { _encode_seq_column(seq_column, pos, &key); } @@ -722,7 +723,6 @@ Status VerticalSegmentWriter::write_batch() { << "found duplicate key or key is not sorted! current key: " << key << ", last key" << last_key; RETURN_IF_ERROR(_primary_key_index_builder->add_item(key)); - _maybe_invalid_row_cache(key); last_key = std::move(key); } } else {