You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2023/06/15 06:07:06 UTC

[doris] branch master updated: [fix](partial-update) sequence column is not proceeded correctly #20813

This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 15b9830859 [fix](partial-update) sequence column is not proceeded correctly #20813
15b9830859 is described below

commit 15b9830859b2e6541dc9cd41e99965c51808af5e
Author: zhannngchen <48...@users.noreply.github.com>
AuthorDate: Thu Jun 15 14:07:00 2023 +0800

    [fix](partial-update) sequence column is not proceeded correctly #20813
    
    When checking the keys in PrimaryKeyIndex, seq_col_length is not set to correct value, then we got a NOT_FOUND result for an existing key.
---
 be/src/olap/rowset/segment_v2/segment.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp
index e81b71eeed..527f8391cc 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -358,10 +358,12 @@ Status Segment::lookup_row_key(const Slice& key, bool with_seq_col, RowLocation*
     RETURN_IF_ERROR(load_pk_index_and_bf());
     bool has_seq_col = _tablet_schema->has_sequence_col();
     size_t seq_col_length = 0;
-    if (has_seq_col && with_seq_col) {
+    if (has_seq_col) {
         seq_col_length = _tablet_schema->column(_tablet_schema->sequence_col_idx()).length() + 1;
     }
-    Slice key_without_seq = Slice(key.get_data(), key.get_size() - seq_col_length);
+
+    Slice key_without_seq =
+            Slice(key.get_data(), key.get_size() - (with_seq_col ? seq_col_length : 0));
 
     DCHECK(_pk_index_reader != nullptr);
     if (!_pk_index_reader->check_present(key_without_seq)) {
@@ -396,6 +398,10 @@ Status Segment::lookup_row_key(const Slice& key, bool with_seq_col, RowLocation*
             return Status::NotFound("Can't find key in the segment");
         }
 
+        if (!with_seq_col) {
+            return Status::OK();
+        }
+
         // compare sequence id
         Slice sequence_id =
                 Slice(key.get_data() + key_without_seq.get_size() + 1, seq_col_length - 1);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org