From 9814fe9ac9d3bb3769315ceaa2e2e2167489a0ad Mon Sep 17 00:00:00 2001 From: LiuYoung00 Date: Tue, 4 Apr 2023 05:11:04 +0000 Subject: [PATCH] [to #48781569]fixed delete record type deserialize core --- src/pl/ob_pl_user_type.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/pl/ob_pl_user_type.cpp b/src/pl/ob_pl_user_type.cpp index 3df37bc1e..b4dccf1df 100644 --- a/src/pl/ob_pl_user_type.cpp +++ b/src/pl/ob_pl_user_type.cpp @@ -1166,15 +1166,18 @@ int ObRecordType::deserialize( ObPLRecord *record = reinterpret_cast(dst); CK (OB_NOT_NULL(record)); int64_t count = OB_INVALID_COUNT; - OX (record->deserialize(src, src_len, src_pos)); - OZ (serialization::decode(src, src_len, src_pos, count)); - OX (record->set_count(count)); + // when record be delete , type will be PL_INVALID_TYPE + if (OB_SUCC(ret) && record->get_type() != PL_INVALID_TYPE) { + OX (record->deserialize(src, src_len, src_pos)); + OZ (serialization::decode(src, src_len, src_pos, count)); + OX (record->set_count(count)); - dst = reinterpret_cast(record->get_element()); - for (int64_t i = 0; OB_SUCC(ret) && i < record_members_.count(); ++i) { - const ObPLDataType *type = get_record_member_type(i); - CK (OB_NOT_NULL(type)); - OZ (type->deserialize(resolve_ctx, allocator, src, src_len, src_pos, dst)); + dst = reinterpret_cast(record->get_element()); + for (int64_t i = 0; OB_SUCC(ret) && i < record_members_.count(); ++i) { + const ObPLDataType *type = get_record_member_type(i); + CK (OB_NOT_NULL(type)); + OZ (type->deserialize(resolve_ctx, allocator, src, src_len, src_pos, dst)); + } } return ret; }