diff --git a/deps/oblib/src/common/object/ob_object.h b/deps/oblib/src/common/object/ob_object.h index 5aa41f0ad..bba7c03d5 100644 --- a/deps/oblib/src/common/object/ob_object.h +++ b/deps/oblib/src/common/object/ob_object.h @@ -554,10 +554,10 @@ struct ObLobDataOutRowCtx }; ObLobDataOutRowCtx() : is_full_(0), op_(0), offset_(0), check_sum_(0), seq_no_st_(0), seq_no_cnt_(0), - del_seq_no_cnt_(0), modified_len_(0), first_meta_offset_(0), chunk_size_(0) + del_seq_no_cnt_(0), modified_len_(0), first_meta_offset_(0), chunk_size_(0), reserved_(0) {} TO_STRING_KV(K_(is_full), K_(op), K_(offset), K_(check_sum), K_(seq_no_st), K_(seq_no_cnt), - K_(del_seq_no_cnt), K_(modified_len), K_(first_meta_offset), K_(chunk_size)); + K_(del_seq_no_cnt), K_(modified_len), K_(first_meta_offset), K_(chunk_size), K_(reserved)); uint64_t is_full_ : 1; uint64_t op_ : 8; uint64_t offset_ : 55; @@ -568,6 +568,9 @@ struct ObLobDataOutRowCtx uint64_t modified_len_; uint32_t first_meta_offset_ : 24; uint32_t chunk_size_ : 8; // unit is kb + // this is 8 bytes aligned, so left 4 byte + // and this field is added later when bug is found, and may be a random value + uint32_t reserved_; bool is_diff() const { return OpType::DIFF == op_; } int64_t get_real_chunk_size() const; diff --git a/unittest/storage/test_lob_seq_id.cpp b/unittest/storage/test_lob_seq_id.cpp index 5ffd19718..200b22112 100644 --- a/unittest/storage/test_lob_seq_id.cpp +++ b/unittest/storage/test_lob_seq_id.cpp @@ -233,6 +233,11 @@ TEST_F(TestLobSeqId, test_chunk_size_v1_to_v0) ASSERT_EQ(ctx_v0.first_meta_offset_ & 0xffffff, ctx_v1.first_meta_offset_ ); } +TEST_F(TestLobSeqId, test_lob_outrow_locator_size) +{ + ASSERT_EQ(84, sizeof(ObLobCommon) + sizeof(ObLobData) + sizeof(ObLobDataOutRowCtx) + sizeof(uint64_t)); +} + } // end namespace unittest } // end namespace oceanbase